Ejecutando comprobaciones preliminares

En esta página, se explica cómo ejecutar comprobaciones preliminares en tu archivo de configuración de GKE en VMware.

Descripción general

Durante la instalación, ejecuta gkectl create-config para generar un archivo de configuración de GKE en VMware. 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, 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 GKE en VMware 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 GKE on VMware versión 1.2.1 y posteriores, el comando check-config sube la plantilla de VM para que puedas 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 de GKE en VMware se vuelve inmutable después de que creas 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 de GKE en VMware, 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 observabilidad de Google Cloud
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 al acceso gcr.io/gke-on-prem-release Valida el acceso al registro de imágenes de contenedor de GKE on VMware 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 se admitan las versiones de vCenter y ESXi.
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 o intree. 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 compatibles:

  • errordehostalternativo
  • aprovisionamiento forzado
  • reserva de caché
  • tiras de discos
  • reserva del espacio de objetos
  • límite iops
  • formato de disco

Si tu clúster tiene StorageClasses con cualquiera de los parámetros anteriores, eso podría significar que necesitas migrar tus volúmenes.

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

Anotaciones en PersistentVolumes y PersistentVolumeClaims de vSphere creados de forma estática

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

  • Los PersistentVolumes de árbol de vSphere creados de forma estática tienen la anotación pv.kubernetes.io/provisioned-by: kubernetes.io/vsphere-volume.
  • Las PersistentVolumesClaims de vSphere creadas 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 el clúster tiene PersistentVolumes de vSphere en árbol o PersistentVolumeClaims de vSphere sin estas anotaciones, debes anotar las PersistentVolumes y las PersistentVolumeClaims antes de continuar. Consulta Consideraciones para la migración de volúmenes de vSphere en árbol.

Carga de trabajo de CSI

Valida que el clúster pueda ejecutar de forma correcta una carga de trabajo que use un PersistentVolume aprovisionado de forma dinámica y que se haya creado a través del controlador de CSI de vSphere.

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

Esta verificación:

  1. Comprueba que no queden recursos restantes de ejecuciones anteriores de la validación.
  2. Busca o crea una StorageClass con el campo aprovisionador configurado como “csi.vsphere.vmware.com”.
    1. En los clústeres de usuario, selecciona la StorageClass standard-rwo de CSI.
    2. En los clústeres de administrador, encuentra una StorageClass con el campo aprovisionador configurado como csi.vsphere.vmware.com. Si no existe esa StorageClass en el clúster, la prueba crea de forma temporal una StorageClass de CSI nueva y la usa en la verificación.
  3. Crea una PersistentVolumeClaim en el espacio de nombres predeterminado mediante 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 que se creó antes. Se programa un Pod de escritor y, durante el inicio, escribe una string en un archivo en el sistema de archivos activado.
  5. Elimina el objeto Job de escritor y su Pod asociado.
  6. Crea un trabajo de lector en el espacio de nombres predeterminado que activa el PersistentVolume que se creó antes. Se programa un Pod de lector y, en el inicio, lee el archivo que escribe el Pod de escritor y se asegura de que los datos que escribe el Pod de escritor se lean de forma correcta.
  7. Elimina el objeto Job de lector y su Pod asociado.
  8. Se quita la PersistentVolumeClaim, y, como resultado, también se borra el PersistentVolume.
  9. Elimina 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 VIP, las IP de nodo, 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 verificació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.

UNKNOWN

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]

En el ejemplo anterior, [CONFIG] es la ruta de acceso al archivo de configuración de GKE on VMware.

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. De forma opcional, consulta la referencia de gkectl check-config:

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 GKE en VMware 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?