Configura tus clústeres para usar OpenStack

Ejecutar el software de Distributed Cloud solo para equipos físicos en OpenStack te permite integrar tus clústeres con la infraestructura como servicio (IaaS), el balanceo de cargas como servicio (LBaaS) y el almacenamiento de OpenStack. Si configuras tus clústeres para un proveedor de servicios en la nube externo, se delega el proceso de inicialización de nodos a OpenStack.

Puedes aprovisionar automáticamente recursos de LBaaS de OpenStack en lugar de MetalLB para exponer los Services que se ejecutan en tus clústeres a otros usuarios de OpenStack o fuera de la red de OpenStack. Para obtener más información sobre las funciones y los beneficios de OpenStack, consulta la documentación de OpenStack.

En este documento, solo se explica cómo configurar tu clúster para usarlo con OpenStack. En las siguientes guías, se explica un ejemplo de implementación:

  • En Implementa un clúster en OpenStack, se te guiará a través de una implementación de ejemplo de un clúster híbrido en máquinas virtuales (VMs) de OpenStack. La implementación usa una secuencia de comandos para simplificar la instalación. En la guía, también se muestra una forma de habilitar el balanceo de cargas como un servicio (LBaaS).

  • En Configura el proveedor de servicios en la nube de OpenStack para Kubernetes, se muestra cómo instalar el proveedor de servicios en la nube de OpenStack en un clúster que se implementó en OpenStack. No es necesario que el proveedor de servicios en la nube de OpenStack use el software de Google Distributed Cloud con OpenStack.

Antes de comenzar

  • Decide qué clústeres deben usar recursos de LBaaS de OpenStack.

    Una vez que creas un clúster configurado para usar recursos de LBaaS de OpenStack, no puedes cambiar la configuración para cambiar a recursos de MetalLB. Asegúrate de inicializar tus clústeres con la configuración correcta del proveedor de servicios en la nube.

  • Asegúrate de tener acceso a las máquinas que intentas configurar.

Obtén más información para ejecutar cloud-controller-manager en la documentación de Kubernetes.

Cambia el archivo de configuración del clúster

El proveedor de servicios en la nube de OpenStack Kubernetes requiere que kubelet se ejecute en todos los nodos con el siguiente argumento:

cloud-provider: "external"

Para asegurarte de que tu clúster cumpla con este requisito, agrega la anotación baremetal.cluster.gke.io/external-cloud-provider: "true" al archivo de configuración del clúster en la sección de metadatos antes de crear el clúster.

La entrada en el archivo de configuración debería verse como el ejemplo siguiente:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
  ...

Algunos proveedores de servicios en la nube en otras plataformas de nube requieren un formato especial para providerID. Google Distributed Cloud genera un providerID con un formato como baremetal://MACHINE_ADDRESS para cada máquina de nodo. Si deseas tener un providerID diferente, puedes especificar uno para cada nodo junto con la dirección IP.

En el siguiente archivo de configuración de clúster de muestra, se indica cómo especificar providerID para los nodos del clúster:

 apiVersion: baremetal.cluster.gke.io/v1
 kind: Cluster
 metadata:
   name: cluster1
   namespace: cluster-cluster1
 spec:
   clusterNetwork:
     pods:
       cidrBlocks:
       - 192.168.0.0/16
     services:
       cidrBlocks:
       - 10.96.0.0/20
   controlPlane:
     nodePoolSpec:
       nodes:
       - address: 10.200.0.1
+        providerID: some-prefix://unique-string
       - address: 10.200.0.2
+        providerID: some-prefix2://unique-string2
  ...

---
 apiVersion: baremetal.cluster.gke.io/v1
 kind: NodePool
 metadata:
   name: nodepool1
   namespace: cluster-cluster1
 spec:
   clusterName: cluster1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

Cree su clúster

Después de editar el archivo de configuración, usa el siguiente comando para inicializar tu clúster:

bmctl create cluster -c cluster1

Para obtener más información sobre la creación de clústeres, consulta Descripción general de la creación de clústeres.

Configuración de nodos

Cuando creas un clúster configurado para OpenStack, los nodos del clúster tienen los siguientes cambios:

  • Todos los nodos de cluster1 se ejecutan con el argumento obligatorio: cloud-provider: "external".

  • Todos los nodos también tienen la siguiente taint agregada a sus archivos de configuración:

    taints:
    - effect: NoSchedule
      key: node.cloudprovider.kubernetes.io/uninitialized
      value: "true"
    

    Estos taints se quitan después de inicializar el proveedor de servicios en la nube en este clúster.

  • kubelet se ejecuta con la providerID que especificaste en el archivo de configuración del clúster.

¿Qué sigue?