Bereitstellen von Arbeitslastclustern in mehreren Verfügbarkeitsbereichen (vSphere Tech Preview)

Um mehrere Verfügbarkeitszonen für Arbeitslastcluster auf vSphere zu aktivieren, wurden in CAPV (Cluster API Provider vSphere) zwei neue benutzerdefinierte Ressourcendefinitionen (Custom Resource Definitions, CRD) eingeführt.

  • Die VSphereFailureDomain-CRD erfasst die regions-/zonenspezifischen Tagging-Informationen und die Topologiedefinition, die die Informationen zum vSphere-Datencenter, -Cluster, -Host und -Datenspeicher enthält.
  • Die VSphereDeploymentZone-CRD erfasst die Zuordnung einer VSphereFailureDomain mit Informationen zur Platzierungseinschränkung für den Kubernetes-Knoten.
Hinweis

Diese Funktion befindet sich im nicht unterstützten Tech Preview-Zustand. Weitere Informationen finden Sie unter TKG-Funktionsstatus.

Die Konfigurationen in diesem Thema verteilen die Kubernetes-Steuerungsebenen- und Worker-Knoten auf vSphere-Objekte, d. h. Hosts, Computing-Cluster und Datencenter.

Verteilen von Knoten auf mehrere Computing-Cluster in einem Datencenter

Das Beispiel in diesem Abschnitt zeigt, wie mehrere Verfügbarkeitsbereiche erreicht werden können, indem Knoten auf mehrere Computing-Cluster verteilt werden.

  1. Erstellen Sie die benutzerdefinierten Ressourcen zum Definieren der Region und der Zonen.

    • Alles unter spec.region, spec.zone und spec.topology muss mit den Konfigurationsoptionen in vCenter übereinstimmen.
    • Für VSphereDeploymentZone-Objekte muss der Wert spec.failuredomain mit einem der metadata.name-Werte der VSphereFailureDomain-Definitionen übereinstimmen.
    • Der Wert spec.server in den VSphereDeploymentZone-Objekten muss mit der vCenter-Serveradresse (IP oder FQDN) übereinstimmen, die für VCENTER SERVER im Fensterbereich IaaS-Anbieter der Installationsprogramm-Schnittstelle oder der VSPHERE_SERVER-Einstellung in der Konfigurationsdatei des Verwaltungsclusters eingegeben wurde.
    • metadata.name-Werte dürfen nur Kleinbuchstaben enthalten.

    Um die Kubernetes-Knoten für einen Arbeitslastcluster auf mehrere Computing-Cluster innerhalb eines Datencenters zu verteilen, müssen Sie benutzerdefinierte Ressourcen erstellen. In diesem Beispiel werden 3 Bereitstellungszonen mit dem Namen us-west-1a, us-west-1b und us-west-1c beschrieben, wobei es sich jeweils um einen Computing-Cluster mit seinen Netzwerk- und Speicherparametern handelt.

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

    Dabei ist VSPHERE_SERVER die IP-Adresse oder der FQDN Ihres vCenter-Servers.

    Wenn verschiedene Computing-Cluster über identisch benannte Ressourcenpools verfügen, legen Sie den Wert spec.placementConstraint.resourcePool von VSphereDeploymentZone-Objekten auf einen vollständigen Ressourcenpfad und nicht nur auf den Namen fest.

    Hinweis

    Für VsphereDeploymentZone-Objekte ist spec.placementConstraint optional.

  2. Markieren Sie die vSphere-Objekte.

    Verwenden Sie vom ersten VSphereFailureDomain-CR namens us-west-1a govc, um die folgenden Tags auf das Datencenter dc0 und den Computing-Cluster cluster1 anzuwenden.

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

    Führen Sie in ähnlicher Weise die folgenden Tagging-Vorgänge für die anderen Computing-Cluster aus.

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

    Sie können diesen Schritt überspringen, wenn spec.region.autoConfigure und spec.zone.autoConfigure beim Erstellen der VSphereFailureDomain-CRs auf true gesetzt sind.

