Cluster Anthos on bare metal supporta il provider OpenStack Kubernetes Cloud. Utilizza questa funzionalità per eseguire automaticamente il provisioning delle risorse LBaaS (Open Load Load Balancing as a Service). Queste risorse possono sostituire le risorse MetalLB per esporre facilmente i servizi in esecuzione sui tuoi cluster Anthos su Bare Metal ad altri tenant OpenStack o all'esterno della rete OpenStack.
Prima di iniziare
Decidi i cluster Anthos che devono utilizzare le risorse LBaaS di OpenStack.
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 tuoi cluster
Il cloud provider Kubernetes OpenStack richiede che kubelet
venga eseguito su tutti i nodi con il seguente argomento:
cloud-provider: "external"
Per garantire 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 tuoi 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
. Cluster Anthos su Bare Metal genererà un providerID
per ogni
macchina. Il formato è baremetal://MACHINE_ADDRESS
. Se vuoi avere un providerID
diverso, puoi specificarne uno per ciascun 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"
A tutti i nodi sono stati aggiunti anche i seguenti campi ai file di configurazione:
taints:
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
value: "true"
Questi campi vengono rimossi dopo aver inizializzato il cloud provider su questo cluster.
kubelet
verrà eseguito con il providerID
fornito se ne hai specificato uno per questo nodo.