Cuando tienes un problema con uno de tus clústeres, puedes obtener ayuda en Atención al cliente de Cloud. Atención al cliente puede pedirte que tomes una “instantánea” del clúster, que puede usar para diagnosticar el problema. Una instantánea captura los archivos de configuración del clúster y del nodo, y empaqueta esa información en un solo archivo tar.
En este documento, se describe cómo crear instantáneas predeterminadas o instantáneas más personalizadas de un clúster. También se explica cómo crear instantáneas cuando un clúster experimenta errores particulares.
Instantáneas predeterminadas
En las siguientes secciones, se describe el contenido de una instantánea estándar y cómo crear una. Para obtener información sobre las instantáneas personalizadas, consulta la sección Instantáneas personalizadas.
¿Qué información contiene una instantánea predeterminada?
La instantánea de un clúster es un archivo tar de archivos de configuración y registros sobre el clúster. En específico, 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 kube-system y gke-system: clúster, máquina, nodos, Services, Endpoints, ConfigMaps, ReplicaSets, CronJobs, Pods y los propietarios de esos Pods, incluidos Deployments, DaemonSets y StatefulSets
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 del comando
bmctl check cluster --snapshot
La información de credenciales de un clúster no se incluye en la instantánea predeterminada. Si Atención al cliente de Cloud solicita esa información, consulta Recupera información del clúster.
Para obtener una lista completa de la información recopilada cuando ejecutas el comando de instantáneas, consulta el archivo de configuración que se muestra en la sección El archivo de configuración en detalle. En este archivo de configuración, se muestran los comandos que se ejecutan cuando se toma una instantánea predeterminada.
Cómo crear una instantánea predeterminada
Con el comando bmctl check cluster
, se toma una instantánea de un clúster. Puedes usar este comando para realizar cualquiera de las siguientes acciones: * crear una instantánea y subirla de forma automática a un bucket de Cloud Storage * crear una instantánea de un clúster y guardar la instantánea en la máquina local en la que ejecutas el comando.
Método 1: crea una instantánea predeterminada y súbela automáticamente al bucket de Cloud Storage
Para crear y subir una instantánea a un bucket de Cloud Storage, haz lo siguiente:
Configura la API y la cuenta de servicio:
- Habilita la API de Cloud Storage dentro de tu proyecto de Google Cloud.
- Otorga una función
storage.admin
a la cuenta de servicio para que la cuenta de servicio pueda subir datos a Cloud Storage. - Descarga la clave JSON para la cuenta de servicio.
Consulta Habilita servicios de Google y cuentas de servicio para obtener más detalles.
Ejecuta el siguiente comando de
bmctl
para crear y subir de forma automática una instantánea a un bucket de Cloud Storage:bmctl check cluster --snapshot --cluster=CLUSTER_NAME --kubeconfig=KUBECONFIG_PATH --upload-to BUCKET_NAME [--service-account-key-file SERVICE_ACCOUNT_KEY_FILE]
En el comando, reemplaza las siguientes entradas por información específica del entorno de tu clúster:
- CLUSTER_NAME: Es el nombre del clúster del que deseas tomar una instantánea.
- KUBECONFIG_PATH: Es la ruta al archivo
kubeconfig
del clúster de administrador (la ruta al archivo kubeconfig suele serbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Sin embargo, si especificaste tu lugar de trabajo con la marcaWORKSPACE_DIR
, la ruta esWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
). - BUCKET_NAME: Es el nombre de un bucket de Cloud Storage que te pertenece.
- SERVICE_ACCOUNT_KEY_FILE_PATH: si no proporcionas la marca
--service-account-key-file
,bmctl
intenta obtener la ruta al archivo de claves de la cuenta de servicio desde la variable de entornoGOOGLE_APPLICATION_CREDENTIALS
.
Otorga a Atención al cliente de Cloud acceso de lectura al bucket que contiene la instantánea:
gsutil iam ch \ serviceAccount:service-PROJECT_ID@anthos-support.iam.gserviceaccount.com:roles/storage.objectViewer \ gs://BUCKET_NAME
Método no 2: Crea una instantánea predeterminada en una máquina local
Puedes capturar el estado de los clústeres creados con el siguiente comando .
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH
Reemplaza lo siguiente:
CLUSTER_NAME: Es el nombre del clúster de destino.
KUBECONFIG_PATH: Es la ruta al archivo
kubeconfig
del clúster de administrador (la ruta al archivo kubeconfig suele serbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Sin embargo, si especificaste tu lugar de trabajo con la marcaWORKSPACE_DIR
, la ruta esWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
).
Este comando genera un archivo tar en tu máquina local. El nombre de este archivo tar tiene el formato snapshot-CLUSTER_NAME-TIMESTAMP.tar.gz
, en el que TIMESTAMP
indica la fecha y hora en que se creó el archivo. Este archivo tar incluye información de depuración relevante sobre los componentes y las máquinas del sistema de un clúster.
Cuando ejecutas este comando, se recopila información sobre los Pods de los siguientes espacios de nombres: gke-system
, gke-connect
, capi-system
, capi-webhook-system
, cert-manager
y capi-kubeadm-bootstrap-system
Sin embargo, puedes ampliar el alcance de la información de diagnóstico recopilada mediante la marca --snapshot-scenario all
. Esta marca aumenta el alcance de la instantánea de diagnóstico para incluir todos los Pods en un clúster:
bmctl check cluster --snapshot --snapshot-scenario all \
--cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH
Instantáneas personalizadas
Te recomendamos crear una instantánea personalizada de un clúster por los siguientes motivos:
- Para incluir más información sobre tu clúster de lo que se proporciona en la instantánea predeterminada.
- Para excluir parte de la información que está en la instantánea predeterminada.
- Para tomar una instantánea de un clúster cuando encuentras el error
admin cluster is unreachable
. Consulta la sección Cómo crear una instantánea personalizada cuando no se puede acceder al clúster de administrador para obtener más detalles.
Cómo crear una instantánea personalizada
Crear una instantánea personalizada requiere el uso de un archivo de configuración de instantáneas. En los siguientes pasos, se explica cómo crear el archivo de configuración, modificarlo y usarlo para crear una instantánea personalizada de un clúster:
Crea un archivo de configuración de instantánea mediante la ejecución del siguiente comando en tu clúster y escribe el resultado en un archivo:
bmctl check cluster --snapshot --snapshot-dry-run --cluster CLUSTER_NAME --kubeconfig KUBECONFIG_PATH
Define el tipo de información que deseas que aparezca en tu instantánea personalizada. Para ello, modifica el archivo de configuración de instantáneas que creaste en el paso 1. Por ejemplo, si deseas que la instantánea contenga información adicional, como por cuánto tiempo se ejecutó un nodo en particular, agrega el comando
uptime
de Linux a la sección relevante del archivo de configuración. En el siguiente fragmento de un archivo de configuración, se muestra cómo hacer que el comando de la instantánea proporcione información deuptime
sobre el nodo 10.200.0.3. Esta información no aparece en una instantánea estándar.... nodeCommands: - nodes: - 10.200.0.3 commands: - uptime ...
Una vez que hayas modificado el archivo de configuración para definir qué tipo de instantánea deseas, crea la instantánea personalizada mediante la ejecución del siguiente comando:
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE --cluster CLUSTER_NAME --kubeconfig KUBECONFIG_PATH
La marca
--snapshot-config
dirige al comandobmctl
para que use el contenido del archivo de configuración de instantáneas a fin de definir qué información aparece en la instantánea.
El archivo de configuración en detalle
En el siguiente archivo de configuración de instantáneas de muestra, se muestran los comandos y archivos estándar que se usan para crear una instantánea, pero puedes agregar más comandos y archivos cuando se necesita información de diagnóstico adicional:
numOfParallelThreads: 10
excludeWords:
- password
nodeCommands:
- nodes:
- 10.200.0.3
- 10.200.0.4
commands:
- uptime
- df --all --inodes
- ip addr
- ip neigh
- iptables-save --counters
- mount
- ip route list table all
- top -bn1 || true
- docker info || true
- docker ps -a || true
- crictl ps -a || true
- docker ps -a | grep anthos-baremetal-haproxy | cut -d ' ' -f1 | head -n 1 | xargs
sudo docker logs || true
- docker ps -a | grep anthos-baremetal-keepalived | cut -d ' ' -f1 | head -n 1 |
xargs sudo docker logs || true
- crictl ps -a | grep anthos-baremetal-haproxy | cut -d ' ' -f1 | head -n 1 | xargs
sudo crictl logs || true
- crictl ps -a | grep anthos-baremetal-keepalived | cut -d ' ' -f1 | head -n 1 |
xargs sudo crictl logs || true
- ps -edF
- ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
- conntrack --count
- dmesg
- systemctl status -l docker || true
- journalctl --utc -u docker
- journalctl --utc -u docker-monitor.service
- systemctl status -l kubelet
- journalctl --utc -u kubelet
- journalctl --utc -u kubelet-monitor.service
- journalctl --utc --boot --dmesg
- journalctl --utc -u node-problem-detector
- systemctl status -l containerd || true
- journalctl --utc -u containerd
- systemctl status -l docker.haproxy || true
- journalctl --utc -u docker.haproxy
- systemctl status -l docker.keepalived || true
- journalctl --utc -u docker.keepalived
- systemctl status -l container.haproxy || true
- journalctl --utc -u container.haproxy
- systemctl status -l container.keepalived || true
- journalctl --utc -u container.keepalived
nodeFiles:
- nodes:
- 10.200.0.3
- 10.200.0.4
files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
- /proc/sys/net/ipv4/conf/all/rp_filter
- /lib/systemd/system/kubelet.service
- /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- /lib/systemd/system/docker.service || true
- /etc/systemd/system/containerd.service || true
- /etc/docker/daemon.json || true
- /etc/containerd/config.toml || true
- /etc/systemd/system/container.keepalived.service || true
- /etc/systemd/system/container.haproxy.service || true
- /etc/systemd/system/docker.keepalived.service || true
- /etc/systemd/system/docker.haproxy.service || true
nodeSSHKey: ~/.ssh/id_rsa # path to your ssh key file
Es probable que las siguientes entradas en tu archivo de configuración difieran de las que aparecen en el archivo de configuración de muestra anterior:
- Las direcciones IP de los nodos en las secciones
nodeCommands
ynodeFiles
- La ruta de acceso al
nodeSSHKey
del clúster
Campos en el archivo de configuración
Un archivo de configuración de instantáneas tiene el formato YAML. El archivo de configuración incluye los siguientes campos:
numOfParallelThreads
: La rutina de instantánea suele ejecutar varios comandos. Contar con varios subprocesos paralelos ayuda a que la rutina se ejecute más rápido. Te recomendamos que establezcasnumOfParallelThreads
en10
, como se muestra en el archivo de configuración de muestra anterior. Si las instantáneas tardan demasiado, aumenta este valor.excludeWords
: La instantánea contiene una gran cantidad de datos para los nodos del clúster. UsaexcludeWords
para reducir los riesgos de seguridad cuando compartas la instantánea. Por ejemplo, excluyepassword
para que no se puedan identificar las strings de contraseña correspondientes.nodeCommands
: En esta sección, se especifica la siguiente información:nodes
: Una lista de direcciones IP para los nodos del clúster del que deseas recopilar información. Para crear una instantánea cuando no se puede acceder al clúster de administrador, especifica al menos una dirección IP de nodo.commands
: Una lista de comandos (y argumentos) que se ejecutarán en cada nodo. El resultado de cada comando se incluye en la instantánea.
nodeFiles
: En esta sección, se especifica la siguiente información:nodes
: Es una lista de direcciones IP de los nodos del clúster del que deseas recopilar archivos. Para crear una instantánea cuando no se puede acceder al clúster de administrador, especifica al menos una dirección IP de nodo.files
: Una lista de los archivos que se recuperarán de cada nodo. Cuando se encuentran los archivos especificados en un nodo, se incluyen en la instantánea.
nodeSSHKey
: Es la ruta de acceso a tu archivo de claves SSH. Cuando no se puede acceder al clúster de administrador, este campo es obligatorio.
Crea instantáneas cuando experimentas errores específicos
Cómo crear una instantánea predeterminada durante las instalaciones o actualizaciones detenidas
Cuando se instalan o actualizan clústeres de administrador, híbridos o independientes, a veces, bmctl
puede detenerse en puntos en los que se pueden ver los siguientes resultados:
- Espera a que el clúster kubeconfig esté listo
- Espera a que el clúster esté listo
- Espera a que los grupos de nodos estén listos
- Espera a que se complete la actualización
Sin embargo, si tienes una instalación o actualización detenida, puedes tomar una instantánea de un clúster si usas el clúster de arranque, mediante la ejecución del siguiente comando:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Cómo crear una instantánea personalizada durante las instalaciones o actualizaciones detenidas
En los siguientes pasos, se muestra cómo crear una instantánea personalizada de un clúster cuando se detiene una instalación o actualización:
Recupera de tus archivos un archivo de configuración de instantáneas del clúster.
Modifica el archivo de configuración de instantáneas para que la instantánea contenga la información que deseas.
Ejecuta el siguiente comando para crear la instantánea personalizada:
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE --cluster=CLUSTER_NAME --kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Cómo crear una instantánea personalizada cuando no se pueda acceder al clúster de administrador
Si tu clúster produce un error que indica que el clúster de administrador es inaccesible, no puedes tomar una instantánea predeterminada de un clúster. Esto se debe a que el comando bmctl
predeterminado intenta, entre otras acciones, recuperar información del clúster de administrador. Cuando el comando predeterminado intenta recuperar información de un clúster de administrador inaccesible, el comando de la instantánea fallará.
Por lo tanto, cuando no se pueda acceder al clúster de administrador, debes tomar una instantánea personalizada del clúster en lugar de una instantánea predeterminada. De esta manera, puedes crear una instantánea personalizada que no solicite información de un clúster de administrador defectuoso.
En los siguientes pasos, se muestra cómo crear una instantánea personalizada de un clúster cuando no se puede acceder al clúster de administrador:
Recupera de tus archivos un archivo de configuración de instantáneas del clúster.
En la sección de nodos, enumera las direcciones IP de los nodos sobre los que quieres obtener información, pero asegúrate de excluir la dirección IP del nodo del clúster de administrador.
Ejecuta el siguiente comando para crear la instantánea personalizada:
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE --cluster=CLUSTER_NAME --kubeconfig=KUBECONFIG_PATH
Recopila registros para problemas de Ingress o Anthos Service Mesh
Las instantáneas bmctl
no contienen información para solucionar problemas de entrada o de Anthos Service Mesh. Si deseas obtener instrucciones para recopilar los registros de diagnóstico relevantes, consulta Recopila registros de Anthos Service Mesh en la documentación de Anthos Service Mesh.