GKE en Bare Metal es compatible con el proveedor de Kubernetes Cloud de OpenStack. Usa esta función para aprovisionar de forma automática los recursos de balanceo de cargas como servicio (LBaaS) de OpenStack. Esos recursos pueden reemplazar los recursos de MetalLB para exponer con facilidad los servicios que se ejecutan en tus clústeres de Anthos en equipos físicos a otros usuarios de OpenStack o fuera de la red de OpenStack.
Antes de comenzar
Decide cuáles son los clústeres de Anthos que necesitan usar los recursos de LBaaS de OpenStack.
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 de tus clústeres
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 los clústeres de Anthos cumplan con este requisito fácilmente, agrega la anotación baremetal.cluster.gke.io/external-cloud-provider: "true"
al archivo de configuración de los clústeres en la sección de metadatos antes de inicializarlos.
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
; GKE en Bare Metal generará un providerID
para cada máquina. El formato es como baremetal://MACHINE_ADDRESS
. Si quieres tener un providerID
diferente, puedes especificar uno para cada nodo junto con la dirección IP. La configuración se verá de la siguiente manera:
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-admin1
spec:
clusterName: admin1
nodes:
- address: 172.18.0.2
+ providerID: some-prefix3://unique-string3
Después de editar el archivo de configuración, usa el siguiente comando para inicializar tu clúster:
bmctl create cluster -c cluster1
Ahora, todos los nodos de cluster1
se ejecutan con el argumento obligatorio: cloud-provider:
"external"
Todos los nodos también tienen los siguientes campos agregados a sus archivos de configuración:
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
Estos campos se quitan después de inicializar el proveedor de servicios en la nube en este clúster.
kubelet
se ejecutará con el providerID
proporcionado si especificaste uno para este nodo.