Diagnostica problemas de clústeres

Esta página está destinada a operadores de infraestructura o administradores de plataformas.

En esta página, se describe cómo usar la herramienta de línea de comandos de actl en el modo privado de Anthos para diagnosticar problemas con clústeres. El comando diagnose genera un archivo de almacenamiento que contiene una colección de registros que capturan el estado del clúster.

Introducción

Puedes capturar el estado de los clústeres de administrador o de usuario con el comando actl diagnose. La información de diagnóstico puede ayudarte a descubrir problemas y depurar tus implementaciones de manera más eficaz. El comando captura todos los archivos de configuración de clúster y nodo relevantes para el alcance definido y, luego, empaqueta la información en un solo archivo tar. Las marcas del comando te permiten elegir el alcance de diagnóstico del comando.

actl diagnose

Usa el comando actl diagnose para solucionar problemas con los clústeres. Este comando comprime el estado, la configuración y los registros de un clúster en un archivo tar. Se recopila información diferente según el tipo de clúster (clúster de administrador o de usuario) en el que se toman instantáneas. La configuración predeterminada del comando captura la siguiente información sobre el clúster:

  • Versión de Kubernetes
  • Estado de los recursos de Kubernetes en los espacios de nombres de controladores de kube-system y APM: clúster, máquina, nodos, Services, Endpoints, ConfigMaps, ReplicaSets, CronJobs, Pods y los propietarios de esos Pods, incluidos Deployments, DaemonSets y StatefulSets
  • El estado del plano de control del usuario si el clúster de destino es un clúster de usuario (el plano de control del clúster de usuario se ejecuta en el clúster de administrador).
  • Los detalles sobre la configuración de cada nodo, incluidas las direcciones IP, las reglas de iptables, los puntos de activación, el sistema de archivos, las conexiones de red y los procesos en ejecución.
  • Registros de contenedores del nodo del plano de control del clúster de administrador, cuando el servidor de la API de Kubernetes no está disponible.
  • Información en el sistema de Istio, incluidos Pods, servicios, implementaciones, extremos, secretos, configmaps, registros actuales y anteriores de todos los componentes y el sidecar de Istio, y todos los artefactos de configuración de Istio.
  • Información en el sincronizador de configuración, incluidas las opciones de configuración en los espacios de nombres relacionados con el sistema de configuración.
  • Registros del comando actl diagnose

Crea una instantánea a partir de una situación

El comando actl diagnose admite seis situaciones. Si quieres especificar una situación, usa la marca --scenario para recopilar instantáneas de cualquiera de las siguientes configuraciones:

  • all: Incluye todas las situaciones predefinidas, incluidas las siguientes: auth, config-management, kubernetes, management-center, observability y service-mesh (predeterminado).
  • auth
  • config-management
  • kubernetes
  • management-center
  • observabilidad
  • service-mesh

Puedes usar cada una de las seis situaciones con el clúster de administrador o los clústeres de usuario. Para crear una instantánea de un clúster mediante la situación completa, ejecuta este comando:

Clúster de administrador

Si tienes las credenciales de kubeconfig para el clúster de administrador y tienes acceso para leer la información de Cluster, puedes tomar una instantánea con la situación completa mediante la ejecución del siguiente comando:

 actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
    --cluster=CLUSTER_NAME\
    --scenario=all

Reemplaza lo siguiente:

  • ADMIN_CLUSTER_KUBECONFIG: Es el archivo kubeconfig para el clúster de administrador.
  • CLUSTER_NAME: el nombre del clúster Si no conoces el nombre del clúster, omite esta marca y se te solicitará que selecciones un clúster para la instantánea.

Clúster de usuario

Si solo tienes credenciales de kubeconfig en un clúster de usuario, puedes tomar una instantánea de ese clúster de usuario específico con el siguiente comando:

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG\
    --scenario=all

Reemplaza USER_CLUSTER_KUBECONFIG por el archivo kubeconfig del clúster de usuario.

El resultado incluye una lista de archivos y el nombre de un archivo comprimido.

Using ["all"] snapshot configuration...
? Choose a cluster (namespace/name) cluster-admin/admin
Taking snapshots in 10 thread(s)...
  kubectlCommands/anthos-management-center-operator/kubectl_get_updateitems
  kubectlCommands/kubectl_cluster-info
  kubectlCommands/kubectl_version
  kubectlCommands/anthos-management-center/kubectl_logs_git-server-0_--container_git-server_--since_24h0m0s
  kubectlCommands/anthos-management-center/kubectl_get_deployments
  ...
  nodes/10.200.0.5/files/lib/systemd/system/docker.service
  nodes/10.200.0.4/files/lib/systemd/system/docker.service
  ...
  istioCommands/istioctl_bug-report

Snapshot succeeded.
Snapshots saved in "[TAR_FILE_PATH]/[TAR_FILE_NAME].tar.gz".

Limita una instantánea a un período

Puedes usar la marca --log-since para limitar la recopilación de registros a un período reciente. Por ejemplo, puedes recopilar los registros de los últimos dos días o las últimas tres horas. De forma predeterminada, diagnose recopila registros de las últimas 24 horas. Esta marca solo es compatible con los registros de kubectl.

Para limitar el período de recopilación de registros, sigue estos pasos:

Clúster de administrador

actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster=CLUSTER_NAME \
    --scenario=all \
    --log-since=DURATION

Clúster de usuario

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG \
    --scenario=all \
    --log-since=DURATION

