Ejecutando comprobaciones preliminares

En este documento, se proporciona información sobre las verificaciones previas que se ejecutan cuando creas o actualizas un clúster en Google Distributed Cloud (solo software) para VMware.

Revisa las reglas de firewall

En la versión 1.29 y versiones posteriores, las verificaciones previas del servidor están habilitadas de forma predeterminada cuando creas, actualizas y mejoras clústeres. Las verificaciones previas al vuelo del servidor requieren reglas de firewall adicionales. En Reglas de firewall para clústeres de administrador, busca "Verificaciones previas al vuelo" y asegúrate de que todas las reglas de firewall requeridas estén configuradas.

Ejecuta gkectl check-config

Si planeas 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: debes proporcionar información sobre el entorno de vSphere, la red y el balanceador de cargas, y cómo deseas que se vean los clústeres. Puedes generar un archivo de configuración antes o después de crear una estación de trabajo de administrador. Para que ciertas comprobaciones se aprueben, deben ejecutarse desde la estación de trabajo de administrador.

Una vez que modificaste el archivo a fin de satisfacer las necesidades del entorno y los clústeres, usa el archivo para crear los clústeres en el 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 muestra algún mensaje de FAILURE, soluciona los problemas y vuelve a validar el archivo. Si cierta validación de una función muestra algún mensaje de ADVERTENCIA, debes corregir los problemas subyacentes antes de usar esta característica.

Modos de comprobaciones previas y omisión de validaciones

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

  • En el modo predeterminado, el comando valida por completo cada campo. Además, el modo predeterminado crea máquinas virtuales (VM) temporales de vSphere como parte de su validación, lo que puede llevar más tiempo.

  • En el modo rápido, el comando omite las comprobaciones que crean VM de prueba y ejecuta solo las comprobaciones rápidas. Para habilitar el modo rápido, pasa la marca --fast.

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

Tráfico entre la estación de trabajo de administrador y las VM de prueba

En el modo predeterminado, la verificación de comprobación previa crea VM 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 especificaste en el archivo de configuración.

Se asignan varias direcciones IP a las VM de prueba. Si el archivo de configuración indica que los nodos del clúster obtendrán las direcciones IP de un servidor DHCP, la comprobación previa usa un servidor DHCP para asignar direcciones IP a las VM de prueba. Si el archivo de configuración indica que a los nodos del clúster se les asignarán direcciones IP estáticas, la comprobación previa asignará las direcciones IP estáticas que especificaste en los archivos de bloque de IP a las VM de prueba.

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

¿Cuándo debo ejecutar comprobaciones previas?

Se recomienda ejecutar comprobaciones previas antes de intentar crear clústeres. Ejecutar las comprobaciones previas con anticipación puede ayudarte a confirmar si configuraste el entorno de vSphere y la red de manera correcta.

Si usas 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.

La razón por la que se ejecuta dos veces es que gkectl prepare sube la plantilla de VM para la imagen de SO del nodo del clúster al entorno de vSphere. Se debe implementar la plantilla de VM 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 proporcionaste al archivo. No es necesario que llenes todos los campos del archivo de configuración para ejecutar comprobaciones previas en el archivo. Puedes validar el archivo de forma iterativa a medida que propagas los campos. Por ejemplo, si solo deseas validar la configuración de vCenter, puedes completar solo los campos vcenter y ejecutar comprobaciones.

Ten en cuenta que la configuración se vuelve inmutable después de crear los clústeres. La ejecución de las comprobaciones previas te ayuda a descubrir y resolver problemas en la configuración antes de crear los clústeres.

Preserva la VM de prueba para la depuración

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 VM de prueba y una clave SSH asociada. Si deseas conservar la VM de prueba y la clave SSH para fines de depuración, configura --cleanup como falso.

El valor predeterminado de --cleanup es verdadero.

Lista de comprobaciones previas

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

Categoría Descripción
Archivo de configuración

Por lo general, valida que cada campo y especificación tenga el formato y los valores esperados.

Se omitió con la marca --skip-validation-config.

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

Internet

Valida el acceso a Internet a los dominios obligatorios. Valida la configuración del proxy según dónde ejecutas gkectl.

Se omite con la marca --skip-validation-internet.

Imagen de SO

Valida que existan imágenes de SO.

Se omite con la marca --skip-validation-os-images.

Versión del SO de Windows

Valida la versión del SO Windows.

