L'esecuzione del software Distributed Cloud solo per bare metal su OpenStack ti consente di integrare i tuoi cluster con l'Infrastructure as a Service (IaaS), il bilanciamento del carico as a Service (LBaaS) e lo Storage di OpenStack. La configurazione dei cluster per un provider cloud esterno delega il processo di inizializzazione dei nodi a OpenStack.
Puoi eseguire automaticamente il provisioning delle risorse LBaaS di OpenStack anziché di MetalLB per esporre i servizi in esecuzione sui tuoi cluster 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.
Esempi correlati
Questo documento illustra solo come configurare il cluster per l'utilizzo con OpenStack. Le seguenti guide illustrano un deployment di esempio:
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 attivare il bilanciamento del carico as a Service (LBaaS).
Configura il cloud provider OpenStack per Kubernetes mostra come installare il cloud provider 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 l'utilizzo delle risorse LBaaS di OpenStack, non puoi modificare la configurazione per passare alle risorse MetalLB. Assicurati di inizializzare i cluster con la configurazione corretta del cloud provider.
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 che kubelet venga eseguito su tutti i nodi con il seguente argomento:
cloud-provider: "external"
Per assicurarti che il tuo 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 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 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 tuo 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 di cluster, consulta 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
cluster1vengono eseguiti con l'argomento richiesto:cloud-provider: "external".Inoltre, a tutti i nodi viene 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 su questo cluster.
kubeletviene eseguito con ilproviderIDspecificato nel file di configurazione del cluster.