En este documento, se muestra cómo crear un clúster de usuario con el plano de control V2 habilitado.
Con el plano de control V2, el plano de control de un clúster de usuario se ejecuta en uno o más nodos del clúster de usuario. El plano de control V2 es la configuración predeterminada y recomendada para la creación de clústeres.
Descripción general del procedimiento
Estos son los pasos principales que se deben seguir para crear un clúster de usuario:
- Conectarse a la estación de trabajo de administrador.
- La estación de trabajo de administrador es una VM que tiene las herramientas necesarias para crear un clúster de usuario.
- Completa los archivos de configuración
- Especifica los detalles de tu clúster nuevo. Para ello, completa un archivo de configuración del clúster de usuario, un archivo de configuración de credenciales y, posiblemente, un archivo de bloque de IP.
- Importa imágenes de SO a vSphere y envía imágenes de contenedor al
- registro privado si corresponde.
- Ejecuta
gkectl prepare
.
- Crea un clúster de usuario
- Ejecuta
gkectl create cluster
para crear un clúster como se especifica en el archivo de configuración.
- Verifica que el clúster de usuario esté en ejecución
- Usa
kubectl
para ver los nodos del clúster.
Al final de este procedimiento, tendrás un clúster de usuario en ejecución en el que podrás implementar las cargas de trabajo.
Antes de comenzar
Asegúrate de haber creado una estación de trabajo de administrador y un clúster de administrador.
Revisa el documento de planificación de direcciones IP. Asegúrate de tener suficientes direcciones IP disponibles y revisa la decisión sobre cómo deseas que los nodos del clúster obtengan sus direcciones IP: DHCP o estáticas. Si decides usar direcciones IP estáticas, debes completar un archivo de bloque de IP que contenga las direcciones elegidas.
Revisa la descripción general del balanceo de cargas y vuelve a decidir tu decisión sobre el tipo de balanceador de cargas que deseas usar. Puedes usar el balanceador de cargas agrupado de MetalLB o configurar de forma manual el balanceador de cargas que elijas. Para el balanceo de cargas manual, debes configurar el balanceador de cargas antes de crear el clúster de usuario.
Observa la sección vCenter. Piensa si deseas usar clústeres de vSphere separados para el clúster de administrador y los clústeres de usuario, y si deseas usar centros de datos separados. También considera si deseas usar instancias separadas de vCenter Server.
Observa la sección nodePools. Piensa en la cantidad de grupos de nodos que necesitas y en qué sistema operativo deseas ejecutar cada uno de ellos.
1. Conectarse a la estación de trabajo de administrador.
Obtén una conexión SSH a tu estación de trabajo de administrador
Recuerda que gkeadm
activó tu cuenta de servicio de acceso a componentes en la estación de trabajo de administrador.
Sigue todos los pasos restantes de este tema en tu estación de trabajo de administrador en el directorio principal.
2. Completa el archivo de configuración
Cuando gkeadm
creó la estación de trabajo de administrador, generó un segundo archivo de configuración llamado user-cluster.yaml
. Este archivo de configuración sirve para crear tu clúster de usuario.
Familiarízate con el archivo de configuración mediante el análisis del documento del archivo de configuración del clúster de usuario. Se recomienda mantener este documento abierto en una pestaña o ventana separada, ya que harás referencia a él a medida que completes los siguientes pasos.
name
Configura el campo name
con el nombre que desees para el clúster de usuarios.
gkeOnPremVersion
Ya se completó este campo. Especifica la versión de GKE en VMware. Por ejemplo, 1.15.0-gke.581
enableControlplaneV2
Configura enableControlplaneV2
como true
.
enableDataplaneV2
Configura enableDataplaneV2 en true
.
vCenter
Los valores que estableces en la sección vCenter
del archivo de configuración del clúster de administrador son globales. Es decir, se aplican al clúster de administrador y a los clústeres de usuario asociados.
Para cada clúster de usuario que crees, tienes la opción de anular algunos de los valores de vCenter
globales.
Para anular cualquiera de los valores de vCenter
globales, completa los campos relevantes en la sección vCenter
del archivo de configuración de tu clúster de usuario.
En particular, es posible que desees usar clústeres de vSphere separados para el clúster de administrador y los clústeres de usuario, y centros de datos distintos para el clúster de administrador y los clústeres de usuario.
Usa un centro de datos y un clúster de vSphere
La opción predeterminada es usar un centro de datos y un clúster de vSphere para el clúster de administrador y el de usuario. Para esta opción, no establezcas ningún valor vCenter
en el archivo de configuración del clúster de usuario. Los valores vCenter
se heredarán del clúster de administrador.
Usa clústeres de vSphere independientes
Si deseas crear un clúster de usuario que esté en su propio clúster de vSphere, especifica un valor para vCenter.cluster
en el archivo de configuración del clúster de usuario.
Si el clúster de administrador y el de usuario están en clústeres de vSphere independientes, pueden estar en el mismo centro de datos o en centros de datos diferentes.
Usa centros de datos de vSphere independientes
El clúster de usuario y el clúster de administrador pueden estar en centros de datos diferentes. En ese caso, también estarán en clústeres de vSphere separados.
Si especificas vCenter.datacenter
en el archivo de configuración del clúster de usuario, también debes especificar lo siguiente:
vCenter.networkName
vCenter.datastore
ovCenter.storagePolicyName
vCenter.cluster
ovCenter.resourcePool
Usa cuentas de vCenter independientes
Un clúster de usuario puede usar una cuenta de vCenter diferente del clúster de administrador, con vCenter.credentials
diferente. La cuenta de vCenter para el clúster de administrador necesita acceso al centro de datos del clúster de administrador, mientras que la cuenta de vCenter del clúster de usuario solo necesita acceso al centro de datos del clúster de usuario.
Usa instancias independientes de vCenter Server
En ciertas situaciones, es conveniente crear un clúster de usuario que use su propia instancia de vCenter Server. Es decir, el clúster de administrador y un clúster de usuario asociado usan instancias diferentes de vCenter Server.
Por ejemplo, en una ubicación perimetral, es posible que desees tener una máquina física que ejecute vCenter Server y una o más máquinas físicas que ejecuten ESXi. Luego, puedes usar tu instancia local de vCenter Server para crear una jerarquía de objetos de vSphere, que incluya centros de datos, clústeres, grupos de recursos, almacenes de datos y carpetas.
Completa la sección vCenter
completa del archivo de configuración del clúster de usuario. En particular, especifica un valor para vCenter.address
que sea diferente de la dirección de vCenter Server que especificaste en el archivo de configuración del clúster de administrador. Por ejemplo:
vCenter: address: "vc-edge.example" datacenter: "vc-edge" cluster: "vc-edge-workloads" resourcePool: "vc-edge-pool datastore: "vc-edge-datastore caCertPath: "/usr/local/google/home/me/certs/edge-cacert.pem" credentials: fileRef: path: "credential.yaml" entry: "vCenter-edge" folder: "edge-vm-folder"
También completa el campo network.vCenter.networkName
.
network
Decide cómo quieres que los nodos trabajadores obtengan sus direcciones IP. Las opciones son las siguientes:
Desde un servidor DHCP que configures con anticipación. Configura
network.ipMode.type
como"dhcp"
.De una lista de direcciones IP estáticas que proporciones. Configura
network.ipMode.type
como"static"
y crea un archivo de bloques de IP que proporcione las direcciones IP estáticas. Para ver un ejemplo de un archivo de bloque de IP, consulta Ejemplo de archivos de configuración completados.
Si decidiste usar direcciones IP estáticas para tus nodos trabajadores, completa el campo
network.ipMode.ipBlockFilePath
.
Los nodos del plano de control de tu clúster de usuario deben obtener sus direcciones IP de una lista de direcciones estáticas que proporciones. Esto ocurre incluso si los nodos trabajadores obtienen sus direcciones de un servidor DHCP. Si deseas especificar direcciones IP estáticas para tus nodos del plano de control, completa la sección network.controlPlaneIPBlock
. Si deseas un clúster de usuario con alta disponibilidad (HA), especifica tres direcciones IP. De lo contrario, especifica una dirección IP.
Completa la sección hostConfig
para especificar los servidores DNS y NTP. Estos servidores DNS y NTP son para los nodos del plano de control. Si usas direcciones IP estáticas para tus nodos trabajadores, estos servidores DNS y NTP también son para los nodos trabajadores.
network.podCIDR y network.serviceCIDR tienen valores prepropagados que puedes dejar sin modificar, a menos que entren en conflicto con direcciones que ya se usan en tu red. Kubernetes usa estos rangos para asignar direcciones IP a Pods y objetos Service en tu clúster.
Sin importar si dependes de un servidor DHCP o especificas una lista de direcciones IP estáticas, debes tener suficientes direcciones IP disponibles para el clúster de usuario. Para obtener una explicación de cuántas direcciones IP necesitas, consulta Planifica tus direcciones IP.
loadBalancer
Reserva una VIP para el servidor de la API de Kubernetes del clúster de usuario. Dedica otro VIP para el servicio de entrada de tu clúster de usuario. Proporciona tus VIP como valores para loadBalancer.vips.controlPlaneVIP
y loadBalancer.vips.ingressVIP
.
Decide qué tipo de balanceo de cargas quieres usar. Las opciones son las siguientes:
Balanceo de cargas en paquetes de MetalLB. Configura
loadBalancer.kind
como"MetalLB"
. También completa la secciónloadBalancer.metalLB.addressPools
y configuraenableLoadBalancer
comotrue
para al menos uno de tus grupos de nodos. Para obtener más información, consulta Balanceo de cargas en paquetes con MetalLB.Balanceo de cargas manual. Configura
loadBalancer.kind
como"ManualLB"
y completa la secciónmanualLB
. Para obtener más información, consulta Balanceo de cargas manual.
Para obtener más información sobre las opciones de balanceo de cargas, consulta Descripción general del balanceo de cargas.
advancedNetworking
Si planeas crear una puerta de enlace NAT de salida, configura advancedNetworking como true
.
multipleNetworkInterfaces
Decide si deseas configurar varias interfaces de red para Pods y configurar multipleNetworkInterfaces según corresponda.
storage
Si deseas inhabilitar la implementación de los componentes de CSI de vSphere, configura storage.vSphereCSIDisabled como true
.
masterNode
En la sección masterNode
, puedes especificar cuántos nodos del plano de control deseas para tu clúster de usuario: uno o tres. También puedes especificar un almacén de datos para los nodos del plano de control y si deseas habilitar el cambio de tamaño automático de los nodos del plano de control.
Recuerda que especificaste las direcciones IP para los nodos del plano de control en la sección network.controlPlaneIPBlock
.
nodePools
Un grupo de nodos es un conjunto de nodos dentro de un clúster que tienen la misma configuración. Por ejemplo, los nodos de un grupo podrían ejecutar Windows y los nodos en otro grupo podrían ejecutar Linux.
Debes especificar al menos un grupo de nodos mediante la sección nodePools
.
Para obtener más información, consulta Grupos de nodos y Crea y administra grupos de nodos.
antiAffinityGroups
Establece antiAffinityGroups.enabled
en true
o false
.
Este campo especifica si GKE en VMware crea reglas de antiafinidad de Distributed Resource Scheduler (DRS) para los nodos trabajadores, lo que hace que se distribuyan en al menos tres hosts físicos del centro de datos.
stackdriver
Si deseas habilitar Cloud Logging y Cloud Monitoring para tu clúster, completa la sección stackdriver
.
Esta sección es obligatoria de forma predeterminada. Es decir, si no completas esta sección, debes incluir la marca --skip-validation-stackdriver
cuando ejecutes gkectl create cluster
.
Ten en cuenta los siguientes requisitos para los clústeres nuevos:
El ID de
stackdriver.projectID
debe ser el mismo que el degkeConnect.projectID
ycloudAuditLogging.projectID
.La región de Google Cloud configurada en
stackdriver.clusterLocation
debe ser la misma que la región configurada encloudAuditLogging.clusterLocation
. Además, sigkeOnPremAPI.enabled
estrue
, se debe configurar la misma región engkeOnPremAPI.location
.
Si los IDs del proyecto y las regiones no son iguales, la creación del clúster fallará.
gkeConnect
El clúster de usuario debe estar registrado en una flota de Google Cloud.
Completa la sección gkeConnect
para especificar un proyecto host de flota y una cuenta de servicio asociada.
Si incluyes las secciones stackdriver
y cloudAuditLogging
en el archivo de configuración, el ID en gkeConnect.projectID
debe ser el mismo que el ID establecido en stackdriver.projectID
y cloudAuditLogging.projectID
. Si los ID del proyecto no son iguales, la creación del clúster falla.
gkeOnPremAPI
En 1.16 y versiones posteriores, si la API de GKE On-Prem está habilitada en tu proyecto de Google Cloud, todos los clústeres del proyecto se inscriben en la API de GKE On-Prem de forma automática en la región configurada en stackdriver.clusterLocation
.
Si deseas inscribir todos los clústeres del proyecto en la API de GKE On-Prem, asegúrate de seguir los pasos que se indican en Antes de comenzar para activar y usar la API de GKE On-Prem en el proyecto.
Si no deseas inscribir el clúster en la API de GKE On-Prem, incluye esta sección y configura
gkeOnPremAPI.enabled
comofalse
. Si no deseas inscribir ningún clúster en el proyecto, inhabilitagkeonprem.googleapis.com
(el nombre del servicio para la API de GKE On-Prem) en el proyecto. Para obtener instrucciones, consulta Inhabilita servicios.
usageMetering
Si deseas habilitar la medición de uso para tu clúster, completa la sección
usageMetering
.
cloudAuditLogging
Si deseas integrar los registros de auditoría del servidor de la API de Kubernetes del clúster a los Registros de auditoría de Cloud, completa la sección cloudAuditLogging
.
Ten en cuenta los siguientes requisitos para los clústeres nuevos:
El ID de
cloudAuditLogging.projectID
debe ser el mismo que el degkeConnect.projectID
ystackdriver.projectID
.La región de Google Cloud configurada en
cloudAuditLogging.clusterLocation
debe ser la misma que la región configurada enstackdriver.clusterLocation
. Además, sigkeOnPremAPI.enabled
estrue
, se debe configurar la misma región engkeOnPremAPI.location
.
Si los IDs del proyecto y las regiones no son iguales, la creación del clúster fallará.
Ejemplo de archivos de configuración completados
A continuación, se muestra un ejemplo de un archivo de bloque de IP y un archivo de configuración de clúster de usuario:
user-ipblock.yaml
blocks: - netmask: 255.255.255.0 gateway: 172.16.21.1 ips: - ip: 172.16.21.2 hostname: worker-vm-1 - ip: 172.16.21.3 hostname: worker-vm-2 - ip: 172.16.21.4 hostname: worker-vm-3 - ip: 172.16.21.5 hostname: worker-vm-4
user-cluster.yaml
cat user-cluster.yaml apiVersion: v1 kind: UserCluster name: "my-user-cluster" gkeOnPremVersion: 1.15.0-gke.581 enableControlplaneV2: true enableDataplaneV2: true network: hostConfig: dnsServers: - "203.0.113.2" - "198.51.100.2" ntpServers: - "216.239.35.4" ipMode: type: "static" ipBlockFilePath: "user-ipblock.yaml" serviceCIDR: 10.96.0.0/20 podCIDR: 192.168.0.0/16 controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "172.16.21.1" ips: - ip: "172.16.21.6" hostname: "cp-vm-1" - ip: "172.16.21.7" hostname: "cp-vm-2" - ip: "172.16.21.8" hostname: "cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" ingressVIP: "172.16.21.30" kind: MetalLB metalLB: addressPools: - name: "address-pool-1" addresses: - "172.16.21.30-172.16.21.39" masterNode: cpus: 4 memoryMB: 8192 replicas: 3 nodePools: - name: "worker-node-pool" cpus: 4 memoryMB: 8192 replicas: 3 enableLoadBalancer: true antiAffinityGroups: enabled: true gkeConnect: projectID: "my-project-123" registerServiceAccountKeyPath: "connect-register-sa-2203040617.json" stackdriver: projectID: "my-project-123" clusterLocation: "us-central1" enableVPC: false serviceAccountKeyPath: "log-mon-sa-2203040617.json" autoRepair: enabled: true
Estos son los puntos importantes que debes comprender en el ejemplo anterior:
Las direcciones IP estáticas de los nodos trabajadores se especifican en un archivo de bloque de IP. El archivo de bloque de IP tiene cuatro direcciones, aunque solo haya tres nodos trabajadores. La dirección IP adicional se necesita durante la actualización del clúster y la reparación automática.
Los servidores DNS y NTP se especifican en la sección
hostConfig
. En este ejemplo, estos servidores DNS y NTP son para los nodos del plano de control y los nodos trabajadores. Esto se debe a que los nodos trabajadores tienen direcciones IP estáticas. Si los nodos trabajadores recibieran sus direcciones IP de un servidor DHCP, estos servidores DNS y NTP serían solo para los nodos del plano de control.Las direcciones IP estáticas de los tres nodos del plano de control se especifican en la sección
network.controlPlaneIPBlock
del archivo de configuración del clúster de usuario. No hay necesidad de una dirección IP adicional en este bloque.El campo
masterNode.replicas
está configurado como3
.La VIP del plano de control y la VIP de entrada están en la misma VLAN que los nodos trabajadores y del plano de control.
Las VIP que se reservan para los Services de tipo LoadBalancer se especifican en la sección
loadBalancer.metalLB.addressPools
del archivo de configuración del clúster de usuario. Estas VIP están en la misma VLAN que los nodos trabajadores y los nodos del plano de control. El conjunto de VIP especificado en esta sección debe incluir la VIP de entrada y no la VIP del plano de control.El archivo de configuración del clúster de usuario no incluye una sección
vCenter
. Por lo tanto, el clúster de usuario usa los mismos recursos de vSphere que el clúster de administrador.
Valida tu archivo de configuración
Una vez que hayas completado el archivo de configuración de tu clúster de administrador, ejecuta gkectl check-config
para verificar que el archivo sea válido:
gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
ADMIN_CLUSTER_KUBECONFIG es la ruta de acceso del archivo kubeconfig del clúster de administrador.
USER_CLUSTER_CONFIG es la ruta de acceso del archivo de configuración del clúster de usuario.
Si el comando muestra algún mensaje de error, soluciona los problemas y vuelve a validar el archivo.
Si deseas omitir las validaciones que llevan más tiempo, pasa la marca --fast
.
Para omitir validaciones individuales, usa las marcas --skip-validation-xxx
. Para obtener más información sobre el comando check-config
, consulta Ejecuta verificaciones previas.
3. Importa imágenes de SO a vSphere y envía imágenes de contenedor a un registro privado (opcional)
Ejecuta gkectl prepare
si se cumple alguna de las siguientes condiciones:
El clúster de usuario está en un centro de datos de vSphere diferente al del clúster de administrador.
Tu clúster de usuario tiene un vCenter Server diferente al del clúster de administrador.
El clúster de usuario usa un registro de contenedor privado que es diferente del registro privado que usa el clúster de administrador.
gkectl prepare --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --bundle-path BUNDLE \ --user-cluster-config USER_CLUSTER_CONFIG
Reemplaza lo siguiente:
ADMIN_CLUSTER_KUBECONFIG: Es la ruta de acceso del archivo kubeconfig del clúster de administrador.
BUNDLE: Es la ruta de acceso del archivo del paquete. Este archivo se encuentra en tu estación de trabajo de administrador en
/var/lib/gke/bundles/
. Por ejemplo:/var/lib/gke/bundles/gke-onprem-vsphere-1.14.0-gke.421-full.tgz
USER_CLUSTER_CONFIG es la ruta de acceso del archivo de configuración del clúster de usuario.
4. Crear un clúster de usuario
Crear un clúster de usuario
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Ubica el archivo kubeconfig del clúster de usuario
El comando gkectl create cluster
crea un archivo kubeconfig llamado USER_CLUSTER_NAME-kubeconfig
en el directorio actual. Necesitarás este archivo kubeconfig más adelante para interactuar con tu clúster de usuario.
El archivo kubeconfig contiene el nombre de tu clúster de usuario. Para ver el nombre del clúster, puedes ejecutar el siguiente comando:
kubectl config get-clusters --kubeconfig USER_CLUSTER_KUBECONFIG
El resultado muestra el nombre del clúster. Por ejemplo:
NAME my-user-cluster
Si lo deseas, puedes cambiar el nombre y la ubicación de tu archivo kubeconfig.
5. Verifica que el clúster de usuario esté en ejecución
Verifica que el clúster de usuario esté en ejecución:
kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG
Reemplaza USER_CLUSTER_KUBECONFIG con la ruta de tu archivo kubeconfig del clúster de usuario.
En el resultado, se muestran los nodos del clúster de usuario. Por ejemplo:
cp-vm-1 Ready control-plane,master 18m cp-vm-2 Ready control-plane,master 18m cp-vm-3 Ready control-plane,master 18m worker-vm-1 Ready 6m7s worker-vm-2 Ready 6m6s worker-vm-3 Ready 6m14s
Actualiza un clúster de usuario
Sigue las instrucciones en Actualiza clústeres de Anthos alojados en VMware.
Borrar un clúster
Para borrar un clúster de usuario que tenga habilitado el plano de control V2, sigue las instrucciones en Borra un clúster de usuario.
Cuando borras un clúster de usuario que tiene habilitado el plano de control V2, el disco de datos se borra de forma automática.
Soluciona problemas
Consulta Soluciona problemas de creación y actualización de clústeres.