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.
VSphereFailureDomain
-CRD erfasst die regions-/zonenspezifischen Tagging-Informationen und die Topologiedefinition, die die Informationen zum vSphere-Datencenter, -Cluster, -Host und -Datenspeicher enthält.VSphereDeploymentZone
-CRD erfasst die Zuordnung einer VSphereFailureDomain
mit Informationen zur Platzierungseinschränkung für den Kubernetes-Knoten.HinweisDiese 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.
Das Beispiel in diesem Abschnitt zeigt, wie mehrere Verfügbarkeitsbereiche erreicht werden können, indem Knoten auf mehrere Computing-Cluster verteilt werden.
Erstellen Sie die benutzerdefinierten Ressourcen zum Definieren der Region und der Zonen.
spec.region
, spec.zone
und spec.topology
muss mit den Konfigurationsoptionen in vCenter übereinstimmen.VSphereDeploymentZone
-Objekte muss der Wert spec.failuredomain
mit einem der metadata.name
-Werte der VSphereFailureDomain
-Definitionen übereinstimmen.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.
HinweisFür VsphereDeploymentZone-Objekte ist
spec.placementConstraint
optional.
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.
Das Beispiel in diesem Abschnitt verteilt Arbeitslastclusterknoten auf 3 verschiedene Hostgruppen in einem einzelnen Cluster.
Erstellen Sie in vCenter Server Hostgruppen, z. B. rack1
, und VM-Gruppen, z. B. rack1-vm-group
, für jede Fehlerdomäne.
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
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.
Erstellen Sie die benutzerdefinierten Ressourcen VSphereFailureDomain
und VSphereDeploymentZone
in einer Datei vsphere-zones.yaml
.
spec.region
, spec.zone
und spec.topology
muss mit den Konfigurationsoptionen in vCenter übereinstimmen.VSphereDeploymentZone
-Objekte muss der Wert spec.failuredomain
mit einem der metadata.name
-Werte der VSphereFailureDomain
-Definitionen übereinstimmen.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.
Wenden Sie die CRs-Datei an, um die Objekte VSphereFailureDomain
und VSphereDeploymentZone
zu erstellen:
kubectl apply -f vsphere-zones.yaml
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.
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
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.
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.
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.
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.
Erstellen Sie die Clusterkonfigurationsdatei für den Arbeitslastcluster, den Sie bereitstellen.
VSPHERE_REGION
und VSPHERE_ZONE
auf die Regions- und Zonen-Tag-Kategorien k8s-region
und k8s-zone
im obigen Beispiel.VSPHERE_AZ_0
, VSPHERE_AZ_1
VSPHERE_AZ_2
mit den Namen der VsphereDeploymentZone-Objekte fest, in denen die Maschinen bereitgestellt werden müssen.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.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.
Führen Sie tanzu cluster create
aus, um den Arbeitslastcluster zu erstellen. Weitere Informationen finden Sie unter Erstellen von Arbeitslastclustern.