Configura i cluster per l'uso di OpenStack

GKE su Bare Metal supporta l'utilizzo di OpenStack come piattaforma cloud privato. Questa guida descrive come configurare un cluster GKE su Bare Metal per funzionare con un cloud provider esterno. L'esecuzione di GKE su cluster Bare Metal su OpenStack ti consente di utilizzare i seguenti servizi OpenStack:

  • Infrastructure as a Service (IaaS)

  • Bilanciamento del carico come servizio (LBaaS)

  • Archiviazione

La configurazione di un cluster per il funzionamento con OpenStack prevede quanto segue:

  • Quando crei il cluster, aggiungi un'annotazione baremetal.cluster.gke.io/external-cloud-provider

  • Con questa annotazione, GKE su Bare Metal aggiunge un flag kubelet cloud-provider=external

  • kubelet aggiunge poi node.cloudprovider.kubernetes.io/uninitialized:NoSchedule incompatibilità ai nodi del cluster

Questa configurazione consente a te e a OpenStack di possedere i processi di inizializzazione dei nodi. Ad esempio, puoi eseguire il deployment di GKE su Bare Metal su OpenStack per eseguire automaticamente il provisioning delle risorse OpenStack Load Balancing as a Service (LBaaS) o per utilizzare altre funzionalità OpenStack. Le risorse LBaaS possono sostituire le risorse MetalLB per esporre i servizi in esecuzione sui tuoi cluster GKE su cluster Bare Metal ad altri tenant OpenStack o all'esterno della rete OpenStack. Per ulteriori informazioni sulle funzionalità e sui vantaggi di OpenStack, consulta la documentazione di OpenStack.

Questo documento illustra solo come configurare il cluster per l'utilizzo con OpenStack. Le guide seguenti illustrano un deployment di esempio:

  • Esegui il deployment di un cluster GKE su Bare Metal su OpenStack ti guiderà attraverso il deployment di esempio di un cluster ibrido GKE su Bare Metal su macchine virtuali (VM) OpenStack. Il deployment usa uno script per semplificare l'installazione. La guida illustra anche un modo per abilitare il bilanciamento del carico come servizio (LBaaS).

  • Configura il provider cloud OpenStack per Kubernetes mostra come installare il provider cloud OpenStack su un cluster GKE su Bare Metal di cui è stato eseguito il deployment su OpenStack. Non è necessario il provider cloud OpenStack per utilizzare GKE su Bare Metal con OpenStack.

Prima di iniziare

  • Decidi quali cluster GKE devono utilizzare le risorse LBaaS OpenStack.

    Dopo aver creato un cluster configurato per l'utilizzo delle risorse OpenStack LBaaS, non puoi modificare la configurazione per passare alle risorse MetalLB. Assicurati di inizializzare i cluster con la configurazione del provider cloud corretta.

  • 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 del 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 il tuo cluster GKE soddisfi questo requisito, aggiungi l'annotazione baremetal.cluster.gke.io/external-cloud-provider: "true" al file di configurazione del cluster nella sezione dei metadati prima di creare il cluster.

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 genera un providerID con un formato simile a baremetal://MACHINE_ADDRESS per ogni macchina nodo. Se vuoi avere un valore providerID diverso, puoi specificarne uno per ciascun nodo insieme all'indirizzo IP.

Il seguente file di configurazione del cluster di esempio mostra come specifichi providerID per i nodi del cluster:

 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-cluster1
 spec:
   clusterName: cluster1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

Crea il cluster

Dopo aver modificato il file di configurazione, utilizza il comando seguente per inizializzare il cluster:

bmctl create cluster -c cluster1

Per saperne di più sulla creazione dei cluster, vedi Panoramica della creazione del cluster.

Configurazione dei nodi

Quando crei un cluster configurato per OpenStack, i nodi del cluster presentano le seguenti modifiche:

  • Tutti i nodi in cluster1 vengono eseguiti con l'argomento richiesto: cloud-provider: "external".

  • Tutti i nodi presentano anche la seguente incompatibilità ai file di configurazione:

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

    Queste incompatibilità vengono rimosse dopo aver inizializzato il cloud provider in questo cluster.

  • kubelet viene eseguito con il valore providerID specificato nel file di configurazione del cluster.

Passaggi successivi