Investiga el estado de un clúster con kubectl


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 comando kubectl auth can-i. Por ejemplo, para ver si tienes permiso para ejecutar kubectl get nodes, ejecuta el comando kubectl 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:

  1. 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.

  2. 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 columna Namespace del resultado del comando kubectl 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ón Events, 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?