Si no puede aprovisionar un clúster de TKGS, revise esta lista de errores comunes para solucionar problemas.
Comprobar registros de la API del clúster
Si no puede crear un clúster de TKG, compruebe que CAPW/V funcione.
El controlador CAPW/V es la implementación específica de la infraestructura de la API del clúster. CAPW/V se habilita a través de Supervisor. CAPW/V es un componente de TKG y es responsable de administrar el ciclo de vida de los clústeres de TKG.
CAPW/V es responsable de crear y actualizar la red virtual. La creación de los nodos del clúster solo puede avanzar si la red virtual está lista. ¿El flujo de trabajo de creación del clúster pasó por esta fase?
CAPW/V es responsable de crear y actualizar el servicio de máquina virtual. ¿Se creó correctamente el servicio de máquina virtual? ¿Obtuvo la dirección IP externa? ¿El flujo de trabajo de creación del clúster pasó por esta fase?
kubectl config use-context tkg-cluster-ns
kubectl get pods -n vmware-system-capw | grep capv-controller
kubectl logs -n vmware-system-capw -c manager capv-controller-manager-...
Error de validación de la especificación del clúster
De acuerdo con la especificación de YAML, se permite el uso del carácter de espacio en un nombre de clave. Es una cadena escalar que contiene un espacio y no requiere comillas.
Sin embargo, la validación de TKGS no permite el uso del carácter de espacio en los nombres de clave. En TKGS, un nombre de clave válido solo debe constar de caracteres alfanuméricos, un guion (como key-name
), un guion bajo (como KEY_NAME
) o un punto (como key.name
).
Si utiliza el carácter de espacio en un nombre de clave en la especificación del clúster, el clúster de TKGS no se implementa. El registro vmware-system-tkg-controller-manager muestra el siguiente mensaje de error:
Invalid value: \"Key Name\": a valid config key must consist of alphanumeric characters, '-', '_' or '.' (e.g. 'key.name', or 'KEY_NAME', or 'key-name', regex used for validation is '[-._a-zA-Z0-9]+')"
Para solucionar el error, elimine el carácter de espacio por completo o reemplácelo por uno compatible.
Errores al aplicar el YAML del clúster de TKG
- La red del clúster no está en el estado correcto
-
Comprender el flujo de trabajo de aprovisionamiento de clústeres de TKG:
- CAPV crea un objeto de red virtual para cada red del clúster de TKG.
- Si Supervisor está configurado con redes NSX, NCP detecta los objetos de red virtual y crea un enrutador de nivel 1 de NSX y un segmento de NSX para cada red virtual.
- CAPV comprueba el estado de la red virtual y, cuando está lista, continúa con el paso siguiente del flujo de trabajo.
La controladora de servicio de máquina virtual observa los objetos personalizados creados por CAPV y utiliza esas especificaciones para crear y configurar las máquinas virtuales que conforman el clúster de TKG.
NSX Container Plugin (NCP) es una controladora que detecta los recursos de red agregados a etcd a través de la API de Kubernetes y organiza la creación de los objetos correspondientes en NSX.
Todas estas controladoras se ejecutan como pods de Kubernetes en el plano de control de Supervisor. Para solucionar problemas de red, compruebe el registro de la controladora CAPV, el registro del servicio de máquina virtual y el registro de NCP.
- Recuento de nodos de plano de control no válido
-
El clúster de TKG en Supervisor admite 1 o 3 nodos de plano de control. Si introduce otra cantidad de réplicas, se produce un error en el aprovisionamiento del clúster.
- Clase de almacenamiento no válida para la máquina virtual de plano de control o de trabajo
-
Ejecute el siguiente comando:
kubectl describe ns <tkg-clsuter-namesapce>
Asegúrese de que se haya asignado una clase de almacenamiento al espacio de nombres en el que intenta crear el clúster de TKG. Debe haber una cuota de recursos en el espacio de nombres de vSphere que haga referencia a esa clase de almacenamiento, la cual debe existir en Supervisor.
Asegúrese de que el nombre coincida con la clase de almacenamiento presente en Supervisor. Ejecute
kubectl get storageclasses
Supervisor como administrador de vSphere. Es posible que WCP modifique el nombre al aplicar el perfil de almacenamiento en Supervisor (por ejemplo, los guiones se convierten en guiones bajos). - Clase de máquina virtual no válida
-
Asegúrese de que el valor proporcionado en el YAML del clúster coincida con una de las clases de máquina virtual que devuelve
kubectl get virtualmachineclass
. Un clúster de TKG solo puede utilizar clases enlazadas. Una clase de máquina virtual enlazada es aquella que se agregó al espacio de nombres de vSphere.El comando
kubectl get virtualmachineclasses
devuelve todas las clases de máquina virtual en Supervisor, pero solo se pueden utilizar las que están enlazadas. - No se pueden encontrar las distribuciones TKR
-
Si aparece un error similar al siguiente:
“Error from server (unable to find Kubernetes distributions): admission webhook “version.mutating.tanzukubernetescluster.run.tanzu.vmware.com” denied the request: unable to find Kubernetes distributions”
Probablemente se trate de un problema de la biblioteca de contenido. Para enumerar lo que está disponible, utilice el comando
kubectl get virtualmachineimages -A
. El resultado es lo que está disponible, sincronizado o cargado en la biblioteca de contenido.Para TKG en Supervisor, hay nuevos nombres de TKR que son compatibles con la nueva API de TKR. Debe asegurarse de asignar el nombre correcto a cada TKR en la biblioteca de contenido.
Nombre en la biblioteca de contenido:
photon-3-amd64-vmi-k8s-v1.23.8---vmware.2-tkg.1-zshippable
Nombre correspondiente en la especificación del clúster de TKG:
version: v1.23.8+vmware.2-tkg.1-zshippable
Se aplica el YAML de TKG, pero no se crean máquinas virtuales
- Comprobar los recursos CAPI/CAPV
-
Comprobar si TKG creó los recursos de nivel CAPI/CAPV.
- Compruebe si CAPV creó los recursos de máquina virtual.
- Consulte los registros de operador de máquina virtual para ver por qué no se creó la máquina virtual; por ejemplo, es posible que se haya producido un error en la implementación de OVF debido a la falta de recursos en el host ESX.
- Compruebe los registros de operador de máquina virtual y CAPV.
- Compruebe los registros de NCP. NCP es responsable de obtener la red virtual, la interfaz de la red virtual y el equilibrador de carga para el plano de control. Si se produce algún error relacionado con esos recursos, puede ser un problema.
- Error de servicios de máquina virtual
-
Error de servicios de máquina virtual
- Ejecute
kubectl get virtualmachineservices
en el espacio de nombres. - ¿Se creó un servicio de máquina virtual?
- Ejecute
kubectl describe virtualmachineservices
en el espacio de nombres. - ¿Hay errores notificados en el servicio de máquina virtual?
- Ejecute
- Error de red virtual
-
Ejecute
kubectl get virtualnetwork
en el espacio de nombres.¿Se creó la red virtual para este clúster?
Ejecute
kubectl describe virtual network
en el espacio de nombres.¿Se creó la interfaz de red virtual para la máquina virtual?
El plano de control del clúster de TKG no se está ejecutando
- Comprobar si los recursos estaban listos cuando se produjo el error
-
Además de la búsqueda de registros, la comprobación del estado "Equilibrador de carga del plano de control" de los objetos relacionados lo ayudará a comprender si los recursos estaban listos cuando se produjo el error. Consulte la solución de problemas de red.
- ¿Lo que no está activo es el plano de control de un nodo de unión o un nodo de inicialización?
-
Las uniones de nodos a veces no funcionan correctamente. Consulte los registros de nodo de una determinada máquina virtual. Es posible que al clúster le falten nodos de trabajo y de plano de control si el nodo de inicialización no se activa correctamente.
- No está establecido el identificador del proveedor en el objeto de nodo
-
Si se creó la máquina virtual, compruebe si tiene direcciones IP y, a continuación, consulte los registros de cloud-init (los comandos kubeadm se ejecutan correctamente).
Consulte los registros de la controladora CAPI para verificar si hay algún problema. Para comprobarlo, utilice los
kubectl get nodes
en el clúster de TKG y, a continuación, verifique si existe el identificador del proveedor en el objeto de nodo.
No se crean nodos de trabajo de TKG
kubectl describe cluster CLUSTER-NAME
Compruebe si hay recursos de máquina virtual en el espacio de nombres. ¿Se crearon otros?
Si no es así, consulte los registros de CAPV para ver por qué no se crean los otros datos de arranque de objetos de máquina virtual que no están disponibles.
Si CAPI no puede comunicarse con el plano de control del clúster de TKG a través del equilibrador de carga, ya sea NSX con la IP de máquina virtual del nodo o VDS con el equilibrador de carga externo, obtenga el kubeconfig del clúster de TKG mediante el secreto en el espacio de nombres:
kubectl get secret -n <namespace> <tkg-cluster-name>-kubeconfig -o jsonpath='{.data.value}' | base64 -d > tkg-cluster-kubeconfig; kubectl --kubeconfig tkg-cluster-kubeconfig get pods -A
Si aparece el error de conexión rechazada, es probable que el plano de control no se haya inicializado correctamente. Si se agota el tiempo de espera de E/S, compruebe la conectividad con la dirección IP en el archivo kubeconfig.
NSX con equilibrador de carga integrado:
- Compruebe que el equilibrador de carga de plano de control esté activo y que se pueda acceder a él.
- Si el equilibrador de carga no tiene IP, consulte los registros de NCP y la interfaz de usuario de NSX-T para ver si los componentes relacionados están en los estados correctos. (El equilibrador de carga de NSX-T, el servidor virtual y el grupo de servidores deben estar en el estado correcto).
- Si el equilibrador de carga tiene IP, pero no se puede acceder a él (
curl -k https://<LB- VIP>:6443/healthz
debería devolver un error no autorizado).Si el tipo de equilibrador de carga de la IP externa del servicio se encuentra en estado 'pendiente', compruebe que el clúster de TKG pueda comunicarse con la API del supervisor de Kubernetes a través de la VIP del LB del supervisor. Asegúrese de que no haya ninguna superposición de direcciones IP.
- Compruebe si el plano de control del clúster de TKG informa de algún error (por ejemplo, no se puede crear el nodo con el identificador del proveedor).
- El proveedor de nube del clúster de TKG no marcó el nodo con el identificador del proveedor correcto, por lo que CAPI no puede comparar el identificador del proveedor en el nodo del clúster invitado con el recurso de máquina en el clúster supervisor para hacer la comprobación.
kubectl get po -n vmware-system-cloud-provider
kubectl logs -n vmware-system-cloud-provider <pod name>
Si VMOP no concilió VirtualMachineService correctamente, compruebe el registro del operador de máquinas virtuales.
Si NCP tenía problemas para crear recursos de NSX-T, compruebe el registro de NCP.
kubectl get virtualmachine -n <namespace> <TKC-name>-control-plane-0 -o yaml
ssh vmware-system-user@<vm-ip> -i tkc-cluster-ssh
cat /var/log/cloud-init-output.log | less
El clúster de TKG aprovisionado se detuvo en la fase "Crear"
Ejecute los siguientes comandos para comprobar el estado del clúster.
kubectl get tkc -n <namespace>
kubectl get cluster -n <namespace>
kubectl get machines -n <namespace>KubeadmConfig estaba presente, pero CAPI no pudo encontrarlo. Se comprobó si el token de vmware-system-capv tenía los permisos adecuados para consultar kubeadmconfig.
$kubectl --token=__TOKEN__ auth can-i get kubeadmconfig yesEs posible que la memoria caché de tiempo de ejecución de la controladora no se estaba actualizando. Es probable que las memorias caché del reloj CAPI estén obsoletas y no detecten los nuevos objetos. Si es necesario, reinicie capi-controller-manager para resolver el problema.
kubectl rollout restart deployment capi-controller-manager -n vmware-system-capv
espacio de nombres de vSphere se detuvo en la fase "Finalización"
Compruebe que TKR, Supervisor y vCenter estén sincronizados desde una perspectiva de compatibilidad de versión.
kubectl describe namespace NAME
Se encontró el siguiente error: "Error del servidor (no se pueden encontrar las distribuciones de Kubernetes): webhook de admisión "version.mutating.tanzukubernetescluster.run.tanzu.vmware.com" rechazó la solicitud: no se pueden encontrar las distribuciones de Kubernetes".
kubectl get virtualmachineimages -A