Realizar comprobaciones preparatorias

En este documento se proporciona información sobre las comprobaciones previas que se ejecutan al crear o actualizar un clúster en Google Distributed Cloud (solo software) para VMware.

Revisar las reglas de cortafuegos

En la versión 1.29 y posteriores, las comprobaciones previas del lado del servidor están habilitadas de forma predeterminada al crear, actualizar y mejorar clústeres. Las comprobaciones previas del lado del servidor requieren reglas de cortafuegos adicionales. En Reglas de firewall para clústeres de administrador, busca "Comprobaciones previas" y asegúrate de que todas las reglas de firewall necesarias estén configuradas.

Ejecutando gkectl check-config

Si tienes previsto crear clústeres con gkectl, ejecuta gkectl create-config para generar un archivo de configuración. El archivo de configuración controla la instalación: usted proporciona información sobre su entorno de vSphere, su red y su balanceador de carga, así como sobre el aspecto que quiere que tengan sus clústeres. Puedes generar un archivo de configuración antes o después de crear una estación de trabajo de administrador. Para que se superen determinadas comprobaciones, deben ejecutarse desde la estación de trabajo de administrador.

Una vez que haya modificado el archivo para adaptarlo a las necesidades de su entorno y sus clústeres, podrá usarlo para crear los clústeres en su entorno local.

Antes de crear clústeres con gkectl, ejecuta gkectl check-config para validar el archivo de configuración con varias comprobaciones previas. Si el comando devuelve algún mensaje FAILURE, corrige los problemas y vuelve a validar el archivo. Si la validación de una función devuelve algún mensaje de ADVERTENCIA, debes solucionar los problemas subyacentes para poder usar esa función.

Modos de comprobación preparatoria y omisión de validaciones

gkectl check-config tiene un modo predeterminado y un modo rápido:

  • En el modo predeterminado, el comando valida exhaustivamente cada campo. Además, el modo predeterminado crea máquinas virtuales (VMs) de vSphere temporales como parte de sus validaciones, lo que puede llevar más tiempo.

  • En el modo rápido, el comando omite las comprobaciones que crean máquinas virtuales de prueba y solo ejecuta las comprobaciones rápidas. Para habilitar el modo rápido, debes incluir la marca --fast.

Puedes omitir validaciones específicas si incluyes otras marcas, que se describen en gkectl check-config --help.

Tráfico entre la estación de trabajo de administrador y las máquinas virtuales de prueba

En el modo predeterminado, la comprobación previa crea máquinas virtuales de prueba para el clúster. Cada VM de prueba ejecuta un servidor HTTP que escucha en el puerto 443 y en los puertos de nodo que hayas especificado en el archivo de configuración.

Se asignan varias direcciones IP a las VMs de prueba. Si el archivo de configuración indica que los nodos del clúster obtendrán sus direcciones IP de un servidor DHCP, la comprobación previa al vuelo usará un servidor DHCP para asignar direcciones IP a las VMs de prueba. Si el archivo de configuración indica que se asignarán direcciones IP estáticas a los nodos del clúster, la comprobación previa asignará las direcciones IP estáticas que hayas especificado en los archivos de bloque de IP a las máquinas virtuales de prueba.

La comprobación previa, que se ejecuta en la estación de trabajo del administrador, envía solicitudes HTTP a las VMs de prueba mediante las distintas direcciones IP asignadas a las VMs. Las solicitudes se envían al puerto 443 y a los puertos de nodo que hayas especificado en el archivo de configuración.

¿Cuándo debo realizar comprobaciones preparatorias?

Es una práctica recomendada ejecutar comprobaciones previas al vuelo al principio y antes de intentar crear clústeres. Si realizas comprobaciones previas pronto, podrás confirmar que has configurado correctamente tu entorno de vSphere y tu red.

Si utilizas la versión 1.2.0-gke.6, ejecuta gkectl check-config dos veces:

  1. Ejecuta gkectl check-config --fast.

  2. Ejecuta gkectl prepare.

  3. Vuelve a ejecutar gkectl check-config sin la marca --fast.

El motivo por el que se ejecuta dos veces es que gkectl prepare sube la plantilla de VM de la imagen del SO del nodo del clúster a tu entorno de vSphere. Esa plantilla de VM debe estar en su sitio antes de ejecutar el conjunto completo de validaciones.

