Crea un clúster de usuario (Plano de control V2)

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:

  1. 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.
  2. 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.
  3. Importa imágenes de SO a vSphere y envía imágenes de contenedor al
    registro privado si corresponde.
    Ejecuta gkectl prepare.
  4. Crea un clúster de usuario
    Ejecuta gkectl create cluster para crear un clúster como se especifica en el archivo de configuración.
  5. 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 o vCenter.storagePolicyName
  • vCenter.cluster o vCenter.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:

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 de gkeConnect.projectID y cloudAuditLogging.projectID.

  • La región de Google Cloud configurada en stackdriver.clusterLocation debe ser la misma que la región configurada en cloudAuditLogging.clusterLocation. Además, si gkeOnPremAPI.enabled es true, se debe configurar la misma región en gkeOnPremAPI.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 como false. Si no deseas inscribir ningún clúster en el proyecto, inhabilita gkeonprem.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 de gkeConnect.projectID y stackdriver.projectID.

  • La región de Google Cloud configurada en cloudAuditLogging.clusterLocation debe ser la misma que la región configurada en stackdriver.clusterLocation. Además, si gkeOnPremAPI.enabled es true, se debe configurar la misma región en gkeOnPremAPI.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 como 3.

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

¿Qué sigue?