Valida que la versión de Windows sea compatible cuando se crean estaciones de trabajo de administrador con la herramienta de línea de comandos de gkeadm. Ten en cuenta que, si bien la herramienta de gkeadm está disponible en Windows 10, Windows Server 2019 y Linux, no hay comprobación previa para Linux. Esta validación comienza con la versión 1.4.1.

Versión del 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 actualización.

Se omite con la marca --skip-validation-cluster-version.

Estado del clúster

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

  • Clúster de administrador: La verificación incluye el servicio de Kubernetes, el estado del componente, DaemonSets, implementaciones, máquinas y Pods.
  • Clúster del usuario: la verificación incluye el servicio de Kubernetes, los extremos de la API del clúster, StatefulSets, implementaciones, implementaciones de máquinas, máquinas y pods.

Se omite con la marca --skip-validation-cluster-health.

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

Valida que haya suficientes direcciones IP disponibles para la creación y actualización.

Se omite con la marca --skip-validation-reserved-ips.

Google Cloud
ID del proyecto
[*].projectid
Valida los ID del proyecto que se proporcionan a varios campos en la configuración. Si falta el ID del proyecto, se omite la validación.
Cuenta de servicio de registro
registerserviceaccountkeypath
Valida que la cuenta de servicio tenga las funciones de IAM necesarias. Valida que las API requeridas estén habilitadas.
Cuenta de servicio de conexión
agentserviceaccountkeypath
Valida que la cuenta de servicio tenga las funciones de IAM necesarias. Valida que las API requeridas estén habilitadas.
Cuenta de servicio de Google Cloud Observability
stackdriver.serviceaccountkeypath
Valida que la cuenta de servicio tenga las funciones de IAM necesarias. Valida que las API requeridas estén habilitadas.
Se omite 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 Container Registry.

Se omite con la marca --skip-validation-docker.

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

Se omite con la marca --skip-validation-docker.

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

Se omite con la marca --skip-validation-infra.

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

Valida que la 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 cualquiera de los parámetros anteriores, es posible que debas migrar tus volúmenes.

Para obtener más información, consulta Consideraciones para la migración de volúmenes de vSphere integrados en el árbol y la sección de problemas conocidos sobre las actualizaciones a la versión 1.15.

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

Antes de la actualización, se verifican las anotaciones en PersistentVolumes en el árbol de vSphere y PersistentVolumeClaims de vSphere:

  • Los PersistentVolumes en el árbol 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 las anotaciones 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 PersistentVolumeClaims antes de continuar. Consulta Consideraciones para la migración de 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 de forma dinámica creado a través del controlador de CSI de vSphere.

Estas verificaciones se ejecutan durante la actualización y solo si hay volúmenes de vSphere en el árbol y no volúmenes de CSI de vSphere.

Esta verificación hace lo siguiente:

  1. Verifica que no haya recursos residuales de ejecuciones anteriores de la validación.
  2. Busca o crea una StorageClass con el campo del aprovisionador configurado en “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, encuentra una StorageClass con el campo del aprovisionador configurado en csi.vsphere.vmware.com. Si no hay una StorageClass de este tipo en el clúster, la prueba crea temporalmente una nueva StorageClass de CSI y la usa en la verificación.
  3. Crea un PersistentVolumeClaim en el espacio de nombres predeterminado con la StorageClass que se encontró o creó en el paso anterior y espera a que el PersistentVolume creado de forma dinámica esté en la fase Bound.
  4. Crea un trabajo de escritor en el espacio de nombres predeterminado que activa el PersistentVolume creado anteriormente. Se programa un Pod de escritor y, durante el inicio, escribe una cadena en un archivo del sistema de archivos activado.
  5. Desmonta el trabajo de escritor y su Pod asociado.
  6. Crea un trabajo de lectura en el espacio de nombres predeterminado que activa el PersistentVolume creado anteriormente. Se programa un Pod de lector y, durante el inicio, lee el archivo que escribió el Pod de escritor, lo que garantiza que los datos que escribió el Pod de escritor se lean correctamente.
  7. Desmonta el trabajo del lector y su Pod asociado.
  8. Desmonta el PersistentVolumeClaim, por lo que también se borrará el PersistentVolume.
  9. Desmonta la StorageClass si se creó durante la prueba.

Hosts para grupos antiafinidad

Valida que la cantidad de hosts de vCenter físicos sea de 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 omite con la marca --skip-validation-infra.

Balanceador de cargas

Valida la configuración del balanceo de cargas:

  • Si el modo de balanceo de cargas es integrado (lbmode: Integrated), valida que todos los campos bigip estén presentes en las especificaciones admincluster y usercluster.
  • Si el modo de balanceo de cargas es manual (lbmode: Manual), valida que todos los campos manuallbspec estén presentes en las especificaciones admincluster y usercluster.