En la versión 1.2.1 y posteriores, el comando check-config sube la plantilla de VM, por lo que puedes ejecutar el conjunto completo de validaciones antes de ejecutar gkectl prepare:

  1. Ejecuta gkectl check-config sin la marca --fast.

  2. Ejecuta gkectl prepare.

Las comprobaciones previas validan los valores que ha proporcionado en el archivo. No es necesario rellenar todos los campos del archivo de configuración para ejecutar comprobaciones previas en el archivo. Puede validar el archivo de forma iterativa a medida que rellena sus campos. Por ejemplo, si solo quieres validar tu configuración de vCenter, puedes rellenar solo los campos vcenter y ejecutar comprobaciones en ellos.

Ten en cuenta que tu configuración se vuelve inmutable después de crear tus clústeres. Al ejecutar comprobaciones previas, puedes detectar y resolver problemas en tu configuración antes de crear los clústeres.

Conservar la máquina virtual de prueba para depurar

A partir de la versión 1.2.1, el comando gkectl check-config tiene una marca --cleanup.

Cuando gkectl check-config realiza un conjunto completo de validaciones, crea una máquina virtual de prueba y una clave SSH asociada. Si quieres conservar la VM de prueba y la clave SSH para depurar, define --cleanup como false.

El valor predeterminado de --cleanup es true.

Lista de comprobaciones preparatorias

Las comprobaciones previas validan cada campo del archivo de configuración. Estas son las comprobaciones actuales:

Categoría Descripción
Archivo de configuración

Valida de forma general que cada campo y especificación tenga el formato y los valores esperados.

Se ha omitido con la marca --skip-validation-config.

Salta la validación del campo proxy con la marca --skip-validation-proxy.

Internet

Valida el acceso a Internet a los dominios necesarios. Valida la configuración del proxy en función de dónde ejecutes gkectl.

Se ha omitido con la marca --skip-validation-internet.

Imagen de SO

Valida que existen imágenes del SO.

Se ha omitido con la marca --skip-validation-os-images.

Versión del SO Windows

Valida la versión del SO Windows.

Valida que la versión de Windows sea compatible al crear estaciones de trabajo de administrador con la herramienta de línea de comandos gkeadm. Ten en cuenta que, aunque la herramienta gkeadm está disponible para Windows 10, Windows Server 2019 y Linux, no hay ninguna comprobación previa para Linux. Esta validación se inicia a partir de la versión 1.4.1.

Versión de clúster

Valida que la versión del clúster de administrador, la versión del clúster de usuario y la versión de gkectl coincidan para la creación y la actualización.

Se ha omitido con la marca --skip-validation-cluster-version.

Estado del clúster

Valida que el clúster de administrador o de usuario esté en buen estado antes de la actualización:

  • Clúster de administrador: comprueba el servicio de Kubernetes, el estado de los componentes, los DaemonSets, las implementaciones, las máquinas y los pods.
  • Clúster de usuario: la comprobación incluye el servicio de Kubernetes, los endpoints de la API de clúster, los StatefulSets, los despliegues, los despliegues de máquinas, las máquinas y los pods.

Se ha omitido con la marca --skip-validation-cluster-health.

Entrada Comprueba si el clúster de usuarios tiene un objeto Istio Gateway antes de la actualización.
IP reservada

Valida que haya suficientes direcciones IP disponibles para crear y actualizar.

Se ha omitido con la marca --skip-validation-reserved-ips.

Google Cloud
ID del proyecto
[*].projectid
Valida los IDs de proyecto proporcionados en varios campos de la configuración. Si falta el ID del proyecto, se omite la validación.
Registrar una cuenta de servicio
registerserviceaccountkeypath
Valida que la cuenta de servicio tenga los roles de gestión de identidades y accesos necesarios. Valida que las APIs necesarias estén habilitadas.
Conectar cuenta de servicio
agentserviceaccountkeypath
Valida que la cuenta de servicio tenga los roles de gestión de identidades y accesos necesarios. Valida que las APIs necesarias estén habilitadas.
Cuenta de servicio de Google Cloud Observability
stackdriver.serviceaccountkeypath
Valida que la cuenta de servicio tenga los roles de gestión de identidades y accesos necesarios. Valida que las APIs necesarias estén habilitadas.
Se ha omitido con la marca --skip-validation-gcp.
Acceso a gcr.io/gke-on-prem-release Valida el acceso al registro de imágenes de contenedor alojado en Artifact Registry.

Se ha omitido por la marca --skip-validation-docker.

Registro de Docker
privateregistryconfig
Si se configura, valida el acceso al registro de Docker.

