Configura i tuoi cluster per l'utilizzo di OpenStack

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.