Configura i tuoi cluster per l'utilizzo di OpenStack

Google Distributed Cloud supporta l'uso di OpenStack come piattaforma cloud privato. Questo descrive come configurare un cluster Google Distributed Cloud per funzionare con da un provider cloud esterno. L'esecuzione di cluster Google Distributed Cloud su OpenStack 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'annotazionebaremetal.cluster.gke.io/external-cloud-provider

  • Questa annotazione fa sì che Google Distributed Cloud aggiunga un flag kubelet cloud-provider=external

  • Il kubelet aggiunge quindi node.cloudprovider.kubernetes.io/uninitialized:NoSchedule incompatibilità con nodi cluster

Questa configurazione consente a te e ad OpenStack di possedere i processi di inizializzazione dei nodi. Ad esempio, puoi eseguire il deployment di Google Distributed Cloud su OpenStack per eseguire automaticamente il provisioning delle risorse di bilanciamento del carico come servizio (LBaaS) di OpenStack o per utilizzare altre funzionalità di OpenStack. Le risorse LBaaS possono sostituire le risorse MetalLB per esporre i servizi in esecuzione sui tuoi cluster Google Distributed Cloud ad altri tenant OpenStack o all'esterno della rete OpenStack. Per ulteriori informazioni sulle funzionalità e sui vantaggi di OpenStack, consulta Documentazione di OpenStack.

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

  • L'articolo Eseguire il deployment di un cluster Google Distributed Cloud su OpenStack descrive la procedura di deployment di un cluster ibrido Google Distributed Cloud su macchine virtuali (VM) OpenStack. Il deployment utilizza uno script per per semplificare l'installazione. La guida illustra anche un modo per attivare il bilanciamento del carico come servizio (LBaaS).

  • Configura il provider cloud OpenStack per Kubernetes mostra come installare il provider cloud OpenStack su Cluster Google Distributed Cloud di cui è stato eseguito il deployment su OpenStack. OpenStack Il provider cloud non è tenuto a utilizzare Google Distributed Cloud con OpenStack.

Prima di iniziare

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

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

  • 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 Kubernetes OpenStack richiede che kubelet venga eseguito su tutti nodi con il seguente argomento:

cloud-provider: "external"

Per assicurarti che il cluster GKE soddisfi questo requisito, aggiungi la classe baremetal.cluster.gke.io/external-cloud-provider: "true" annotazione per il tuo di configurazione del cluster nella sezione dei metadati prima di creare in un cluster Kubernetes.

La voce nel file di configurazione dovrebbe avere il seguente aspetto:

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. Google Distributed Cloud genera un providerID con un formato simile a baremetal://MACHINE_ADDRESS per ogni macchina nodo. Se vuoi avere un providerID diverso, puoi specificarne uno per ogni 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 seguente comando per inizializzare nel tuo cluster:

bmctl create cluster -c cluster1

Per saperne di più sulla creazione dei cluster, consulta Panoramica sulla creazione dei cluster.

Configurazione dei nodi

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

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

  • A tutti i nodi viene inoltre aggiunta la seguente incompatibilità ai file di configurazione:

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

    Queste incompatibilità vengono rimosse dopo l'inizializzazione del cloud provider in un cluster Kubernetes.

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

Passaggi successivi