Die nächsten Schritte zumBereitstellen eines Arbeitslastclusters mit auf Verfügbarkeitsbereiche verteilten Knoten.

Verteilen von Knoten auf mehrere Hosts in einem einzelnen Computing-Cluster

Das Beispiel in diesem Abschnitt verteilt Arbeitslastclusterknoten auf 3 verschiedene Hostgruppen in einem einzelnen Cluster.

  1. Erstellen Sie in vCenter Server Hostgruppen, z. B. rack1, und VM-Gruppen, z. B. rack1-vm-group, für jede Fehlerdomäne.

    • Erstellen von Host- und VM-Gruppen aus Konfigurieren (Configure) > VM-/Hostgruppen (VM/Host Groups) > Hinzufügen (Add)…
    • Die Anzahl der Hostgruppen sollte mit der Anzahl der Verfügbarkeitsbereiche übereinstimmen, die Sie verwenden möchten.
    • Um eine VM-Gruppe zu erstellen, müssen Sie möglicherweise eine Dummy-VM erstellen, um sie als Gruppenmitglied hinzuzufügen.
    • Alternativ können Sie govc verwenden, um Host- und VM-Gruppen zu erstellen, indem Sie Befehle ähnlich den folgenden ausführen, ohne eine Dummy-VM erstellen zu müssen:

      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. Fügen Sie Affinitätsregeln zwischen den erstellten VM- und Hostgruppen hinzu, sodass die VMs in der VM-Gruppe auf den Hosts in der erstellten Hostgruppe ausgeführt werden müssen.

    • Setzen Sie Typ (Type) auf Virtuelle Maschinen auf Hosts (Virtual Machines to Hosts) und schließen Sie die Regel Muss auf Hosts in Gruppe ausgeführt werden (Must run on hosts in group) ein.
  3. Erstellen Sie die benutzerdefinierten Ressourcen VSphereFailureDomain und VSphereDeploymentZone in einer Datei vsphere-zones.yaml.

    • Alles unter spec.region, spec.zone und spec.topology muss mit den Konfigurationsoptionen in vCenter übereinstimmen.
    • Für VSphereDeploymentZone-Objekte muss der Wert spec.failuredomain mit einem der metadata.name-Werte der VSphereFailureDomain-Definitionen übereinstimmen.
    • Der Wert spec.server in den VSphereDeploymentZone-Objekten muss mit der vCenter-Serveradresse (IP oder FQDN) übereinstimmen, die für VCENTER SERVER im Fensterbereich IaaS-Anbieter der Installationsprogramm-Schnittstelle oder der VSPHERE_SERVER-Einstellung in der Konfigurationsdatei des Verwaltungsclusters eingegeben wurde.
    • metadata.name-Werte dürfen nur Kleinbuchstaben enthalten.

    Beispielsweise definieren die folgenden Dateien vsphere-zones.yaml drei Zonen innerhalb einer Region room1, wobei jede Zone ein Rack mit Hosts innerhalb desselben Clusters ist.

    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
    

    Dabei ist VSPHERE_SERVER die IP-Adresse oder der FQDN Ihres vCenter-Servers.

  4. Wenden Sie die CRs-Datei an, um die Objekte VSphereFailureDomain und VSphereDeploymentZone zu erstellen:

    kubectl apply -f vsphere-zones.yaml
    
  5. Verwenden Sie govc, um Tag-Kategorien und Tags für Regionen und Zonen zu erstellen, die auf die Computing-Cluster und Hosts angewendet werden sollen, die in Ihrem VSphereFailureDomain-CRs aufgeführt sind.

    • Erstellen Sie eine Regions-Tag-Kategorie und Tags für Computing-Cluster, z. B.:
    govc tags.category.create -t ClusterComputeResource k8s-region
    
    govc tags.create -c k8s-region room1
    

    Wiederholen Sie den Vorgang für alle Regionen:

    govc tags.create -c k8s-region REGION
    
    • Erstellen Sie eine Zonen-Tag-Kategorie und Tags für Hosts, z. B.:
    govc tags.category.create -t HostSystem k8s-zone
    
    govc tags.create -c k8s-zone rack1
    

    Wiederholen Sie den Vorgang für alle Zonen:

    govc tags.create -c k8s-zone ZONE
    

    Alternativ können Sie die Tag-Vorgänge in diesem Schritt und den folgenden Schritten im Bereich Tags und benutzerdefinierte Attribute (Tags & Custom Attributes) in vCenter durchführen.

  6. Hängen Sie die Regions-Tags an alle Computing-Cluster an, die in den CR-Definitionen aufgeführt sind, z. B.:

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

    Verwenden Sie den vollständigen Pfad für jeden Computing-Cluster.

  7. Hängen Sie die Zonen-Tags an alle in den CR-Definitionen aufgeführten Hostobjekte an, z. B.:

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

    Verwenden Sie den vollständigen Pfad für jeden Host.