Se ha omitido con la marca --skip-validation-docker.

vCenter Comprueba que estén presentes todos los campos vcenter y también comprueba lo siguiente:
Credenciales
vcenter.credentials.[*]
Valida la autenticación en vCenter Server mediante las credenciales de usuario proporcionadas.
Versión de vSphere Valida que se admitan las versiones de vCenter y ESXi.
centro de datos normal
vcenter.datacenter
Valida que el centro de datos de vSphere exista.
Datastore
vcenter.datastore
Valida que el almacén de datos de vSphere exista.
Disco de datos
vcenter.datadisk
Valida que el disco de máquina virtual (VMDK) de vSphere no exista ya en vSphere.
Grupo de recursos
vcenter.resourcepool
Valida que el grupo de recursos de vSphere exista.
Red
vcenter.network
Valida que la red de vSphere exista.

Se ha omitido con la marca --skip-validation-infra.

Almacenamiento
Controlador de CSI para vSphere Valida que el controlador de CSI para vSphere esté habilitado si hay PersistentVolumes de vSphere intree o CSI. Es decir, en el archivo de configuración del clúster de usuarios, storage.vSphereCSIDisabled no tiene el valor true.
Parámetros de StorageClass

Valida que StorageClass no tenga ninguno de los siguientes parámetros no admitidos:

  • hostfailurestotolerate
  • forceprovisioning
  • cachereservation
  • diskstripes
  • objectspacereservation
  • iopslimit
  • diskformat

Si tu clúster tiene StorageClasses con alguno de los parámetros anteriores, es posible que tengas que migrar tus volúmenes.

Para obtener más información, consulta el artículo sobre las consideraciones para migrar volúmenes de vSphere en el árbol y la sección de problemas conocidos sobre las actualizaciones en la versión 1.15.

Anotaciones en PersistentVolume y PersistentVolumeClaims de vSphere insertados creados de forma estática

Antes de la actualización, comprueba las anotaciones de los volúmenes persistentes de vSphere en el árbol y las reclamaciones de volúmenes persistentes de vSphere:

  • Los PersistentVolumes de vSphere creados de forma estática tienen la anotación pv.kubernetes.io/provisioned-by: kubernetes.io/vsphere-volume.
  • Los PersistentVolumeClaims de vSphere creados de forma estática tienen la anotación volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume y volume.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume.

Si tu clúster tiene PersistentVolumes o PersistentVolumeClaims de vSphere en el árbol sin estas anotaciones, debes anotar los PersistentVolumes y los PersistentVolumeClaims antes de continuar. Consulta las consideraciones para migrar volúmenes de vSphere en el árbol.

Carga de trabajo de CSI

Valida que el clúster pueda ejecutar correctamente una carga de trabajo que use un PersistentVolume aprovisionado dinámicamente creado mediante el controlador de CSI para vSphere.

Esta comprobación se ejecuta durante la actualización y solo si hay volúmenes de vSphere en el árbol y no hay volúmenes de CSI de vSphere.

Esta comprobación:

  1. Comprueba que no queden recursos persistentes de ejecuciones anteriores de la validación.
  2. Busca o crea un StorageClass con el campo provisioner definido como el campo provisioner definido como "csi.vsphere.vmware.com".
    1. En los clústeres de usuarios, selecciona el StorageClass de CSI. standard-rwo
    2. En los clústeres de administrador, busca un StorageClass con el campo provisioner definido como csi.vsphere.vmware.com. Si no hay ninguna StorageClass de CSI en el clúster, la prueba crea temporalmente una y la usa en la comprobación.
  3. Crea un objeto PersistentVolumeClaim en el espacio de nombres predeterminado con el objeto StorageClass encontrado o creado en el paso anterior y espera a que el objeto PersistentVolume creado dinámicamente esté en la fase Bound.
  4. Crea un trabajo de escritura en el espacio de nombres predeterminado montando el PersistentVolume creado anteriormente. Se programa un Pod de escritura y, al iniciarse, escribe una cadena en un archivo del sistema de archivos montado.
  5. Elimina el trabajo de escritor y su pod asociado.
  6. Crea un trabajo de lector en el espacio de nombres predeterminado montando el PersistentVolume creado anteriormente. Se programa un pod de lectura y, al iniciarse, lee el archivo escrito por el pod de escritura para asegurarse de que los datos escritos por el pod de escritura se leen correctamente.
  7. Elimina el trabajo del lector y su pod asociado.
  8. Elimina el PersistentVolumeClaim, por lo que también se elimina el PersistentVolume.
  9. Elimina StorageClass si se ha creado durante la prueba.

