I cluster Anthos su Bare Metal supportano il provider Cloud Kubernetes OpenStack. Utilizza questa funzionalità per eseguire automaticamente il provisioning delle risorse OpenStack Load Balancing come LBaaS. Queste risorse possono sostituire le risorse MetalLB per esporre facilmente i servizi in esecuzione su Anthos su cluster Bare Metal ad altri tenant OpenStack o all'esterno della rete OpenStack.
Prima di iniziare
Decidi i cluster Anthos che devono utilizzare le risorse OpenStack LBaaS.
Assicurati di avere accesso alle macchine che stai tentando di configurare.
Scopri di più sull'esecuzione di cloud-controller-manager nella documentazione di Kubernetes.
Modifica il file di configurazione dei cluster
Il provider cloud Kubernetes OpenStack richiede che kubelet
venga eseguito su tutti i nodi con il seguente argomento:
cloud-provider: "external"
Per assicurarti che i tuoi cluster Anthos soddisfino facilmente questo requisito, aggiungi l'annotazione baremetal.cluster.gke.io/external-cloud-provider: "true"
al file di configurazione dei cluster nella sezione dei metadati prima di inizializzarli.
La voce nel file di configurazione dovrebbe essere simile all'esempio seguente:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: cluster1
namespace: cluster-cluster1
annotations:
baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
..
Alcuni provider cloud su altre piattaforme cloud richiedono un formato speciale per providerID
, i cluster Anthos su Bare Metal genereranno un providerID
per ogni macchina. Il formato è simile a baremetal://MACHINE_ADDRESS
. Se vuoi avere un providerID
diverso, puoi specificarne uno per ogni nodo insieme all'indirizzo IP. La configurazione sarà simile a questa:
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
Dopo aver modificato il file di configurazione, utilizza il comando seguente per inizializzare il cluster:
bmctl create cluster -c cluster1
Ora, tutti i nodi in cluster1
vengono eseguiti con l'argomento richiesto: cloud-provider:
"external"
Tutti i nodi hanno anche i seguenti campi aggiunti ai propri file di configurazione:
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
Questi campi vengono rimossi dopo l'inizializzazione del tuo provider cloud in questo cluster.
kubelet
verrà eseguito con il providerID
fornito se ne hai specificato uno per questo nodo.