Balanceo de cargas integrado
bigip.credentials.[*] Valida las credenciales de BIG-IP de F5.
bigip.partition Valida que la partición proporcionada exista.
Función del usuario de BIG-IP de F5 Valida que el usuario de BIG-IP de F5 proporcionado contenga la función de administrador o administrador de recursos.
bigip.vips.[*] Valida las VIP proporcionadas.

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

Balanceo de cargas manual
Configuración de redes Valida las IP de los nodos, las VIP, etcétera.

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

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

Valida que los rangos CIDR, las IP estáticas y las VIP proporcionados (si están configurados) estén disponibles. Comprueba que las direcciones IP no se superpongan.

Se omite con la marca --skip-validation-net-config.

DNS

Valida que el servidor DNS proporcionado esté disponible.

Se omite con la marca --skip-validation-dns.

NTP

Valida que el servidor del protocolo NTP proporcionado esté disponible.

Se omite con la marca --skip-validation-tod.

VIP

Hace ping a las VIP proporcionadas. Esta comprobación es exitosa si el ping falla, lo que indica que la VIP ya no está en uso.

Se omite con la marca --skip-validation-vips.

IP de nodo

Hace ping a las direcciones IP de nodo proporcionadas. Esta comprobación es exitosa si el ping falla, lo que indica que la IP del nodo ya no está en uso.

Se omite con la marca --skip-validation-node-ips.

Resultados de las comprobaciones previas

Las comprobaciones previas pueden mostrar los siguientes resultados:

SUCCESS
El campo y su valor aprobaron la comprobación.
FAILURE
El campo o su valor no aprobaron la comprobación. Si una comprobación muestra un mensaje FAILURE, corrige los problemas y vuelve a validar el archivo.
SKIPPED

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

Si pasas una marca que omite una validación, la comprobación que se omite no muestra el resultado SKIPPED. La validación no se ejecuta y no aparece en el resultado del comando.

DESCONOCIDO

La omisión mostró un código distinto de cero. Puedes considerar que los resultados UNKNOWN son comprobaciones fallidas. Por lo general, UNKNOWN indica que la comprobación no pudo ejecutar algún paquete del sistema, como nslookup o gcloud.

Próximamente

Las siguientes comprobaciones previas se agregarán en una versión futura:

  • Servidor NTP

Ejecuta comprobaciones previas

Para ejecutar las comprobaciones previas, ejecuta el siguiente comando:

gkectl check-config --config [CONFIG]

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

Ejecuta en modo rápido

Si lo prefieres, puedes ejecutar comprobaciones previas en “modo rápido”, que omite las validaciones que crean las VM de prueba temporales, como las validaciones de IP de nodo y VIP del balanceo de cargas. Para hacerlo, pasa --fast:

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

Omite validaciones específicas

Puedes pasar marcas para omitir validaciones detalladas, como DNS, proxy y redes. Cada marca de omisión tiene el prefijo --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 cargas, haz lo siguiente:

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

Cancela comprobaciones previas

Si comenzaste a ejecutar comprobaciones previas y deseas cancelarlas, presiona CTRL + C dos veces. Si una comprobación previa creó una VM de prueba, la cancelación también debería quitar la VM de forma automática.

Quita una VM de prueba

Si queda una VM de prueba después de que se completan las comprobaciones previas, puedes borrar la VM de vCenter. Una VM de prueba tiene un nombre como el siguiente:

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

Para borrar la VM, haz lo siguiente:

  1. Haz clic con el botón derecho en la VM y, luego, en Power > Power Off.

  2. Una vez que la VM se haya apagado, haz clic con el botón derecho en la VM y selecciona Delete from disk.

Ejemplo

A continuación, se muestra un ejemplo del resultado del comando. En este ejemplo, la configuración que se valida usa el modo de balanceo de cargas integrado y las direcciones IP 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

  • Para la versión 1.3.0-gke.16, considera lo siguiente:

    Debes ejecutar comprobaciones de validación rápidas, gkectl check-config --fast, para las comprobaciones previas si se aplican las siguientes condiciones:

    1. Configuraste Google Distributed Cloud para usar un proxy.

    2. Instalaste uno de los siguientes paquetes:

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

    Puedes ejecutar el conjunto completo de validación solo si instalaste el paquete completo. Por ejemplo: /var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz

  • Para la versión 1.2.0-gke.6, haz lo siguiente:

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

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

¿Qué sigue?