Consulta la documentación de una versión anterior de GKE On-Prem. Consulta la documentación más reciente.

Soluciona problemas

En las secciones siguientes, se describen los problemas que puedes encontrar cuando usas GKE On-Prem y cómo resolverlos.

Antes de comenzar

Revisa las siguientes secciones antes de comenzar a solucionar problemas.

Diagnostica problemas de clústeres mediante gkectl

Usa los comandos gkectl diagnose para identificar los problemas de clústeres y compartir la información de un clúster con Google. Consulta Diagnostica problemas del clúster.

Ejecuta comandos de gkectl de forma detallada

-v5

Registra errores de gkectl en stderr

--alsologtostderr

Ubica los registros de gkectl en la estación de trabajo del administrador

Incluso si no pasas sus marcas de depuración, puedes ver los registros gkectl en el siguiente directorio de la estación de trabajo del administrador:

/home/ubuntu/.config/syllogi/logs

Ubica los registros de la API del clúster en el clúster del administrador

Si una VM no se inicia después de que se inicie el plano de control del administrador, puedes intentar depurar esto mediante la inspección de los registros de los controladores de la API del clúster en el clúster de administrador:

  1. Encuentra el nombre del pod de controladores de la API del clúster en el espacio de nombres kube-system, en el que [ADMIN_CLUSTER_KUBECONFIG] es la ruta de acceso al archivo kubeconfig del clúster del administrador:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
  2. Abre los registros del pod, en los que [POD_NAME] es el nombre del pod. De manera opcional, usa grep o una herramienta similar para buscar errores:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager

Instalación

Depura los problemas de BIG-IP de F5 mediante kubeconfig del nodo de la instancia principal del clúster de administrador

Después de una instalación, GKE On-Prem genera un archivo kubeconfig llamado internal-cluster-kubeconfig-debug en el directorio principal de tu estación de trabajo del administrador. Este archivo kubeconfig es idéntico al kubeconfig de tu clúster del administrador, a excepción de que apunta directamente al nodo principal del clúster del administrador, en el que se ejecuta el plano de control del administrador. Puedes usar el archivo internal-cluster-kubeconfig-debug para depurar los problemas de BIG-IP de F5.

La validación de gkectl check-config falla: no se pueden encontrar las particiones de BIG-IP de F5

Síntomas

La validación falla porque las particiones de BIG-IP de F5 no se pueden encontrar, aunque existen.

Causas posibles

Un problema con la API de BIG-IP de F5 puede hacer que la validación falle.

Solución

Vuelve a ejecutar gkectl check-config.

gkectl prepare --validate-attestations falla: no se puede validar la certificación de compilación

Síntomas

La ejecución de gkectl prepare con la marca opcional --validate-attestations muestra el siguiente error:

could not validate build attestation for gcr.io/gke-on-prem-release/.../...: VIOLATES_POLICY
Causas posibles

Es posible que no exista una certificación para las imágenes afectadas.

Solución

Vuelve a descargar y a implementar el OVA de la estación de trabajo del administrador, como se indica en la sección Crea una estación de trabajo del administrador. Si el problema persiste, comunícate con Google para obtener asistencia.

Depura mediante los registros del clúster de arranque

Durante la instalación, GKE On-Prem crea un clúster de arranque temporal. Después de una instalación exitosa, GKE On-Prem borra el clúster de arranque, por lo que solo tienes tu clúster del administrador y de usuarios. Por lo general, no deberías tener ningún motivo para interactuar con este clúster.

Si algo sale mal durante una instalación y pasas --cleanup-external-cluster=false a gkectl create cluster, puede que te resulte útil depurar mediante los registros del clúster de arranque. Puedes buscar el pod y, luego, obtener sus registros:

kubectl --kubeconfig /home/ubuntu/.kube/kind-config-gkectl get pods -n kube-system
kubectl --kubeconfig /home/ubuntu/.kube/kind-config-gkectl -n kube-system get logs [POD_NAME]

Estación de trabajo del administrador

AccessDeniedException mientras se descarga el OVA

Síntomas

