Para habilitar varias zonas de disponibilidad para clústeres de carga de trabajo en vSphere, se introdujeron dos nuevas definiciones de recursos personalizadas (CRD) en el vSphere del proveedor de API del clúster (CAPV).
VSphereFailureDomain
captura la información de etiquetado específica de la región o la zona y la definición de topología, que incluye información del centro de datos, el clúster, el host y el almacén de datos de vSphere.VSphereDeploymentZone
captura la asociación de un VSphereFailureDomain
con información de restricción de colocación para el nodo de Kubernetes.NotaEsta función se encuentra en el estado de vista previa técnica no compatible; consulte Estados de funciones de TKG.
Las configuraciones de este tema distribuyen los nodos de trabajo y el plano de control de Kubernetes entre objetos vSphere, concretamente hosts y clústeres de proceso y centros de datos.
El ejemplo de esta sección muestra cómo lograr varias zonas de disponibilidad mediante la distribución de nodos entre varios clústeres de proceso.
Cree los recursos personalizados para definir la región y las zonas.
spec.region
, spec.zone
y spec.topology
deben coincidir con lo que configuró en vCenter.VSphereDeploymentZone
, el valor spec.failuredomain
debe coincidir con uno de los valores metadata.name
de las definiciones VSphereFailureDomain
spec.server
en los objetos VSphereDeploymentZone
debe coincidir con la dirección del vCenter Server (IP o FQDN) introducida para VCENTER SERVER en el panel Proveedor de IaaS (IaaS Provider) de la interfaz del instalador o el ajuste VSPHERE_SERVER
en el archivo de configuración del clúster de administración.metadata.name
deben estar todos en minúscula.Para distribuir los nodos de Kubernetes para un clúster de carga de trabajo entre varios clústeres de proceso dentro de un centro de datos, debe crear recursos personalizados. En este ejemplo se describen 3 zonas de implementación denominadas us-west-1a
, us-west-1b
y us-west-1c
, cada una de ellas es un clúster de proceso con sus parámetros de red y almacenamiento.
---
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
Donde VSPHERE_SERVER
es la dirección IP o el FQDN de su vCenter Server.
Si diferentes clústeres de proceso tienen grupos de recursos con nombres idénticos, establezca los objetos VSphereDeploymentZone
spec.placementConstraint.resourcePool
en una ruta de recursos completa, no solo el nombre.
NotaPara los objetos vsphereDeploymentZone,
spec.placementConstraint
es opcional.
Etiquete los objetos vSphere.
Desde el primer CR VSphereFailureDomain
denominado us-west-1a
, utilice govc
para aplicar las siguientes etiquetas al centro de datos dc0
y al clúster de proceso cluster1
.
govc tags.attach -c k8s-region us-west-1 /dc0
govc tags.attach -c k8s-zone us-west-1a /dc0/host/cluster1
De forma similar, realice las siguientes operaciones de etiquetado para los otros clústeres de proceso.
govc tags.attach -c k8s-zone us-west-1b /dc0/host/cluster2
govc tags.attach -c k8s-zone us-west-1c /dc0/host/cluster3
Puede omitir este paso si spec.region.autoConfigure
y spec.zone.autoConfigure
están establecidos en true
al crear los CR VSphereFailureDomain
.
Para conocer los siguientes pasos para implementar el clúster, consulte Implementar un clúster de carga de trabajo con nodos repartidos entre las zonas de disponibilidad.
El ejemplo de esta sección distribuye los nodos del clúster de carga de trabajo en 3 grupos de hosts diferentes en un solo clúster.
En vCenter Server, cree grupos de hosts, por ejemplo, rack1
y grupos de máquinas virtuales, por ejemplo, rack1-vm-group
, para cada dominio de errores.
Si lo prefiere, puede utilizar govc
para crear grupos de máquinas virtuales y hosts mediante la ejecución de comandos similares a los siguientes, sin tener que crear una máquina virtual ficticia:
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
Agregue reglas de afinidad entre los grupos de hosts y los grupos de máquinas virtuales creados para que las máquinas virtuales del grupo de máquinas virtuales se ejecuten en los hosts del grupo de hosts creado.
Cree los recursos personalizados VSphereFailureDomain
y VSphereDeploymentZone
en un archivo vsphere-zones.yaml
.
spec.region
, spec.zone
y spec.topology
deben coincidir con lo que configuró en vCenter.VSphereDeploymentZone
, el valor spec.failuredomain
debe coincidir con uno de los valores metadata.name
de las definiciones VSphereFailureDomain
spec.server
en los objetos VSphereDeploymentZone
debe coincidir con la dirección del vCenter Server (IP o FQDN) introducida para VCENTER SERVER en el panel Proveedor de IaaS (IaaS Provider) de la interfaz del instalador o el ajuste VSPHERE_SERVER
en el archivo de configuración del clúster de administración.metadata.name
deben estar todos en minúscula.Por ejemplo, los siguientes archivos vsphere-zones.yaml
definen tres zonas dentro de una región room1
, donde cada zona es un rack de hosts dentro del mismo clúster.
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
Donde VSPHERE_SERVER
es la dirección IP o el FQDN de su vCenter Server.
Aplique el archivo CR para crear los objetos VSphereFailureDomain
y VSphereDeploymentZone
:
kubectl apply -f vsphere-zones.yaml
Utilice govc
para crear categorías de etiquetas y etiquetas para regiones y zonas, con el fin de aplicarlas a los hosts y los clústeres de proceso enumerados en los CR VSphereFailureDomain
.
govc tags.category.create -t ClusterComputeResource k8s-region
govc tags.create -c k8s-region room1
Repítalo para todas las regiones:
govc tags.create -c k8s-region REGION
govc tags.category.create -t HostSystem k8s-zone
govc tags.create -c k8s-zone rack1
Repítalo para todas las zonas:
govc tags.create -c k8s-zone ZONE
Como alternativa, puede realizar las operaciones de etiqueta en este paso y los siguientes en el panel Etiquetas y atributos personalizados de vCenter.
Asocie las etiquetas de región a todos los clústeres de proceso enumerados en las definiciones de CR, por ejemplo:
govc tags.attach -c k8s-region room1 /dc1/host/room1-mgmt
Utilice la ruta completa para cada clúster de proceso.
Asocie las etiquetas de zona a todos los objetos de host enumerados en las definiciones de CR, por ejemplo:
govc tags.attach -c k8s-zone rack1 /dc1/host/room1-mgmt/esx-01a.corp.tanzu
Utilice la ruta de acceso completa para cada host.
Para conocer los siguientes pasos para implementar el clúster, consulte Implementar un clúster de carga de trabajo con nodos repartidos entre las zonas de disponibilidad.
Después de realizar los pasos descritos en Distribuir nodos entre varios clústeres de proceso en un centro de datos o Distribuir nodos entre varios hosts en un solo clúster de proceso, puede implementar un clúster de carga de trabajo con sus nodos repartidos en varias zonas de disponibilidad.
Cree el archivo de configuración del clúster para el clúster de carga de trabajo que va a implementar.
VSPHERE_REGION
y VSPHERE_ZONE
en las categorías de etiquetas de región y zona, k8s-region
y k8s-zone
en el ejemplo anterior.VSPHERE_AZ_0
, VSPHERE_AZ_1
, VSPHERE_AZ_2
con los nombres de los objetos VsphereDeploymentZone en los que se deben implementar las máquinas.VSPHERE_AZ_0
es el failureDomain en el que se implementa la implementación de la máquina que termina con md-0
, de forma similar VSPHERE_AZ_1
es el failureDomain en el que se implementa la máquina que termina en md-1
y VSPHERE_AZ_2
es el failureDomain en el que se implementa la máquina que termina en md-2
WORKER_MACHINE_COUNT
establece el número total de trabajos para el clúster. El número total de trabajadores se distribuye por turnos entre el número de AZ especificadasPara obtener la lista completa de opciones que debe especificar al implementar clústeres de carga de trabajo en vSphere, consulte la Referencia de variables del archivo de configuración.
Ejecute tanzu cluster create
para crear el clúster de carga de trabajo. Para obtener más información, consulte Crear clústeres de carga de trabajo.