Configura i cluster per utilizzare OpenStack

Google Distributed Cloud solo software supporta l'utilizzo di OpenStack come piattaforma di cloud privato. Questa guida descrive come configurare un cluster per l'utilizzo con un provider di servizi cloud esterno. L'esecuzione di un'installazione di cluster solo software 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 l'utilizzo con OpenStack prevede quanto segue:

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

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

  • Kubelet aggiunge quindi taint node.cloudprovider.kubernetes.io/uninitialized:NoSchedule ai nodi del cluster

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

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

  • Esegui il deployment di un cluster su OpenStack ti guida attraverso un deployment di esempio di un cluster ibrido su macchine virtuali (VM) OpenStack. Il deployment utilizza uno script per semplificare l'installazione. La guida mostra 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 di cui è stato eseguito il deployment su OpenStack. Il provider cloud OpenStack non è necessario per utilizzare il software Google Distributed Cloud con OpenStack.

Prima di iniziare

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

    Una volta creato un cluster configurato per utilizzare le risorse LBaaS di OpenStack, non puoi modificare la configurazione per passare alle risorse MetalLB. Assicurati di inizializzare i cluster con la configurazione corretta del provider 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 del file di configurazione del cluster

Il provider cloud OpenStack Kubernetes richiede che kubelet venga eseguito su tutti i nodi con il seguente argomento:

cloud-provider: "external"

Per assicurarti che il cluster 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. Google Distributed Cloud genera un providerID con un formato simile a baremetal://MACHINE_ADDRESS per ogni macchina nodo. Se vuoi un providerID diverso, puoi specificarne uno per ogni nodo insieme all'indirizzo IP.

Il seguente file di configurazione del cluster di esempio mostra come specificare 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 il cluster:

bmctl create cluster -c cluster1

Per saperne di più sulla creazione di cluster, consulta la Panoramica della creazione di 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".

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

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

    Questi taint vengono rimossi dopo l'inizializzazione del provider di servizi cloud su questo cluster.

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

Passaggi successivi