Si intentas descargar el OVA y la firma de la estación de trabajo del administrador, se muestra el siguiente error:

AccessDeniedException: 403 whitelisted-service-account@project.iam.gserviceaccount.com does not have storage.objects.list access to gke-on-prem-release
Causas posibles

Tu cuenta de servicio que se encuentra en la lista blanca no está activada.

Solución

Asegúrate de haber activado tu cuenta de servicio incluida en la lista blanca. Si el problema persiste, comunícate con Google para obtener asistencia.

openssl no puede validar el OVA de la estación de trabajo del administrador

Síntomas

Ejecutar openssl dgst en el archivo OVA de la estación de trabajo del administrador no muestra el mensaje Verified OK

Causas posibles

Hay un problema en el archivo OVA que impide que la validación se realice con éxito.

Solución

Intenta volver a descargar y a implementar el OVA de la estación de trabajo del administrador, como se indica en Descarga el OVA de la estación de trabajo del administrador. Si el problema persiste, comunícate con Google para obtener asistencia.

Connect

No se puede registrar un clúster de usuario

Si tienes problemas para registrar los clústeres de usuarios, comunícate con Google para obtener asistencia.

El registro del clúster creado durante la etapa Alfa se canceló.

Consulta Registra un clúster de usuarios en la documentación de Connect.

También puedes elegir borrar y volver a crear el clúster.

Storage

No se puede conectar el volumen

Síntomas

El resultado de gkectl diagnose cluster tiene el siguiente aspecto:

Checking cluster object...PASS
Checking machine objects...PASS
Checking control plane pods...PASS
Checking gke-connect pods...PASS
Checking kube-system pods...PASS
Checking gke-system pods...PASS
Checking storage...FAIL
    PersistentVolume pvc-776459c3-d350-11e9-9db8-e297f465bc84: virtual disk "[datastore_nfs] kubevols/kubernetes-dynamic-pvc-776459c3-d350-11e9-9db8-e297f465bc84.vmdk" IS attached to machine "gsl-test-user-9b46dbf9b-9wdj7" but IS NOT listed in the Node.Status
1 storage errors

Uno o más pods están atascados en el estado ContainerCreating con una advertencia como la que se muestra a continuación:

Events:
  Type     Reason              Age               From                     Message
  ----     ------              ----              ----                     -------
  Warning  FailedAttachVolume  6s (x6 over 31s)  attachdetach-controller  AttachVolume.Attach failed for volume "pvc-776459c3-d350-11e9-9db8-e297f465bc84" : Failed to add disk 'scsi0:6'.

Causas posibles

Si un disco virtual está conectado a la máquina virtual incorrecta, puede deberse al problema n.º 32727 en Kubernetes 1.12.

Solución

Si un disco virtual está conectado a la máquina virtual incorrecta, es posible que debas desconectarlo manualmente:

  1. Desvía el nodo. Consulta Safely draining a node (Desvío seguro de un nodo). Te recomendamos incluir las marcas --ignore-daemonsets y --delete-local-data en tu comando kubectl drain.
  2. Apaga la VM.
  3. Edita la configuración de hardware de la VM en vCenter para quitar el volumen.
  4. Enciende la VM
  5. Desacordona el nodo

Se perdió el volumen

Síntomas

El resultado de gkectl diagnose cluster tiene el siguiente aspecto:

Checking cluster object...PASS
Checking machine objects...PASS
Checking control plane pods...PASS
Checking gke-connect pods...PASS
Checking kube-system pods...PASS
Checking gke-system pods...PASS
Checking storage...FAIL
    PersistentVolume pvc-52161704-d350-11e9-9db8-e297f465bc84: virtual disk "[datastore_nfs] kubevols/kubernetes-dynamic-pvc-52161704-d350-11e9-9db8-e297f465bc84.vmdk" IS NOT found
1 storage errors

Uno o más pods están atascados en el estado ContainerCreating con una advertencia como la que se muestra a continuación:

