Configura i cluster per l'uso di OpenStack

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

Prima di iniziare

Decidi i cluster Anthos che devono utilizzare le risorse LBaaS 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.

Modificare il file di configurazione dei cluster

Il provider cloud OpenStack Kubernetes 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 un valore providerID diverso, puoi specificarne uno per ciascun nodo insieme all'indirizzo IP. La configurazione sarà simile alla seguente:

 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 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 providerID fornito se ne hai specificato uno per questo nodo.