Distribuzione dei cluster del carico di lavoro in più zone di disponibilità (Anteprima tecnica vSphere)

Per abilitare più zone di disponibilità per i cluster del carico di lavoro in vSphere, sono state introdotte due nuove definizioni di risorse personalizzate (CRD) di cluster API Provider vSphere (CAPV).

  • Il CRD VSphereFailureDomain acquisisce le informazioni sull'assegnazione di tag specifici per regione/zona e la definizione della topologia che include le informazioni relative a data center, cluster, host e datastore vSphere.
  • Il CRD VSphereDeploymentZone acquisisce l'associazione di un VSphereFailureDomain con le informazioni sul vincolo di posizionamento per il nodo Kubernetes.
Nota

Lo stato di questa funzionalità è Anteprima tecnica e non è quindi supportata. Vedere Stati delle funzionalità di TKG.

Le configurazioni in questo argomento diffondono i nodi worker e il piano di controllo Kubernetes tra gli oggetti vSphere, ovvero host, cluster di elaborazione e data center.

Diffusione di nodi in più cluster di elaborazione in un data center

L'esempio in questa sezione illustra come ottenere più zone di disponibilità diffondendo i nodi tra più cluster di elaborazione.

  1. Creare le risorse personalizzate per la definizione della regione e delle zone.

    • Tutti gli elementi di spec.region, spec.zone e spec.topology devono corrispondere a quelli configurati in vCenter.
    • Per gli oggetti VSphereDeploymentZone, il valore spec.failuredomain deve corrispondere a uno dei valori metadata.name delle definizioni VSphereFailureDomain
    • Il valore spec.server negli oggetti VSphereDeploymentZone devono corrispondere all'indirizzo (IP o FQDN) del server vCenter immesso per SERVER VCENTER (VCENTER SERVER) nel riquadro dell'interfaccia del programma di installazione Provider IaaS (IaaS Provider) o nell'impostazione VSPHERE_SERVER nel file di configurazione del cluster di gestione.
    • I valori metadata.name devono essere tutti in minuscolo.

    Per diffondere i nodi Kubernetes per un cluster del carico di lavoro in più cluster di elaborazione all'interno di un data center, è necessario creare risorse personalizzate. In questo esempio vengono descritte 3 zone di distribuzione denominate us-west-1a, us-west-1b e us-west-1c, ognuna delle quali è un cluster di elaborazione con i relativi parametri di rete e storage.

    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: us-west-1a
    spec:
     region:
       name: us-west-1
       type: Datacenter
       tagCategory: k8s-region
     zone:
       name: us-west-1a
       type: ComputeCluster
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       datastore: ds-c1
       networks:
       - net1
       - net2
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: us-west-1b
    spec:
     region:
       name: us-west-1
       type: Datacenter
       tagCategory: k8s-region
     zone:
       name: us-west-1b
       type: ComputeCluster
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster2
       datastore: ds-c2
       networks:
       - net3
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: us-west-1c
    spec:
     region:
       name: us-west-1
       type: Datacenter
       tagCategory: k8s-region
     zone:
       name: us-west-1c
       type: ComputeCluster
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster3
       datastore: ds-c3
       networks:
       - net4
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: us-west-1a
    spec:
     server: VSPHERE_SERVER
     failureDomain: us-west-1a
     placementConstraint:
       resourcePool: pool1
       folder: foo
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: us-west-1b
    spec:
     server: VSPHERE_SERVER
     failureDomain: us-west-1b
     placementConstraint:
       resourcePool: pool2
       folder: bar
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: us-west-1c
    spec:
     server: VSPHERE_SERVER
     failureDomain: us-west-1c
     placementConstraint:
       resourcePool: pool3
       folder: baz
    

    VSPHERE_SERVER è l'indirizzo IP o l'FQDN di vCenter Server.

    Se cluster di elaborazione diversi hanno pool di risorse con nome identico, impostare spec.placementConstraint.resourcePool per gli oggetti VSphereDeploymentZone su un percorso di risorsa completo, non solo sul nome.

    Nota

    Per gli oggetti VsphereDeploymentZone, spec.placementConstraint è facoltativo.

  2. Contrassegnare gli oggetti vSphere.

    Dalla prima CR VSphereFailureDomain, denominata us-west-1a, utilizzare govc per applicare i tag seguenti al data center dc0 e al cluster di elaborazione cluster1.

    govc tags.attach -c k8s-region us-west-1 /dc0
    
    govc tags.attach -c k8s-zone us-west-1a /dc0/host/cluster1
    

    Analogamente, eseguire le seguenti operazioni di assegnazione dei tag per gli altri cluster di elaborazione.

    govc tags.attach -c k8s-zone us-west-1b /dc0/host/cluster2
    
    govc tags.attach -c k8s-zone us-west-1c /dc0/host/cluster3
    

    È possibile ignorare questo passaggio se spec.region.autoConfigure e spec.zone.autoConfigure sono impostati su true durante la creazione delle CR VSphereFailureDomain.