Hosts de grupos antiafines

Valida que el número de hosts físicos de vCenter sea al menos tres si antiAffinityGroups está habilitado.

Para inhabilitar antiAffinityGroups en un clúster, consulta antiAffinityGroups.enabled y esta nota de la versión.

Se ha omitido con la marca --skip-validation-infra.

Balanceador de carga

Valida la configuración del balanceo de carga:

  • Si el modo de balanceo de carga está integrado (lbmode: Integrated), valida que todos los campos bigip estén presentes en las especificaciones admincluster y usercluster.
  • Si el modo de balanceo de carga es manual (lbmode: Manual), valida que todos los campos manuallbspec estén presentes en las especificaciones de admincluster y usercluster.
Balanceo de carga integrado
bigip.credentials.[*] Valida tus credenciales de F5 BIG-IP.
bigip.partition Valida que la partición proporcionada exista.
Rol de usuario de F5 BIG-IP Valida que el usuario de F5 BIG-IP proporcionado tenga el rol de administrador o administrador de recursos.
bigip.vips.[*] Valida los VIPs proporcionados.

Se ha omitido con las marcas --fast o --skip-validation-load-balancer.

Balanceo de carga manual
Configuración de red Valida las IPs virtuales, las IPs de los nodos, etc.

Se ha omitido con las marcas --fast o --skip-validation-load-balancer.

[*].manuallbspec.[*] Valida los puertos de nodo proporcionados.
Se ha omitido con la marca --skip-validation-load-balancer.
Redes

Valida que los intervalos CIDR, las IPs virtuales y las IPs estáticas proporcionados (si se han configurado) estén disponibles. Comprueba que las direcciones IP no se solapen.

Se ha omitido con la marca --skip-validation-net-config.

DNS

Valida que el servidor DNS proporcionado esté disponible.

Se ha omitido con la marca --skip-validation-dns.

NTP

Valida que el servidor de protocolo de tiempo de red (NTP) proporcionado esté disponible.

Se ha omitido con la marca --skip-validation-tod.

IP virtuales

Hace ping a las IPs virtuales proporcionadas. Esta comprobación se realiza correctamente si el ping falla, lo que indica que el VIP esperado aún no se ha usado.

Se ha omitido con la marca --skip-validation-vips.

IPs de nodo

Hace ping a las direcciones IP de los nodos proporcionadas. Esta comprobación se realiza correctamente si el ping falla, lo que indica que la IP del nodo esperada aún no se ha usado.

Se ha omitido con la marca --skip-validation-node-ips.

Resultados de la comprobación preparatoria

Las comprobaciones previas pueden devolver los siguientes resultados:

SE HA REALIZADO CORRECTAMENTE
El campo y su valor han superado la comprobación.
ERROR
El campo o su valor no han superado la comprobación. Si una comprobación devuelve un mensaje FAILURE, soluciona los problemas y vuelve a validar el archivo.
SKIPPED

Se ha omitido la comprobación, probablemente porque no es relevante para tu configuración. Por ejemplo, si usas un servidor DHCP, se omiten las comprobaciones de las IPs de DNS y de nodos, que solo son relevantes para una configuración de IP estática.

Si incluyes una marca que omite una validación, la comprobación omitida no devuelve un resultado SKIPPED. En su lugar, la validación no se ejecuta y no aparece en la salida del comando.

DESCONOCIDO

El salto ha devuelto un código distinto de cero. Puedes considerar que los resultados UNKNOWN son comprobaciones fallidas. UNKNOWN suele indicar que no se ha podido ejecutar alguna comprobación del paquete del sistema, como nslookup o gcloud.

Próximamente

En una próxima versión se añadirán las siguientes comprobaciones previas:

  • Servidor NTP

Realizar comprobaciones preparatorias

Para realizar comprobaciones preparatorias, ejecuta el siguiente comando:

gkectl check-config --config [CONFIG]

donde [CONFIG] es la ruta a tu archivo de configuración

Ejecución en modo rápido

Si lo prefieres, puedes ejecutar comprobaciones previas en "modo rápido", que omite las validaciones que crean VMs de prueba temporales, como las validaciones de IP de nodo y VIP de balanceo de carga. Para ello, pasa --fast:

gkectl check-config --config [CONFIG] --fast

Omitir validaciones específicas