Die nächsten Schritte zumBereitstellen eines Arbeitslastclusters mit auf Verfügbarkeitsbereiche verteilten Knoten.

Bereitstellen eines Arbeitslastclusters mit auf Verfügbarkeitsbereiche verteilten Knoten

Nachdem Sie die Schritte unter Verteilen von Knoten auf mehrere Computing-Cluster in einem Datencenter oder Verteilen von Knoten auf mehrere Hosts in einem einzelnen Computing-Cluster können Sie einen Arbeitslastcluster bereitstellen, dessen Knoten über mehrere Verfügbarkeitsbereiche verteilt sind.

  1. Erstellen Sie die Clusterkonfigurationsdatei für den Arbeitslastcluster, den Sie bereitstellen.

    • Setzen Sie VSPHERE_REGION und VSPHERE_ZONE auf die Regions- und Zonen-Tag-Kategorien k8s-region und k8s-zone im obigen Beispiel.
    • Legen Sie VSPHERE_AZ_0, VSPHERE_AZ_1 VSPHERE_AZ_2 mit den Namen der VsphereDeploymentZone-Objekte fest, in denen die Maschinen bereitgestellt werden müssen.
    • Die mit VSPHERE_AZ_0 verknüpfte VsphereDeploymentZone ist die failureDomain, in der die Maschinenbereitstellung mit der Endung md-0 bereitgestellt wird. In ähnlicher Weise ist VSPHERE_AZ_1 die failureDomain, in der die Maschinenbereitstellung mit der Endung md-1 bereitgestellt wird, und VSPHERE_AZ_2 die failureDomain, in der die Maschinenbereitstellung mit der Endung md-2 bereitgestellt wird.
    • Wenn eine der AZ-Konfigurationen nicht definiert ist, wird diese Maschinenbereitstellung ohne failureDomain bereitgestellt.
    • WORKER_MACHINE_COUNT legt die Gesamtzahl der Worker für den Cluster fest. Die Gesamtzahl der Worker wird im Round-Robin-Verfahren auf die Anzahl der angegebenen AZs verteilt.

    Eine vollständige Liste der Optionen, die Sie bei der Bereitstellung von Arbeitslastclustern unter vSphere angeben müssen, finden Sie in der Referenz für die Variablen der Konfigurationsdatei.

  2. Führen Sie tanzu cluster create aus, um den Arbeitslastcluster zu erstellen. Weitere Informationen finden Sie unter Erstellen von Arbeitslastclustern.

    • Während des Clustererstellungsvorgangs werden die zugehörigen VMs und andere Ressourcen in vCenter angezeigt.
    • Wenn Sie eine Dummy-VM in vCenter erstellt haben, um eine VM-Gruppe zu erstellen, können Sie die VM löschen oder aus den VM-Gruppen entfernen, sobald der Cluster ausgeführt wird.
check-circle-line exclamation-circle-line close-line
Scroll to top icon