Events:
  Type     Reason              Age                   From                                    Message
  ----     ------              ----                  ----                                    -------
  Warning  FailedAttachVolume  71s (x28 over 42m)    attachdetach-controller                 AttachVolume.Attach failed for volume "pvc-52161704-d350-11e9-9db8-e297f465bc84" : File []/vmfs/volumes/43416d29-03095e58/kubevols/
  kubernetes-dynamic-pvc-52161704-d350-11e9-9db8-e297f465bc84.vmdk was not found

Causas posibles

Si ves un error “no encontrado” relacionado con tu archivo VMDK, es probable que el disco virtual se haya borrado de forma permanente. Esto puede suceder si un operador borra de forma manual un disco virtual o la máquina virtual a la que está conectado. Para evitar esto, administra tus máquinas virtuales como se describe en Cambia el tamaño de un clúster de usuario y Actualiza clústeres.

Solución

Si se borró un disco virtual de forma permanente, es posible que tengas que limpiar manualmente los recursos relacionados de Kubernetes:

  1. Ejecuta kubectl delete pvc [PVC_NAME]. para borrar el PVC que hizo referencia al PV.
  2. Ejecuta kubectl delete pod [POD_NAME]. para borrar el Pod que hizo referencia al PVC.
  3. Repite el paso 2. (Sí, de verdad. Consulta el problema 74374 de Kubernetes.

Actualizaciones

Acerca del tiempo de inactividad durante las actualizaciones

Recurso Descripción
Clúster del administrador

Cuando un clúster de administración está inactivo, los planos de control del clúster de usuario y las cargas de trabajo en los clústeres del usuario continúan ejecutándose, a menos que se vean afectados por una falla que causó el tiempo de inactividad

Plano de control del clúster de usuario

Por lo general, no deberías esperar tiempos de inactividad perceptibles en los planos de control del clúster de usuarios. Sin embargo, las conexiones de larga duración al servidor de la API de Kubernetes podrían fallar y tendrían que restablecerse. En esos casos, el emisor de llamadas a la API debe volver a intentarlo hasta que se establezca una conexión. En el peor de los casos, puede haber una demora de hasta un minuto de tiempo de inactividad durante una actualización.

Nodos del clúster de usuarios

Si una actualización requiere un cambio en los nodos del clúster de usuario, GKE On-prem vuelve a crear los nodos de forma progresiva y reprograma los pods que se ejecutan en estos nodos. Puedes evitar el impacto en tus cargas de trabajo mediante la configuración de los PodDisruptionBudgets y las reglas antiafinidad adecuadas.

Cambia el tamaño de los clústeres de usuarios

Cambiar el tamaño de un clúster de usuarios falla

Síntomas

Una operación de cambio de tamaño en un clúster de usuarios falla.

Causas posibles

Varios factores pueden hacer que las operaciones de cambio de tamaño fallen.

Solución

Si falla el cambio de tamaño, sigue estos pasos:

  1. Verifica el estado del MachineDeployment del clúster para ver si hay eventos o mensajes de error:

    kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME]
  2. Comprueba si hay errores en las máquinas recién creadas:

    kubectl describe machine [MACHINE_NAME]

Error: “No se pueden asignar direcciones”

Síntomas

Después de cambiar el tamaño de un clúster de usuarios, kubectl describe machine [MACHINE_NAME] muestra el siguiente error:

Events:
   Type     Reason  Age                From                    Message
   ----     ------  ----               ----                    -------
   Warning  Failed  9s (x13 over 56s)  machineipam-controller  ipam: no addresses can be allocated
   
Causas posibles

No hay suficientes direcciones IP disponibles para el clúster de usuarios.

Solución

Asigna más direcciones IP al clúster. Luego, borra la máquina afectada:

kubectl delete machine [MACHINE_NAME]

Si el clúster se configura correctamente, se creará una máquina de reemplazo con una dirección IP.

Hay una cantidad suficiente de direcciones IP asignadas, pero la máquina no se registra con el clúster

Síntomas

La red tiene suficientes direcciones asignadas, pero la máquina aún no se logra registrar con el clúster de usuarios.

Causas posibles

Puede haber un conflicto de IP. Es posible que otra máquina o tu balanceador de cargas tome la IP.