Puedes incluir marcas para omitir de forma granular validaciones específicas, como DNS, proxy y redes. Cada marca de omisión va precedida de --skip-[VALIDATION].

Para obtener información sobre las marcas de omisión disponibles, ejecuta el siguiente comando:

gkectl check-config --help

Por ejemplo, para omitir las validaciones del balanceador de carga:

gkectl check-config --config my-config.yaml --skip-validation-load-balancer 

Cancelar comprobaciones preparatorias

Si has empezado a ejecutar comprobaciones previas y quieres cancelarlas, pulsa CTRL + C dos veces. Si una comprobación previa ha creado una VM de prueba, al cancelar también se debería limpiar la VM automáticamente.

Eliminar una VM de prueba

Si queda una máquina virtual de prueba después de completar las comprobaciones previas, puedes eliminarla de vCenter. Una VM de prueba tiene un nombre como este:

check-config-[dhcp|static]-[random number]

Para eliminar la VM, sigue estos pasos:

  1. Haz clic con el botón derecho en la máquina virtual y selecciona Encendido > Apagar.

  2. Una vez que la máquina virtual se haya apagado, vuelve a hacer clic con el botón derecho en ella y selecciona Eliminar del disco.

Ejemplo

A continuación, se muestra un ejemplo del resultado del comando. En este ejemplo, la configuración que se está validando usa el modo de balanceo de carga integrado y las IPs estáticas sin un registro de Docker externo:

- Validation Category: Config Check
    - [SUCCESS] Config

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: GCP
    - [SUCCESS] GCP Service
    - [SUCCESS] GCP Service Account

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

- Validation Category: vCenter
    - [SUCCESS] Credentials
    - [SUCCESS] Version
    - [SUCCESS] Datacenter
    - [SUCCESS] Datastore
    - [SUCCESS] Data Disk
    - [SUCCESS] Resource Pool
    - [SUCCESS] Network
    - [SUCCESS] VSphere CSI Driver

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster F5 (credentials, partition and user role)
    - [SUCCESS] User Cluster F5 (credentials, partition and user role)

- Validation Category: Network Configuration
    - [SUCCESS] CIDR, VIP and static IP (availability and overlapping)

- Validation Category: DNS
    - [SUCCESS] DNS (availability)

- Validation Category: VIPs
    - [SUCCESS] ping (availability)

- Validation Category: Node IPs
    - [SUCCESS] ping (availability)

Now running slow validation checks. ...

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with admin cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere.
Creating test VMs with user cluster configuration...  DONE
Waiting to get IP addresses from test VMs...  DONE
Waiting for test VMs to become ready...  DONE

- Validation Category: F5 BIG-IP
    - [SUCCESS] Admin Cluster VIP and NodeIP
    - [SUCCESS] Admin Cluster F5 Access
    - [SUCCESS] User Cluster VIP and NodeIP
    - [SUCCESS] User Cluster F5 Access

- Validation Category: Internet Access
    - [SUCCESS] Internet access to required domains

- Validation Category: vCenter on test VMs
    - [SUCCESS] Test VM: VCenter Access and Permission

- Validation Category: DNS on test VMs
    - [SUCCESS] Test VM: DNS Availability

- Validation Category: TOD on test VMs
    - [SUCCESS] Test VM: TOD Availability

- Validation Category: Docker Registry
    - [SUCCESS] gcr.io/gke-on-prem-release access

Deleting test VMs with admin cluster configuration...  DONE
Deleting test VMs with user cluster configuration...  DONE

Problemas conocidos

  • En la versión 1.3.0-gke.16:

    Debes realizar comprobaciones de validación rápidas, gkectl check-config --fast, para tus comprobaciones preparatorias si se dan las dos condiciones siguientes:

    1. Has configurado Google Distributed Cloud para que use un proxy.

    2. Has instalado uno de los siguientes paquetes:

      • El /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz paquete de la página Descargas.
      • El /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz paquete de la estación de trabajo de administrador.

    Solo puedes ejecutar el conjunto completo de validación si has instalado el paquete completo. Por ejemplo: /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz

  • En la versión 1.2.0-gke.6:

    Si usas grupos de recursos anidados o el grupo de recursos predeterminado, gkectl check-config falla cuando intentas hacer un conjunto completo de validaciones. Sin embargo, puedes hacer un conjunto más pequeño de validaciones pasando la marca --fast.

    gkectl check-config --config [CONFIG] --fast

Siguientes pasos