Google Distributed Cloud admite el uso de OpenStack como una plataforma de nube privada. En esta guía, se describe cómo configurar un clúster de Google Distributed Cloud para que funcione con un proveedor de servicios en la nube externo. La ejecución de clústeres de Google Distributed Cloud 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 consta de lo siguiente:
Cuando creas el clúster, debes agregar una anotación
baremetal.cluster.gke.io/external-cloud-provider
Esta anotación hace que Google Distributed Cloud 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 init del nodo. Por ejemplo, puedes implementar Google Distributed Cloud en OpenStack para aprovisionar de forma automática los recursos de OpenStack Load Balancing como servicio (LBaaS) o para hacer uso de 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 Google Distributed Cloud 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.
Ejemplos relacionados
En este documento, solo se explica cómo configurar tu clúster para usarlo con OpenStack. En las siguientes guías, se muestra un ejemplo de implementación:
En Implementa un clúster de Google Distributed Cloud en OpenStack, se explica cómo realizar una implementación de muestra de un clúster híbrido de Google Distributed Cloud en máquinas virtuales (VMs) de OpenStack. La implementación usa una secuencia de comandos para simplificar la instalación. 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 Google Distributed Cloud que se implementó en OpenStack. No se requiere el proveedor de servicios en la nube de OpenStack para usar Google Distributed Cloud con OpenStack.
Antes de comenzar
Decide qué clústeres de GKE necesitan usar los recursos de OpenStack LBaaS.
Una vez que creaste un clúster configurado para usar los recursos de OpenStack LBaaS, no puedes 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 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 el 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 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 en la 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 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 cómo crear 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"
.Todos los nodos también 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 elproviderID
que especificaste en el archivo de configuración del clúster.