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 activos 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 y, también, interactuar con él.
Usa esta página para aprender los comandos kubectl
esenciales para investigar el estado activo de tu clúster. Aprender estos comandos te permite recopilar información detallada directamente desde el plano de control de Kubernetes, lo que te ayuda a comprender por qué ocurre un problema.
Esta información es importante para los administradores y operadores de la plataforma que necesitan realizar verificaciones de estado detalladas del clúster, administrar recursos y solucionar problemas de infraestructura a un 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 dentro del entorno de Kubernetes. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles de usuario y tareas comunes de GKE.
Antes de comenzar
Antes de comenzar, realiza las siguientes tareas:
- Instala kubectl.
Configura la herramienta de línea de comandos de
kubectl
para que se comunique con tu clúster:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Reemplaza lo siguiente:
CLUSTER_NAME
: El nombre de tu clúster.LOCATION
: Es 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 ver si tienes los permisos necesarios para ejecutar comandos
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 devolverá
yes
; de lo contrario, devolveráno
.Si no tienes permiso para ejecutar un comando
kubectl
, es posible 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, pídele al administrador del clúster que te asigne los roles necesarios.
Obtén una descripción general de lo que se está ejecutando
El comando kubectl get
te ayuda a ver una vista general de lo que sucede en tu clúster. Usa los siguientes comandos para ver el estado de dos de los componentes del clúster más importantes: los nodos y los Pods:
Para verificar si tus nodos están en buen estado, consulta los detalles de todos los nodos y sus estados:
kubectl get nodes
El resultado es similar a este:
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
Cualquier estado que no sea
Ready
requiere una investigación adicional.Para verificar 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 es similar a este:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system netd-6nbsq 3/3 Running 0 4d23h kube-system netd-g7tpl 3/3 Running 0 4d23h
Cualquier estado que no sea
Running
requiere una investigación adicional. A continuación, se indican algunos estados comunes que podrías ver:Running
: Un estado de ejecución 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 app se inicia, sale con un error y, luego, 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 obtener una lista completa de los recursos que puedes explorar, consulta kubectl get en la documentación de Kubernetes.
Más información sobre recursos específicos
Después de identificar un problema, debes obtener más detalles. Un ejemplo de problema podría ser un Pod que no tiene el estado Running
. Para obtener más detalles, 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
Reemplaza lo siguiente:
POD_NAME
: Es el nombre del Pod que tiene problemas.NAMESPACE_NAME
: Es el espacio de nombres en el que se encuentra el Pod. Si no sabes con certeza cuál es el espacio de nombres, revisa la columnaNamespace
del resultado 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 revisar cuando solucionas problemas de un Pod:
Status
: Es el estado actual del Pod.Conditions
: Es el estado general y la preparación del Pod.Restart Count
: Indica cuántas veces se reiniciaron los contenedores en el Pod. Las cifras altas pueden ser motivo de preocupación.Events
: Es un registro de los eventos importantes que le sucedieron a este Pod, como la programación en un nodo, la extracción de su imagen de contenedor y si se produjo algún error. En la secciónEvents
, a menudo, puedes encontrar las pistas directas sobre por qué falla un Pod.
Al igual que el comando kubectl get
, puedes usar el comando kubectl describe
para obtener más información sobre varios tipos de recursos. Para obtener una lista completa de los recursos que puedes explorar, consulta kubectl describe en la documentación de Kubernetes.
¿Qué sigue?
Lee Realiza análisis históricos con Cloud Logging (la siguiente página de esta serie).
Consulta cómo se aplican estos conceptos en el ejemplo de situación de solución de problemas.
Para obtener asesoramiento 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 Obtener asistencia para obtener más ayuda, como asesoramiento en los siguientes temas:
- Comunicarse con Atención al cliente de Cloud para abrir un caso de asistencia.
- Hacer preguntas en StackOverflow para obtener asistencia de
la comunidad y usar la etiqueta
google-kubernetes-engine
para buscar problemas similares. También puedes unirte al canal de Slack#kubernetes-engine
para obtener más Asistencia de la comunidad. - Abrir errores o solicitudes de funciones con la herramienta de seguimiento de errores pública.