Solución

Comprueba que no se haya tomado la dirección IP de la máquina afectada. Si hay un conflicto, debes resolverlo en tu entorno.

vSphere

Depura con govc

Si tienes problemas específicos de vSphere, puedes usar govc para solucionar los problemas. Por ejemplo, puedes confirmar los permisos con facilidad y el acceso de tus cuentas de usuario de vCenter y recopilar registros de vSphere.

Camba el certificado de vCenter

Si ejecutas un servidor vCenter en modo de evaluación o de configuración predeterminado y tiene un certificado TLS generado, este certificado puede cambiar con el tiempo. Si el certificado cambió, debes informar a tus clústeres en ejecución sobre el nuevo certificado:

  1. Recupera el nuevo certificado de vCenter y guárdalo en un archivo:

    true | openssl s_client -connect [VCENTER_IP_ADDRESS]:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
  2. Ahora, para cada clúster, borra el ConfigMap que contiene el certificado de vSphere y vCenter de cada clúster y crea un ConfigMap nuevo con el certificado nuevo. Por ejemplo:

    kubectl --kubeconfig kubeconfig delete configmap vsphere-ca-certificate -n kube-system
    kubectl --kubeconfig kubeconfig delete configmap vsphere-ca-certificate -n user-cluster1
    kubectl --kubeconfig kubeconfig create configmap -n user-cluster1 --dry-run vsphere-ca-certificate --from-file=ca.crt=vcenter.pem  -o yaml  | kubectl --kubeconfig kubeconfig apply -f -
    kubectl --kubeconfig kubeconfig create configmap -n kube-system --dry-run vsphere-ca-certificate --from-file=ca.crt=vcenter.pem  -o yaml  | kubectl --kubeconfig kubeconfig apply -f -
  3. Borra el Pod clusterapi-controllers para cada clúster. Cuando el Pod se reinicia, comienza a usar el certificado nuevo. Por ejemplo:

    kubectl --kubeconfig kubeconfig -n kube-system get pods
    kubectl --kubeconfig kubeconfig -n kube-system delete pod clusterapi-controllers-...

Varios

Límite de sesiones del proveedor de Terraform vSphere

GKE On-Prem usa el proveedor de vSphere de Terraform para abrir las VM en tu entorno de vSphere. El límite de sesiones del proveedor es de 1,000 sesiones. La implementación actual no cierra las sesiones activas después de su uso. Es posible que experimentes errores 503 si tienes demasiadas sesiones en ejecución.

Las sesiones se cierran automáticamente después de 300 segundos.

Síntomas

Si tienes demasiadas sesiones en ejecución, es posible que encuentres el siguiente error:

Error connecting to CIS REST endpoint: Login failed: body:
  {"type":"com.vmware.vapi.std.errors.service_unavailable","value":
  {"messages":[{"args":["1000","1000"],"default_message":"Sessions count is
  limited to 1000. Existing sessions are 1000.",
  "id":"com.vmware.vapi.endpoint.failedToLoginMaxSessionCountReached"}]}},
  status: 503 Service Unavailable
Causas posibles

Hay demasiadas sesiones de proveedores de Terraform en ejecución en el entorno.

Solución

Por el momento, esto funciona según lo previsto. Las sesiones se cierran de forma automática después de 300 segundos. Para obtener más información, consulta el problema #618 de GitHub.

Usa un proxy para Docker: oauth2: cannot fetch token

Síntomas

Mientras uses un proxy, verás el siguiente error:

oauth2: cannot fetch token: Post https://oauth2.googleapis.com/token: proxyconnect tcp: tls: oversized record received with length 20527
Causas posibles

Es posible que hayas proporcionado un proxy HTTPS en lugar de HTTP.

Solución

En tu configuración de Docker, cambia la dirección del proxy a http:// en lugar de https://.

Verifica que las licencias sean válidas

Recuerda verificar que tus licencias sean válidas, en especial si usas licencias de prueba. Es posible que encuentres fallas inesperadas si tus licencias de F5, de host de ESXi o vCenter vencieron.