Per i passaggi successivi di distribuzione del cluster, vedere Diffusione di un cluster del carico di lavoro con nodi distribuiti nelle zone di disponibilità.

Diffusione di nodi su più host in un singolo cluster di elaborazione

L'esempio in questa sezione diffonde i nodi del cluster del carico di lavoro in 3 diversi gruppi di host in un singolo cluster.

  1. In vCenter Server, creare gruppi di host, ad esempio rack1, e gruppi di macchine virtuali, ad esempio rack1-vm-group, per ogni dominio di errore.

    • Creare gruppi di host e macchine virtuali da Configura (Configure) > Gruppi macchine virtuali/host (VM/Host Groups) > Aggiungi… (Add…)
    • Il numero di gruppi di host deve corrispondere al numero di zone di disponibilità che si intende utilizzare.
    • Per creare un gruppo di macchine virtuali, potrebbe essere necessario creare una macchina virtuale fittizia da aggiungere come membro del gruppo.
    • In alternativa, è possibile utilizzare govc per creare gruppi di host e macchine virtuali eseguendo comandi simili al seguente, senza dover creare una macchina virtuale fittizia:

      govc cluster.group.create -cluster=RegionA01-MGMT -name=rack1 -host esx-01a.corp.tanzu esx-02a.corp.tanzu
      
      govc cluster.group.create -cluster=RegionA01-MGMT -name=rack1-vm-group -vm
      
  2. Aggiungere regole di affinità tra i gruppi di macchine virtuali creati e i gruppi di host in modo che le macchine virtuali nel gruppo di macchine virtuali debbano essere eseguite negli host del gruppo di host creato.

    • Impostare Tipo (Type) su Da macchine virtuali a host (Virtual Machines to Hosts) e includere la regola Deve essere eseguita negli host del gruppo (Must run on hosts in group).
  3. Creare le risorse personalizzate VSphereFailureDomain e VSphereDeploymentZone in un file vsphere-zones.yaml.

    • Tutti gli elementi di spec.region, spec.zone e spec.topology devono corrispondere a quelli configurati in vCenter.
    • Per gli oggetti VSphereDeploymentZone, il valore spec.failuredomain deve corrispondere a uno dei valori metadata.name delle definizioni VSphereFailureDomain
    • Il valore spec.server negli oggetti VSphereDeploymentZone devono corrispondere all'indirizzo (IP o FQDN) del server vCenter immesso per SERVER VCENTER (VCENTER SERVER) nel riquadro dell'interfaccia del programma di installazione Provider IaaS (IaaS Provider) o nell'impostazione VSPHERE_SERVER nel file di configurazione del cluster di gestione.
    • I valori metadata.name devono essere tutti in minuscolo.

    Ad esempio, i seguenti file vsphere-zones.yaml definiscono tre zone all'interno di una regione room1, in cui ogni zona è un rack di host all'interno dello stesso cluster.

    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack1
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack1
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       hosts:
         vmGroupName: rack1-vm-group
         hostGroupName: rack1
       datastore: ds-r1
       networks:
       - net1
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack2
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack2
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       hosts:
         vmGroupName: rack2-vm-group
         hostGroupName: rack2
       datastore: ds-r2
       networks:
       - net2
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereFailureDomain
    metadata:
     name: rack3
    spec:
     region:
       name: room1
       type: ComputeCluster
       tagCategory: k8s-region
     zone:
       name: rack3
       type: HostGroup
       tagCategory: k8s-zone
     topology:
       datacenter: dc0
       computeCluster: cluster1
       hosts:
         vmGroupName: rack3-vm-group
         hostGroupName: rack3
       datastore: ds-c3
       networks:
       - net3
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: rack1
    spec:
     server: VSPHERE_SERVER
     failureDomain: rack1
     placementConstraint:
       resourcePool: pool1
       folder: foo
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: rack2
    spec:
     server: VSPHERE_SERVER
     failureDomain: rack2
     placementConstraint:
       resourcePool: pool2
       folder: bar
    ---
    apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
    kind: VSphereDeploymentZone
    metadata:
     name: rack3
    spec:
     server: VSPHERE_SERVER
     failureDomain: rack3
     placementConstraint:
       resourcePool: pool3
       folder: baz
    

    VSPHERE_SERVER è l'indirizzo IP o l'FQDN di vCenter Server.

  4. Applicare il file delle CR per creare gli oggetti VSphereFailureDomain e VSphereDeploymentZone:

    kubectl apply -f vsphere-zones.yaml
    
  5. Utilizzare govc per creare categorie di tag e tag per regioni e zone, da applicare ai cluster e agli host di elaborazione elencati nella CR VSphereFailureDomain.

    • Creare una categoria di tag di regione e tag per i cluster di elaborazione, ad esempio:
    govc tags.category.create -t ClusterComputeResource k8s-region
    
    govc tags.create -c k8s-region room1
    

    Ripetere per tutte le regioni:

    govc tags.create -c k8s-region REGION
    
    • Creare una categoria di tag di zona e i tag per gli host, ad esempio:
    govc tags.category.create -t HostSystem k8s-zone
    
    govc tags.create -c k8s-zone rack1
    

    Ripetere per tutte le zone:

    govc tags.create -c k8s-zone ZONE
    

    In alternativa, è possibile eseguire le operazioni relative ai tag in questo e nei passaggi seguenti dal riquadro Tag e attributi personalizzati (Tags & Custom Attributes) in vCenter.

  6. Collegare i tag di regione a tutti i cluster di elaborazione elencati nelle definizioni delle CR, ad esempio:

    govc tags.attach -c k8s-region room1 /dc1/host/room1-mgmt
    

    Utilizzare il percorso completo per ogni cluster di elaborazione.

  7. Collegare i tag di zona a tutti gli oggetti host elencati nelle definizioni delle CR, ad esempio:

    govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01a.corp.tanzu
    

    Utilizzare il percorso completo per ogni host.