Reemplaza DURATION por un valor de tiempo, como 2d o 3h. La duración predeterminada es de 24 horas.

Realiza una ejecución de prueba de una instantánea

Puedes usar la marca --dry-run para mostrar las acciones que se realizarán y la configuración de la instantánea.

Para realizar una prueba de validación en tu clúster de administrador, haz lo siguiente:

Clúster de administrador

actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster=CLUSTER_NAME \
    --dry-run

Clúster de usuario

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG \
    --dry-run

Personaliza una configuración de instantáneas

Si las seis situaciones no satisfacen tus necesidades, puedes crear una instantánea personalizada. Puedes generar una configuración, copiarla y pegarla en un archivo de configuración nuevo, o crear un archivo de configuración desde cero. Luego, puedes crear la instantánea desde el archivo de configuración personalizado.

Opción 1: Genera una configuración de una instantánea

Puedes generar una configuración de una instantánea para una situación determinada si pasas las marcas --scenario y --dry-run. Por ejemplo, a fin de ver la configuración de la instantánea para toda (predeterminado) la situación de un clúster, ingresa el siguiente comando:

actl diagnose \
    --scenario=all  \
    --dry-run

Este es un ejemplo del resultado:

ExcludeWords:
- certificateAuthorityData
- password
IstioBugReport:
  Enabled: true
KubectlCommands:
- Commands:
  - kubectl get deployments
  - kubectl get deployments -o yaml
  - kubectl get pods
  - kubectl get pods -o yaml
  - kubectl get secret
  - kubectl logs
  - kubectl get gateways -o yaml
  Namespaces:
  - istio-system
NodeCommands:
- Commands:
  - uptime
  - df --all --inodes
  - ip addr
  - iptables-save --counters
  - mount
  - ip route list table all
  - top -bn1
  - docker info
  - docker ps -a
  - ps -edF
  - ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
  - conntrack --count
  Nodes: []
NodeFiles:
- Files:
  - /proc/sys/fs/file-nr
  - /proc/sys/net/netfilter/nf_conntrack_max
  - /lib/systemd/system/kubelet.service
  - /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  - /lib/systemd/system/docker.service
  - /etc/docker/daemon.json
  Nodes: []
NomosBugReport:
  Enabled: true
NumOfParallelThreads: 10

Puedes copiar y pegar el resultado de este comando desde la interfaz de línea de comandos en un archivo de configuración nuevo que crees, por ejemplo, myconfig.yaml. Puedes editar los siguientes valores:

  • ExcludeWords: lista de palabras que se excluirán de la instantánea (distinción entre mayúsculas y minúsculas). Las líneas que contienen estas palabras se quitan de los resultados de la instantánea. “password” siempre se excluye, incluso si lo especificas.
  • IstioBugReport: una marca para habilitar la instantánea istioctl bug-report
  • KubectlCommands: lista de comandos de kubectl que se ejecutarán. Los comandos se ejecutan en los espacios de nombres correspondientes. En los comandos kubectl logs, todos los Pods y los contenedores de los espacios de nombres correspondientes se agregan de forma automática. Las expresiones regulares son compatibles con la especificación de espacios de nombres. Si no especificas un espacio de nombres, se supone que usas el espacio de nombres default.
  • NodeCommands: lista de comandos que se ejecutarán en los nodos correspondientes. Los resultados se guardan. Cuando no se especifica ningún nodo, se consideran todos los nodos del clúster de destino.
  • NodeFiles: lista de archivos que se deben recopilar de los nodos correspondientes. Se guardan los archivos. Cuando no se especifica ningún nodo, se consideran todos los nodos del clúster de destino.
  • NomosBugReport: una marca para habilitar la instantánea nomos bugreport
  • NumOfParallelThreads: cantidad de subprocesos paralelos que se usan para tomar instantáneas.

Opción 2: Define de forma manual un archivo de configuración de instantánea personalizado

Crea un archivo YAML con los parámetros de instantánea que desees, por ejemplo:

ExcludeWords:
- certificateAuthorityData
- password
NumOfParallelThreads: 10
KubectlCommands:
- Commands:
  - kubectl get deployments
  - kubectl get deployments -o yaml
  - kubectl get pods
  - kubectl get pods -o yaml
  - kubectl get secret
  - kubectl logs
  - kubectl get gateways -o yaml
  Namespaces:
  - istio-system

Crea una instantánea mediante la configuración de instantáneas personalizadas

Pasa tu archivo de configuración de instantáneas personalizado con la marca --snapshot-config:

Clúster de administrador

actl diagnose \
    --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster=CLUSTER_NAME \
    --snapshot-config=SNAPSHOT_CONFIG_FILE

Clúster de usuario

actl diagnose \
    --kubeconfig=USER_CLUSTER_KUBECONFIG \
    --snapshot-config=SNAPSHOT_CONFIG_FILE

Reemplaza SNAPSHOT_CONFIG_FILE por el nombre de tu archivo de configuración de instantáneas personalizado, por ejemplo myconfig.yaml.

Revisa el contenido de la instantánea

Para revisar el contenido del archivo tar, extráelo con el siguiente comando:

tar -zxf TAR_FILE_PATHTAR_FILENAME.tar.gz  --directory EXTRACTION_DIRECTORY_NAME

Revisa el contenido del archivo tar antes de adjuntarlo en tus interacciones con asistencia.

¿Qué sigue?