Para diagnosticar la causa raíz de los problemas de Google Kubernetes Engine (GKE), a menudo es necesario inspeccionar en detalle el estado, la configuración y los eventos de tus recursos de Kubernetes. Para ir más allá de los síntomas superficiales, necesitas herramientas para consultar directamente el plano de control del clúster e interactuar con él.
En esta página se explican los comandos esenciales de kubectl
para investigar el estado activo de tu clúster. Aprender estos comandos te permite obtener información detallada directamente del plano de control de Kubernetes, lo que te ayuda a entender por qué se produce un problema.
Esta información es importante para los administradores y operadores de la plataforma que necesitan realizar comprobaciones de estado detalladas de los clústeres, gestionar recursos y solucionar problemas de infraestructura a nivel granular. También es esencial para los desarrolladores de aplicaciones, ya que les permite depurar el comportamiento de las aplicaciones, inspeccionar los registros y eventos de los pods, y verificar el estado exacto de sus implementaciones en el entorno de Kubernetes. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Antes de empezar
Antes de empezar, realiza las siguientes tareas:
- Instala kubectl.
Configura la herramienta de línea de comandos
kubectl
para que se comunique con tu clúster:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clúster.LOCATION
: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.
Revisa tus permisos. Para comprobar si tienes los permisos necesarios para ejecutar comandos de
kubectl
, usa el comandokubectl auth can-i
. Por ejemplo, para ver si tienes permiso para ejecutarkubectl get nodes
, ejecuta el comandokubectl auth can-i get nodes
.Si tienes los permisos necesarios, el comando devuelve
yes
. De lo contrario, devuelveno
.Si no tienes permiso para ejecutar un comando
kubectl
, puede que veas un mensaje de error similar al siguiente:Error from server (Forbidden): pods "POD_NAME" is forbidden: User "USERNAME@DOMAIN.com" cannot list resource "pods" in API group "" in the namespace "default"
Si no tienes los permisos necesarios, pide al administrador del clúster que te asigne los roles necesarios.
Obtener un resumen de lo que se está ejecutando
El comando kubectl get
te ayuda a ver una vista general de lo que ocurre en tu clúster. Usa los siguientes comandos para ver el estado de dos de los componentes de clúster más importantes: los nodos y los pods:
Para comprobar si tus nodos están en buen estado, consulta los detalles de todos los nodos y sus estados:
kubectl get nodes
El resultado debería ser similar al siguiente:
NAME STATUS ROLES AGE VERSION gke-cs-cluster-default-pool-8b8a777f-224a Ready <none> 4d23h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-egb2 Ready <none> 4d22h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-p5bn Ready <none> 4d22h v1.32.3-gke.1785003
Si el estado es otro,
Ready
, se debe investigar más a fondo.Para comprobar si tus pods están en buen estado, consulta los detalles de todos los pods y sus estados:
kubectl get pods --all-namespaces
El resultado debería ser similar al siguiente:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system netd-6nbsq 3/3 Running 0 4d23h kube-system netd-g7tpl 3/3 Running 0 4d23h
Si el estado es otro,
Running
, se debe investigar más a fondo. Estos son algunos de los estados habituales que pueden aparecer:Running
: un estado de funcionamiento correcto.Pending
: el pod está esperando a que se programe en un nodo.CrashLoopBackOff
: los contenedores del pod fallan repetidamente en un bucle porque la aplicación se inicia, se cierra con un error y, a continuación, Kubernetes la reinicia.ImagePullBackOff
: el Pod no puede extraer la imagen del contenedor.
Los comandos anteriores son solo dos ejemplos de cómo puedes usar el comando kubectl
get
. También puedes usar el comando para obtener más información sobre muchos tipos de recursos de Kubernetes. Para ver una lista completa de los recursos que puedes consultar, consulta kubectl get en la documentación de Kubernetes.
Más información sobre recursos específicos
Una vez que hayas identificado un problema, tendrás que obtener más información. Por ejemplo, un problema podría ser un pod que no tenga el estado Running
. Para obtener más información, usa el comando kubectl describe
.
Por ejemplo, para describir un pod específico, ejecuta el siguiente comando:
kubectl describe pod POD_NAME -n NAMESPACE_NAME
Haz los cambios siguientes:
POD_NAME
: el nombre del Pod que tiene problemas.NAMESPACE_NAME
: el espacio de nombres en el que se encuentra el pod. Si no sabes cuál es el espacio de nombres, consulta la columnaNamespace
de la salida del comandokubectl get pods
.
El resultado del comando kubectl describe
incluye información detallada sobre tu recurso. Estas son algunas de las secciones más útiles que puedes consultar cuando tengas problemas con un pod:
Status
: el estado actual del Pod.Conditions
: el estado general y la disponibilidad del pod.Restart Count
: número de veces que se han reiniciado los contenedores del pod. Un número elevado puede ser motivo de preocupación.Events
: un registro de las cosas importantes que le han ocurrido a este pod, como si se ha programado en un nodo, si se ha extraído su imagen de contenedor y si se ha producido algún error. En la secciónEvents
, a menudo puedes encontrar pistas directas sobre por qué falla un pod.
Al igual que con el comando kubectl get
, puedes usar el comando kubectl describe
para obtener más información sobre varios tipos de recursos. Para ver una lista completa de los recursos que puedes consultar, consulta kubectl describe en la documentación de Kubernetes.
Siguientes pasos
Consulta el artículo Hacer análisis históricos con Cloud Logging (la página siguiente de esta serie).
Puedes ver estos conceptos aplicados en el ejemplo de situación para solucionar problemas.
Para obtener consejos sobre cómo resolver problemas específicos, consulta las guías de solución de problemas de GKE.
Si no encuentras una solución a tu problema en la documentación, consulta la sección Obtener asistencia para obtener más ayuda, incluidos consejos sobre los siguientes temas:
- Abrir un caso de asistencia poniéndose en contacto con el equipo de Atención al Cliente de Cloud.
- Obtener asistencia de la comunidad haciendo preguntas en Stack Overflow
y usando la etiqueta
google-kubernetes-engine
para buscar problemas similares. También puedes unirte al#kubernetes-engine
canal de Slack para obtener más ayuda de la comunidad. - Abrir errores o solicitudes de funciones mediante el seguimiento de problemas público.