Pour activer plusieurs zones de disponibilité pour les clusters de charge de travail sur vSphere, deux nouvelles définitions de ressources personnalisées (CRD) ont été introduites dans le fournisseur d'API de cluster vSphere (CAPV).
VSphereFailureDomain
capture les informations de balisage spécifiques à la région/zone, ainsi que la définition de topologie qui inclut les informations de centre de données, de cluster, d'hôte et de banque de données vSphere.VSphereDeploymentZone
capture l'association d'un VSphereFailureDomain
avec les informations de contrainte de placement pour le nœud Kubernetes.RemarqueCette fonctionnalité est dans l'état Version d'évaluation technique non pris en charge. Reportez-vous à la section États des fonctionnalités TKG.
Les configurations de cette rubrique répartissent le plan de contrôle Kubernetes et les nœuds worker entre les objets vSphere, à savoir les hôtes, les clusters de calcul et les centres de données.
L'exemple dans cette section montre comment obtenir plusieurs zones de disponibilité en répartissant les nœuds sur plusieurs clusters de calcul.
Créez les ressources personnalisées pour définir la région et les zones.
spec.region
, spec.zone
et spec.topology
doivent correspondre à ce que vous avez configuré dans vCenter.VSphereDeploymentZone
, la valeur spec.failuredomain
doit correspondre à l'une des valeurs metadata.name
des définitions VSphereFailureDomain
spec.server
dans les objets VSphereDeploymentZone
doit correspondre à l'adresse de serveur vCenter (adresse IP ou nom de domaine complet) entrée pour VCENTER SERVER dans le volet Fournisseur IaaS (IaaS Provider) de l'interface du programme d'installation ou au paramètre VSPHERE_SERVER
du fichier de configuration du cluster de gestion.metadata.name
doivent toutes être en minuscules.Pour répartir les nœuds Kubernetes d’un cluster de charge de travail sur plusieurs clusters de calcul au sein d’un centre de données, vous devez créer des ressources personnalisées. Cet exemple décrit 3 zones de déploiement nommées us-west-1a
, us-west-1b
et us-west-1c
, chacune étant un cluster de calcul avec ses paramètres réseau et de stockage.
---
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
Où VSPHERE_SERVER
est l'adresse IP ou le nom de domaine complet de votre instance de vCenter Server.
Si différents clusters de calcul disposent de pools de ressources avec des noms identiques, définissez la valeur spec.placementConstraint.resourcePool
des objets VSphereDeploymentZone
sur un chemin de ressource complet, pas seulement sur le nom.
RemarquePour les objets VsphereDeploymentZone, la valeur
spec.placementConstraint
est facultative.
Balisez les objets vSphere.
À partir de la première ressource personnalisée VSphereFailureDomain
, nommée us-west-1a
, utilisez govc
pour appliquer les balises suivantes au centre de données dc0
et au cluster de calcul cluster1
.
govc tags.attach -c k8s-region us-west-1 /dc0
govc tags.attach -c k8s-zone us-west-1a /dc0/host/cluster1
De même, effectuez les opérations de balisage suivantes pour les autres clusters de calcul.
govc tags.attach -c k8s-zone us-west-1b /dc0/host/cluster2
govc tags.attach -c k8s-zone us-west-1c /dc0/host/cluster3
Vous pouvez ignorer cette étape si les valeurs spec.region.autoConfigure
et spec.zone.autoConfigure
sont définies sur true
lors de la création des ressources personnalisées VSphereFailureDomain
.
Pour les étapes suivantes de déploiement du cluster, reportez-vous à la section Déployer un cluster de charge de travail avec des nœuds répartis entre les zones de disponibilité.
L’exemple de cette section répartit les nœuds de cluster de charge de travail sur 3 groupes d’hôtes différents dans un cluster unique.
Dans vCenter Server, créez des groupes d'hôtes (par exemple, rack1
) et des groupes de machines virtuelles (par exemple, rack1-vm-group
) pour chaque domaine de pannes.
Vous pouvez aussi utiliser govc
pour créer des groupes d'hôtes et de machines virtuelles en exécutant des commandes semblables aux commandes suivantes, afin de ne pas avoir à créer de machine virtuelle factice :
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
Ajoutez des règles d'affinité entre les groupes de machines virtuelles et les groupes d'hôtes créés afin que les machines virtuelles du groupe de machines virtuelles s'exécutent sur les hôtes du groupe d'hôtes créé.
Créez les ressources personnalisées VSphereFailureDomain
et VSphereDeploymentZone
dans un fichier vsphere-zones.yaml
.
spec.region
, spec.zone
et spec.topology
doivent correspondre à ce que vous avez configuré dans vCenter.VSphereDeploymentZone
, la valeur spec.failuredomain
doit correspondre à l'une des valeurs metadata.name
des définitions VSphereFailureDomain
spec.server
dans les objets VSphereDeploymentZone
doit correspondre à l'adresse de serveur vCenter (adresse IP ou nom de domaine complet) entrée pour VCENTER SERVER dans le volet Fournisseur IaaS (IaaS Provider) de l'interface du programme d'installation ou au paramètre VSPHERE_SERVER
du fichier de configuration du cluster de gestion.metadata.name
doivent toutes être en minuscules.Par exemple, les fichiers vsphere-zones.yaml
suivants définissent trois zones dans une région room1
, où chaque zone est un rack d'hôtes dans le même 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
Où VSPHERE_SERVER
est l'adresse IP ou le nom de domaine complet de votre instance de vCenter Server.
Appliquez le fichier des ressources personnalisées pour créer les objets VSphereFailureDomain
et VSphereDeploymentZone
:
kubectl apply -f vsphere-zones.yaml
Utilisez govc
pour créer des catégories de balises et des balises pour les régions et les zones, à appliquer aux clusters de calcul et aux hôtes répertoriés dans vos ressources personnalisées VSphereFailureDomain
.
govc tags.category.create -t ClusterComputeResource k8s-region
govc tags.create -c k8s-region room1
Répétez l'opération pour toutes les régions :
govc tags.create -c k8s-region REGION
govc tags.category.create -t HostSystem k8s-zone
govc tags.create -c k8s-zone rack1
Répétez pour toutes les zones :
govc tags.create -c k8s-zone ZONE
Vous pouvez également effectuer les opérations de balise à cette étape et aux étapes suivantes dans le volet Balises et attributs personnalisés (Tags & Custom Attributes) dans vCenter.
Attachez les balises de région à tous les clusters de calcul répertoriés dans les définitions de ressource personnalisée, par exemple :
govc tags.attach -c k8s-region room1 /dc1/host/room1-mgmt
Utilisez le chemin d’accès complet pour chaque cluster de calcul.
Attachez les balises de zone à tous les objets d'hôte répertoriés dans les définitions de ressource personnalisée, par exemple :
govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01a.corp.tanzu
Utilisez le chemin d’accès complet pour chaque hôte.
Pour les étapes suivantes de déploiement du cluster, reportez-vous à la section Déployer un cluster de charge de travail avec des nœuds répartis entre les zones de disponibilité.
Une fois que vous avez effectué les étapes décrites dans Répartir les nœuds entre plusieurs clusters de calcul dans un centre de données ou Répartir les nœuds sur plusieurs hôtes dans un cluster de calcul unique, vous pouvez déployer un cluster de charge de travail dont les nœuds sont répartis entre plusieurs zones de disponibilité.
Créez le fichier de configuration du cluster de charge de travail que vous déployez.
VSPHERE_REGION
et VSPHERE_ZONE
sur les catégories de balises de région k8s-region
et de zone k8s-zone
dans l'exemple ci-dessus.VSPHERE_AZ_0
, VSPHERE_AZ_1
et VSPHERE_AZ_2
avec les noms des objets VsphereDeploymentZone dans lesquels les machines doivent être déployées.VSPHERE_AZ_0
est le failureDomain dans lequel le déploiement de machine se terminant par md-0
est déployé. De la même manière, VSPHERE_AZ_1
est le failureDomain dans lequel le déploiement de machine se terminant par md-1
est déployé et VSPHERE_AZ_2
est le failureDomain dans lequel le déploiement de la machine se terminant par md-2
est déployé.WORKER_MACHINE_COUNT
définit le nombre total de nœuds worker pour le cluster. Le nombre total de nœuds worker est distribué par permutation circulaire selon le nombre de zones de disponibilité spécifiées.Pour obtenir la liste complète des options que vous devez spécifier lors du déploiement de clusters de charge de travail sur vSphere, reportez-vous à la Référence de variable de fichier de configuration.
Exécutez la commande tanzu cluster create
pour créer le cluster de charge de travail. Pour plus d'informations, reportez-vous à la section Créer des clusters de charge de travail.