Per i passaggi successivi di distribuzione del cluster, vedere Diffusione di un cluster del carico di lavoro con nodi distribuiti nelle zone di disponibilità.

Diffusione di un cluster del carico di lavoro con nodi distribuiti nelle zone di disponibilità

Dopo aver eseguito i passaggi in Distribuzione di nodi in più cluster di elaborazione in un data center o Diffusione di nodi su più host in un singolo cluster di elaborazione, è possibile distribuire un cluster del carico di lavoro con i relativi nodi diffusi in più zone di disponibilità.

  1. Creare il file di configurazione del cluster per il cluster del carico di lavoro che si sta distribuendo.

    • Impostare VSPHERE_REGION e VSPHERE_ZONE sulle categorie di tag di regione e zona, k8s-region e k8s-zone nell'esempio precedente.
    • Impostare VSPHERE_AZ_0, VSPHERE_AZ_2 e VSPHERE_AZ_1 con i nomi degli oggetti VsphereDeploymentZone in cui devono essere distribuite le macchine.
    • La VsphereDeploymentZone associata a VSPHERE_AZ_0 è il failureDomain in cui viene distribuita la distribuzione della macchina che termina con md-0, analogamente VSPHERE_AZ_1 è il failureDomain in cui viene distribuita la distribuzione della macchina che termina con md-1 e VSPHERE_AZ_2 è il failureDomain in cui viene distribuita la distribuzione della macchina che termina con md-2
    • Se una qualsiasi delle configurazioni ZD non è definita, la distribuzione della macchina viene distribuita senza failureDomain
    • WORKER_MACHINE_COUNT imposta il numero totale di worker per il cluster. Il numero totale di worker viene distribuito in modalità round robin per il numero di ZD specificato

    Per l'elenco completo delle opzioni che è necessario specificare quando si distribuiscono cluster del carico di lavoro in vSphere, vedere Informazioni di riferimento sulle variabili del file di configurazione.

  2. Eseguire tanzu cluster create per creare il cluster del carico di lavoro. Per ulteriori informazioni, vedere Creazione di cluster del carico di lavoro.

    • Durante il processo di creazione del cluster, è possibile visualizzare le macchine virtuali e le altre risorse in vCenter.
    • Se è stata creata una macchina virtuale fittizia in vCenter per creare un gruppo di macchine virtuali, è possibile eliminare o rimuovere la macchina virtuale dai gruppi di macchine virtuali dopo che il cluster è in esecuzione.
check-circle-line exclamation-circle-line close-line
Scroll to top icon