Déployer des clusters de charge de travail sur plusieurs zones de disponibilité (version d'évaluation technique de vSphere)

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).

  • La CRD 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.
  • La CRD VSphereDeploymentZone capture l'association d'un VSphereFailureDomain avec les informations de contrainte de placement pour le nœud Kubernetes.
Remarque

Cette 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.

Répartir les nœuds entre plusieurs clusters de calcul dans un centre 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.

  1. Créez les ressources personnalisées pour définir la région et les zones.

    • Tous les éléments sous spec.region, spec.zone et spec.topology doivent correspondre à ce que vous avez configuré dans vCenter.
    • Pour les objets VSphereDeploymentZone, la valeur spec.failuredomain doit correspondre à l'une des valeurs metadata.name des définitions VSphereFailureDomain
    • La valeur 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.
    • Les valeurs 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
    

    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.

    Remarque

    Pour les objets VsphereDeploymentZone, la valeur spec.placementConstraint est facultative.

  2. 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é.

Répartir les nœuds sur plusieurs hôtes dans un cluster de calcul unique

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.

  1. 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.

    • Créez des groupes d'hôtes et de machines virtuelles à partir de Configurer > Groupes de VM/Hôtes > Ajouter….
    • Le nombre de groupes d’hôtes doit correspondre au nombre de zones de disponibilité que vous prévoyez d’utiliser.
    • Pour créer un groupe de machines virtuelles, vous devrez peut-être créer une machine virtuelle factice à ajouter en tant que membre du groupe.
    • 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
      
  2. 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éé.

    • Définissez Type sur Machines virtuelles aux hôtes et incluez la règle Doit s'exécuter sur des hôtes en groupe.
  3. Créez les ressources personnalisées VSphereFailureDomain et VSphereDeploymentZone dans un fichier vsphere-zones.yaml.

    • Tous les éléments sous spec.region, spec.zone et spec.topology doivent correspondre à ce que vous avez configuré dans vCenter.
    • Pour les objets VSphereDeploymentZone, la valeur spec.failuredomain doit correspondre à l'une des valeurs metadata.name des définitions VSphereFailureDomain
    • La valeur 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.
    • Les valeurs 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
    

    VSPHERE_SERVER est l'adresse IP ou le nom de domaine complet de votre instance de vCenter Server.

  4. Appliquez le fichier des ressources personnalisées pour créer les objets VSphereFailureDomain et VSphereDeploymentZone :

    kubectl apply -f vsphere-zones.yaml
    
  5. 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.

    • Créez une catégorie de balises de région et des balises pour les clusters de calcul, par exemple :
    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
    
    • Créez une catégorie de balises de zone et des balises pour les hôtes, par exemple :
    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.

  6. 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.

  7. 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é.

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é.

  1. Créez le fichier de configuration du cluster de charge de travail que vous déployez.

    • Définissez 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.
    • Définissez 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.
    • L'objet VsphereDeploymentZone associé à 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é.
    • Si l'une des configurations de zone de disponibilité n'est pas définie, ce déploiement de machine est déployé sans failureDomain.
    • 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.

  2. 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.

    • Pendant le processus de création du cluster, vous pouvez voir ses machines virtuelles et d'autres ressources s'afficher dans vCenter.
    • Si vous avez créé une machine virtuelle factice dans vCenter afin de créer un groupe de machines virtuelles, vous pouvez supprimer la machine virtuelle des groupes de machines virtuelles une fois que le cluster est en cours d'exécution.
check-circle-line exclamation-circle-line close-line
Scroll to top icon