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).
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.VSphereDeploymentZone
acquisisce l'associazione di un VSphereFailureDomain
con le informazioni sul vincolo di posizionamento per il nodo Kubernetes.NotaLo 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.
L'esempio in questa sezione illustra come ottenere più zone di disponibilità diffondendo i nodi tra più cluster di elaborazione.
Creare le risorse personalizzate per la definizione della regione e delle zone.
spec.region
, spec.zone
e spec.topology
devono corrispondere a quelli configurati in vCenter.VSphereDeploymentZone
, il valore spec.failuredomain
deve corrispondere a uno dei valori metadata.name
delle definizioni VSphereFailureDomain
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.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.
NotaPer gli oggetti VsphereDeploymentZone,
spec.placementConstraint
è facoltativo.
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à.
L'esempio in questa sezione diffonde i nodi del cluster del carico di lavoro in 3 diversi gruppi di host in un singolo cluster.
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.
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
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.
Creare le risorse personalizzate VSphereFailureDomain
e VSphereDeploymentZone
in un file vsphere-zones.yaml
.
spec.region
, spec.zone
e spec.topology
devono corrispondere a quelli configurati in vCenter.VSphereDeploymentZone
, il valore spec.failuredomain
deve corrispondere a uno dei valori metadata.name
delle definizioni VSphereFailureDomain
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.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.
Applicare il file delle CR per creare gli oggetti VSphereFailureDomain
e VSphereDeploymentZone
:
kubectl apply -f vsphere-zones.yaml
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
.
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
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.
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.
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à.
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à.
Creare il file di configurazione del cluster per il cluster del carico di lavoro che si sta distribuendo.
VSPHERE_REGION
e VSPHERE_ZONE
sulle categorie di tag di regione e zona, k8s-region
e k8s-zone
nell'esempio precedente.VSPHERE_AZ_0
, VSPHERE_AZ_2
e VSPHERE_AZ_1
con i nomi degli oggetti VsphereDeploymentZone in cui devono essere distribuite le macchine.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
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 specificatoPer 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.
Eseguire tanzu cluster create
per creare il cluster del carico di lavoro. Per ulteriori informazioni, vedere Creazione di cluster del carico di lavoro.