Configura i cluster per l'utilizzo di OpenStack

GKE su Bare Metal supporta il cloud provider Kubernetes OpenStack. Utilizza questa funzionalità per eseguire automaticamente il provisioning delle risorse LBaaS (Load Balancing as a Service) OpenStack. Queste risorse possono sostituire le risorse MetalLB per esporre facilmente i servizi in esecuzione sui cluster Anthos on bare metal ad altri tenant OpenStack o al di fuori della rete OpenStack.

Prima di iniziare

Decidi quali cluster Anthos 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 l'esecuzione di kubelet 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 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 cloud provider su altre piattaforme cloud richiedono un formato speciale per providerID, GKE su Bare Metal genererà 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:

 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 seguente comando 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 file di configurazione:

taints:
- effect: NoSchedule
  key: node.cloudprovider.kubernetes.io/uninitialized
  value: "true"

Questi campi vengono rimossi dopo aver inizializzato il provider cloud in questo cluster.

kubelet verrà eseguito con il valore providerID fornito se ne hai specificato uno per questo nodo.