Configura tus clústeres para usar OpenStack

GKE en Bare Metal admite el uso de OpenStack como una plataforma de nube privada. En esta guía, se describe cómo configurar un clúster de GKE en Bare Metal para trabajar con un proveedor de servicios en la nube externo. La ejecución de GKE en clústeres de Bare Metal en OpenStack te permite usar los siguientes servicios de OpenStack:

  • Infraestructura como servicio (IaaS)

  • Balanceo de cargas como servicio (LBaaS)

  • Almacenamiento

La configuración de un clúster para que funcione con OpenStack consiste en lo siguiente:

  • Cuando creas el clúster, agregas una anotación baremetal.cluster.gke.io/external-cloud-provider

  • Esta anotación hace que GKE en Bare Metal agregue una marca de kubelet cloud-provider=external.

  • Luego, kubelet agrega taints node.cloudprovider.kubernetes.io/uninitialized:NoSchedule a los nodos del clúster.

Esta configuración permite que tú y OpenStack sean propietarios de los procesos de inicio del nodo. Por ejemplo, puedes implementar GKE en Bare Metal en OpenStack para aprovisionar automáticamente los recursos de balanceo de cargas de OpenStack como servicio (LBaaS) o usar otras funciones de OpenStack. Los recursos de LBaaS pueden reemplazar los recursos de MetalLB para exponer los servicios que se ejecutan en tus clústeres de GKE en Bare Metal a otros usuarios de OpenStack o fuera de la red de OpenStack. Para obtener más información sobre las características 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 muestra una implementación de ejemplo:

  • Implementa un clúster de GKE en Bare Metal en OpenStack te guía a través de una implementación de muestra de un clúster híbrido de GKE en Bare Metal en máquinas virtuales (VMs) de OpenStack. La implementación usa una secuencia de comandos para simplificar la instalación. En esta guía, también se muestra una forma de habilitar el balanceo de cargas como 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 de GKE on Bare Metal que se implementó en OpenStack. El proveedor de servicios en la nube de OpenStack no es necesario para usar GKE en Bare Metal con OpenStack.

Antes de comenzar

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

    Una vez que hayas creado un clúster configurado para usar los recursos de LBaaS de OpenStack, no podrás cambiar la configuración para cambiar a los recursos de MetalLB. Asegúrate de inicializar los 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 sobre cómo 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 de GKE cumpla con este requisito, agrega la anotación baremetal.cluster.gke.io/external-cloud-provider: "true" al archivo de configuración de tu clúster en la sección de metadatos antes de crearlo.

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 que se encuentran en otras plataformas de nube requieren un formato especial para providerID. GKE en Bare Metal genera un providerID con un formato como baremetal://MACHINE_ADDRESS para cada máquina de nodos. 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 muestra 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 requerido: cloud-provider: "external".

  • Además, todos los nodos tienen el siguiente taint agregado 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 tu proveedor de servicios en la nube en este clúster.

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

¿Qué sigue?