Si tienes algún problema con uno de tus clústeres, puedes obtener ayuda de Cloud Customer Care. Es posible que el equipo de Asistencia te pida que hagas una "instantánea" del clúster para diagnosticar el problema. Una captura crea un archivo tar con los archivos de configuración del clúster y del nodo, y los empaqueta.
En este documento se describe cómo crear copias de seguridad predeterminadas o más personalizadas de un clúster. También se explica cómo crear capturas cuando un clúster experimenta errores concretos.
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud. También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia.
- Herramientas para ayudarte a solucionar problemas, como la configuración de tu entorno, los registros y las métricas.
- Componentes admitidos.
Capturas predeterminadas
En las siguientes secciones se describe el contenido de una instantánea estándar y cómo crearla. Para obtener información sobre las vistas personalizadas, consulta la sección sobre vistas personalizadas.
¿Qué información contiene una instantánea predeterminada?
Una instantánea de un clúster es un archivo tar que contiene archivos de configuración y registros sobre el clúster. En concreto, la configuración predeterminada del comando recoge la siguiente información sobre tu clúster:
Versión de Kubernetes.
Estado de los recursos de Kubernetes en los espacios de nombres kube-system y gke-system: clúster, máquina, nodos, servicios, endpoints, ConfigMaps, ReplicaSets, CronJobs, pods y los propietarios de esos pods, incluidos los despliegues, DaemonSets y StatefulSets.
Detalles sobre la configuración de cada nodo, incluidas las direcciones IP, las reglas de iptables, los puntos de montaje, el sistema de archivos, las conexiones de red y los procesos en ejecución.
Información sobre el entorno de ejecución de máquinas virtuales en GDC y sobre las máquinas virtuales y los recursos relacionados con las máquinas virtuales que se ejecutan en tu clúster. Para obtener más información sobre lo que se recoge de forma predeterminada y cómo crear capturas específicas de una VM, consulta la sección Información de la VM en las capturas de este documento.
Registros del comando
bmctl check cluster --snapshot
.
La información de las credenciales de un clúster no se incluye en la instantánea predeterminada. Si el equipo de Asistencia de Cloud solicita esa información, consulta Obtener información de clústeres.
Para ver una lista completa de la información que se recoge al ejecutar el comando de instantánea, consulta la sección sobre el archivo de configuración en detalle. Este archivo de configuración muestra qué comandos se ejecutan al hacer una instantánea predeterminada.
Crear una captura predeterminada
El comando bmctl check cluster
crea una instantánea de un clúster. Puedes usar este comando para realizar cualquiera de las siguientes acciones:
- Crea una instantánea y súbela automáticamente a un segmento de Cloud Storage.
- Crea una captura de un clúster y guarda el archivo de la captura en la máquina local en la que ejecutas el comando.
Método 1: Crear una instantánea predeterminada y subirla automáticamente a un segmento de Cloud Storage
Para crear una instantánea y subirla a un segmento de Cloud Storage, sigue estos pasos:
Configura la API y la cuenta de servicio tal como se describe en Configurar una cuenta de servicio que pueda acceder a un segmento de Cloud Storage.
Solo tendrás que realizar este paso una vez.
Ejecuta el siguiente comando
bmctl
para crear y subir automáticamente una instantánea a un segmento de Cloud Storage:bmctl check cluster --snapshot --cluster=CLUSTER_NAME \ --admin-kubeconfig=ADMIN_KUBECONFIG \ --service-account-key-file SA_KEY_FILE
Sustituye las siguientes entradas por información específica de tu entorno de clúster:
CLUSTER_NAME
: el nombre del clúster del que quieras hacer una captura.ADMIN_KUBECONFIG
: la ruta al archivo kubeconfig del clúster de administrador.SA_KEY_FILE
: la ruta al archivo de clave JSON descargado de la cuenta de servicio creada en el paso anterior. Si no usas la marca--service-account-key-file
, el comando usa las credenciales asociadas a la variable de entornoGOOGLE_APPLICATION_CREDENTIALS
. Si especificas explícitamente las credenciales de la cuenta de servicio con la marca, tendrán prioridad.
Este comando genera un archivo tar de la instantánea y lo guarda de forma local. Cuando la cuenta de servicio se configura correctamente, el comando también sube el archivo tar de la instantánea a un segmento de Cloud Storage. El comando busca en tu proyecto un segmento de almacenamiento que tenga un nombre que empiece por "
anthos-snapshot-
". Si existe un segmento de este tipo, el comando sube la instantánea a ese segmento. Si el comando no encuentra ningún contenedor con un nombre coincidente, crea uno con el nombreanthos-snapshot-UUID
, dondeUUID
es un identificador único universal de 32 dígitos.Comparte el acceso con Cloud Customer Care tal como se describe en Permitir que Cloud Customer Care vea la instantánea del clúster que has subido.
Método 2: crear una instantánea predeterminada solo en la máquina local
Usa la marca --local
para asegurarte de que la instantánea del clúster se guarde solo de forma local. Puedes capturar el estado de los clústeres que has creado con el siguiente comando:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--admin-kubeconfig=ADMIN_KUBECONFIG --local
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster de destino.ADMIN_KUBECONFIG
: la ruta al archivo kubeconfig del clúster de administrador.
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
,
donde TIMESTAMP
indica la fecha y la hora en que se creó el archivo. Este archivo tar incluye información de depuración relevante sobre los componentes del sistema y las máquinas de un clúster.
Cuando ejecutas este comando, se recoge 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 recogida usando la marca --snapshot-scenario all
. Esta marca aumenta el alcance de la
instantánea de diagnóstico para incluir todos los pods de un clúster:
bmctl check cluster --snapshot --snapshot-scenario all \
--cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH \
--local
Situaciones de capturas
El comando bmctl check cluster --snapshot
admite dos casos. Para especificar un escenario, usa la marca --scenario
. En la siguiente lista se muestran los valores posibles:
system
: recoge una captura de los componentes del sistema, incluidos sus registros.all
: recoge una captura de todos los pods, incluidos sus registros.
Puedes usar cada uno de los dos casos con un clúster de administradores o un clúster de usuarios. En el siguiente ejemplo se crea una instantánea del clúster de administrador mediante el escenario system
:
bmctl check cluster --snapshot --snapshot-scenario system \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
En el siguiente ejemplo se crea una instantánea de un clúster de usuarios mediante el escenario all
:
bmctl check cluster --snapshot --snapshot-scenario all \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Realizar una prueba de funcionamiento de una instantánea
Si usas la marca --snapshot-dry-run
, el comando no crea una captura.
En su lugar, muestra las acciones que llevaría a cabo el comando de creación de una instantánea y genera un archivo de configuración de la instantánea. Para obtener información sobre el archivo de configuración de la vista general, consulte Cómo crear una vista general personalizada.
Para hacer una prueba de funcionamiento de una instantánea en tu clúster de administrador, introduce el siguiente comando:
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Para hacer una prueba de funcionamiento de una instantánea en un clúster de usuario, introduce el siguiente comando:
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Obtener registros de un periodo concreto
Puedes usar la marca --since
para recuperar registros de un periodo que te interese especialmente. De esta forma, puedes crear registros más pequeños y específicos de lo que ha ocurrido en los últimos segundos, minutos u horas.
Por ejemplo, el siguiente comando bmctl
crea una instantánea del registro que se ha producido en las últimas tres horas:
bmctl check cluster --snapshot --since=3h \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Especifica un directorio en el que se guardará la instantánea temporalmente.
Puedes usar la marca --snapshot-temp-output-dir
para especificar un directorio en el que se guardará la instantánea temporalmente:
bmctl check cluster --snapshot --snapshot-temp-output-dir=TEMP_OUTPUT_DIR \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Si no especificas un directorio, la instantánea se guardará temporalmente en el directorio /tmp
. Es recomendable usar la opción --snapshot-temp-output-dir
cuando el espacio del directorio /tmp
predeterminado sea limitado, por ejemplo.
Suprimir el registro de mensajes en la consola
Puedes usar la marca --quiet
para evitar que los mensajes de registro aparezcan en la consola durante una ejecución de una instantánea. En su lugar, los registros de la consola se guardan en el archivo "bmctl_diagnose_snapshot.log" como parte de la instantánea.
Ejecuta el siguiente comando para evitar que aparezcan mensajes de registro en la consola:
bmctl check cluster --snapshot --quiet \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Ajustar el multihilo paralelo en la línea de comandos
La rutina de creación de instantáneas suele ejecutar numerosos comandos. Los múltiples hilos paralelos te permiten ejecutar comandos simultáneamente, lo que ayuda a que la rutina se ejecute más rápido.
En la versión 1.31 y posteriores, el comando bmctl check cluster
admite la marca --num-of-parallel-threads
. Esta marca se usa para definir el número de
hilos paralelos que se usan para crear copias de seguridad.
De forma predeterminada, la rutina de creación de la instantánea usa 10 subprocesos. Si tus copias tardan demasiado, aumenta este valor.
El siguiente comando de ejemplo define el número de subprocesos paralelos en 30
.
bmctl check cluster --snapshot --cluster=cluster1 \
--admin-kubeconfig=bmctl-workspace/admin-cluster/admin-cluster-kubeconfig \
--num-of-parallel-threads=30
Esta función es similar al numOfParallelThreads
campo del archivo de configuración de la instantánea
cuando creas instantáneas personalizadas.
Vistas generales personalizadas
Puede que quieras crear una captura personalizada de un clúster por los siguientes motivos:
- Para incluir más información sobre tu clúster que la que se proporciona en la instantánea predeterminada.
- Para excluir información de la captura predeterminada.
Crear una instantánea personalizada
Para crear una captura personalizada, debes usar un archivo de configuración de la captura. En los pasos siguientes 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 ejecutando el siguiente comando en tu clúster y escribiendo el resultado en un archivo:
bmctl check cluster \ --snapshot --snapshot-dry-run --cluster CLUSTER_NAME \ --kubeconfig KUBECONFIG_PATH
Define qué tipo de información quieres que aparezca en tu resumen personalizado. Para ello, modifica el archivo de configuración de la instantánea que has creado en el paso 1. Por ejemplo, si quieres que la instantánea contenga información adicional, como el tiempo que lleva ejecutándose un nodo concreto, añade el comando de Linux
uptime
a la sección correspondiente del archivo de configuración.El siguiente fragmento de un archivo de configuración muestra cómo hacer que el comando de instantánea proporcione información
uptime
sobre el nodo10.200.0.3
. Esta información no aparece en una captura estándar.... nodeCommands: - nodes: - 10.200.0.3 commands: - uptime ...
Una vez que hayas modificado el archivo de configuración para definir el tipo de instantánea que quieras, crea la instantánea personalizada ejecutando el siguiente comando:
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE \ --cluster CLUSTER_NAME--kubeconfig KUBECONFIG_PATH
La marca
--snapshot-config
indica al comandobmctl
que use el contenido del archivo de configuración de la instantánea para definir qué información aparece en la instantánea.
El archivo de configuración en detalle
El siguiente archivo de configuración de ejemplo de una instantánea muestra los comandos y archivos estándar que se usan para crear una instantánea, pero puedes añadir más comandos y archivos si necesitas 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 de tu archivo de configuración sean diferentes de las que aparecen en el archivo de configuración de ejemplo anterior:
- Las direcciones IP de los nodos de las secciones
nodeCommands
ynodeFiles
- La ruta al
nodeSSHKey
de tu clúster
Campos del archivo de configuración
Los archivos de configuración de las copias de seguridad tienen formato YAML. El archivo de configuración incluye los siguientes campos:
numOfParallelThreads
: la rutina de la instantánea suele ejecutar numerosos comandos. Varios hilos paralelos ayudan a que la rutina se ejecute más rápido. Te recomendamos que definasnumOfParallelThreads
como10
, tal como se muestra en el archivo de configuración de ejemplo anterior. Si las instantáneas tardan demasiado, aumenta este valor.excludeWords
: la instantánea contiene una gran cantidad de datos de los nodos de tu clúster. UsaexcludeWords
para reducir los riesgos de seguridad cuando compartas tu captura. Por ejemplo, excluyepassword
para que no se puedan identificar las cadenas de contraseñas correspondientes.nodeCommands
: en esta sección se especifica la siguiente información:nodes
: una lista de direcciones IP de los nodos del clúster de los que quieras recoger información. Para crear una captura cuando no se pueda acceder al clúster de administrador, especifica al menos una dirección IP de nodo.commands
: lista de comandos (y argumentos) que se ejecutarán en cada nodo. La salida de cada comando se incluye en la instantánea.
nodeFiles
: en esta sección se especifica la siguiente información:nodes
: una lista de direcciones IP de los nodos del clúster de los que quieras recoger archivos. Para crear una instantánea cuando no se pueda acceder al clúster de administrador, especifica al menos una dirección IP de nodo.files
: una lista de archivos que se van a recuperar de cada nodo. Cuando se encuentran los archivos especificados en un nodo, se incluyen en la instantánea.
nodeSSHKey
: ruta al archivo de claves SSH. Este campo es obligatorio cuando no se puede acceder al clúster de administrador.
Crear capturas cuando se produzcan errores concretos
Es posible que se necesiten pasos o parámetros de comandos adicionales para crear una captura correctamente cuando se produzcan determinados eventos, como una actualización detenida.
Crear una captura predeterminada durante instalaciones o actualizaciones bloqueadas
Al instalar o actualizar clústeres de administrador, híbridos o independientes, bmctl
puede
detenerse en puntos en los que se pueden ver los siguientes resultados:
- Esperando a que kubeconfig del clúster esté listo.
- Esperando a que el clúster esté listo.
- Esperando a que los grupos de nodos estén listos.
- Esperando a que se complete la actualización.
Si la instalación o la actualización se detiene, puedes hacer una instantánea de un clúster mediante el clúster de arranque, como se muestra en el siguiente ejemplo:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Crear una copia de seguridad personalizada durante instalaciones o actualizaciones bloqueadas
En los siguientes pasos se muestra cómo crear una instantánea personalizada de un clúster cuando se bloquea una instalación o una actualización:
Recupera un archivo de configuración de la instantánea del clúster de tus archivos.
Modifica el archivo de configuración de la instantánea para que contenga la información que quieras.
Para crear la instantánea personalizada, ejecuta el siguiente comando:
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE \ --cluster=CLUSTER_NAME --kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Crear una captura personalizada cuando no se pueda acceder al clúster de administrador
Cuando no se puede acceder al clúster de administrador, puedes hacer una instantánea personalizada del clúster ejecutando el siguiente comando:
bmctl check cluster --snapshot --cluster CLUSTER_NAME
--node-ssh-key SSH_KEY_FILE
--nodes NODE_1_IP_ADDRESS, NODE_2_IP_ADDRESS, ...
En el comando, sustituya las siguientes entradas por la información específica de su entorno de clúster:
CLUSTER_NAME
: el nombre del clúster del que quieras hacer una instantánea.SSH_KEY_FILE
: la ruta al archivo de claves SSH del nodo.NODE_x_IP_ADDRESS
: la dirección IP de un nodo de clúster del que quieres obtener información.
También puedes enumerar las direcciones IP de los nodos en líneas independientes:
bmctl check cluster
--snapshot --cluster CLUSTER_NAME \
--node-ssh-key SSH_KEY_FILE \
--nodes NODE_1_IP_ADDRESS \
--nodes NODE_2_IP_ADDRESS
...
Información de la VM en las capturas
Si usas el entorno de ejecución de máquinas virtuales en GDC para crear y gestionar máquinas virtuales en Google Distributed Cloud, puedes recoger información de diagnóstico relevante en instantáneas. Las snapshots son un recurso fundamental para diagnosticar y solucionar problemas relacionados con tus VMs.
Qué se recoge de forma predeterminada
Cuando crea una instantánea predeterminada, esta contiene información sobre el entorno de ejecución de máquinas virtuales en GDC y los recursos relacionados.
VM Runtime en GDC se incluye con Google Distributed Cloud y el recurso personalizado VMRuntime
está disponible en los clústeres que ejecutan cargas de trabajo.
Aunque no hayas habilitado el entorno de ejecución de máquinas virtuales en GDC, la instantánea seguirá conteniendo la descripción en YAML del recurso personalizado VMRuntime
.
Si has habilitado el entorno de ejecución de máquinas virtuales en GDC, las copias de seguridad contienen información sobre el estado y la configuración de los recursos relacionados con las máquinas virtuales (cuando los objetos están presentes) de tu clúster. Los recursos relacionados con las VMs incluyen objetos de Kubernetes, como pods, despliegues, DaemonSets y ConfigMaps.
Objetos del espacio de nombres vm-system
La información de estado y configuración de los siguientes objetos se encuentra en kubectlCommands/vm-system
en la instantánea generada:
KubeVirt
VirtualMachineType
VMHighAvailabilityPolicy
Objetos de otros espacios de nombres
Cuando creas una VM (VirtualMachine
), puedes especificar el espacio de nombres. Si no especificas ningún espacio de nombres, la VM obtiene el espacio de nombres default
. Los demás objetos de esta sección, como VirtualMachineInstance
, están vinculados al espacio de nombres de la VM correspondiente.
La información sobre el estado y la configuración de los siguientes objetos se encuentra en
kubectlCommands/VM_NAMESPACE
en la instantánea generada. Si no has definido un espacio de nombres específico para tu máquina virtual, la información se encuentra en kubectlCommands/default
:
VirtualMachine
VirtualMachineInstance
VirtualMachineDisk
GuestEnvironmentData
VirtualMachineAccessRequest
VirtualMachinePasswordResetRequest
Objetos que no tienen espacio de nombres
Los siguientes objetos no tienen espacio de nombres, por lo que su información correspondiente se encuentra directamente en kubectlCommands
en la instantánea generada:
VMRuntime
DataVolume
CDI
GPUAllocation
Usar un archivo de configuración de la instantánea para capturar solo los detalles de la VM
Si estás diagnosticando problemas de máquinas virtuales concretas, puedes usar un archivo de configuración de instantánea para restringir la información recogida a los detalles relacionados con las máquinas virtuales y personalizar la información de las máquinas virtuales que se recoge.
El siguiente archivo de configuración de la instantánea muestra cómo puedes crear una instantánea específica de una VM. Puedes incluir comandos adicionales para recoger más información para tu instantánea.
---
kubectlCommands:
- commands:
- kubectl get vm -o wide
- kubectl get vmi -o wide
- kubectl get gvm -o wide
- kubectl get vm -o yaml
- kubectl get vmi -o yaml
- kubectl get gvm -o yaml
- kubectl describe vm
- kubectl describe vmi
- kubectl describe gvm
namespaces:
- .*
- commands:
- kubectl get virtualmachinetype -o wide
- kubectl get virtualmachinedisk -o wide
- kubectl get virtualmachinetype -o yaml
- kubectl get virtualmachinedisk -o yaml
- kubectl describe virtualmachinetype
- kubectl describe virtualmachinedisk
namespaces:
- vm-system
Para obtener más información sobre cómo usar archivos de configuración de capturas, consulta la sección Capturas personalizadas de este documento.
Siguientes pasos
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud. También puedes consultar la sección Obtener asistencia para obtener más información sobre los recursos de asistencia, incluidos los siguientes:
- Requisitos para abrir un caso de asistencia.
- Herramientas para ayudarte a solucionar problemas, como la configuración de tu entorno, los registros y las métricas.
- Componentes admitidos.