Puedes diagnosticar o verificar los clústeres para depurar problemas y capturar una instantánea del estado del clúster. Además, si realizaste la instalación de forma parcial, pero el clúster muestra errores o no funciona de forma correcta, puedes intentar restablecer el clúster.
Diagnostica clústeres con bmctl check cluster
Puedes capturar el estado de los clústeres creados con el
comando bmctl check cluster
. Las marcas del comando te permiten elegir el
alcance de diagnóstico del comando para que puedas obtener información enfocada.
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.
bmctl check cluster --snapshot --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
Reemplaza lo siguiente:
CLUSTER_NAME: Es el nombre del clúster de destino.
ADMIN_KUBECONFIG_PATH: Es la ruta al archivo
kubeconfig
del clúster de administrador
Este comando genera un archivo tar que incluye información de depuración relevante de todos los componentes y las máquinas del sistema en el clúster que especificaste.
Puedes cambiar el alcance de la información de diagnóstico recopilada con las siguientes marcas de comando:
- La marca
--snapshot-scenario all
aumenta el alcance de la instantánea de diagnóstico para incluir todos los Pods en el clúster especificado:
bmctl check cluster --snapshot --snapshot-scenario all --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
- La marca
--snapshot-dry-run
funciona junto con la marca--snapshot-config string
. Usa la marca--snapshot-dry-run
a fin de generar un archivo de configuración que puedas modificar para definir un alcance de diagnóstico personalizado. Tu alcance puede incluir Pods, espacios de nombres o comandos de nodo específicos.
Después de modificar el archivo de salida creado con la marca --snapshot-dry-run
,
puedes usarlo como entrada para diagnosticar tu alcance específico con la
marca --snapshot-config string
, que se describe a continuación. Si omites esta marca, se
aplica una configuración predeterminada.
bmctl check cluster --snapshot --snapshot-dry-run --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
- La marca
--snapshot-config
le indica al comandobmctl
que use las opciones de alcance especificadas en un archivo de configuración de instantáneas. Por lo general, debes crear el archivo de configuración de instantáneas con la marca--snapshot-dry-run
.
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
Diagnostica clústeres cuando no se puede acceder al clúster de administrador
Cuando el clúster de administrador esté inactivo o no se pueda acceder, usa un archivo de configuración de instantáneas para tomar una instantánea del clúster. Un archivo de configuración de instantáneas tiene el formato YAML. En el archivo de configuración, se incluyen los siguientes campos a fin de especificar cómo se captura la información para tu clúster:
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 establecernumOfParallelThreads
en10
como se muestra en el siguiente ejemplo. 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
: Una lista de direcciones IP para 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
: La ruta de acceso al archivo de clave SSH para los nodos. Este campo es obligatorio para crear una instantánea cuando no se puede acceder al clúster de administrador.
Usa el siguiente comando para crear una instantánea mediante un archivo de configuración de instantáneas:
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG
Reemplaza SNAPSHOT_CONFIG
por la ruta de acceso al archivo de configuración de instantánea.
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. Puedes agregar más comandos y archivos cuando se necesite información adicional de diagnóstico.
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 to each nodes
Crea una instantánea para la instalación o actualización detenida del clúster de administrador
Cuando instalas clústeres independientes de administrador, híbridos e independientes, si bmctl está atascado en el siguiente resultado
- 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
o cuando se actualizan los clústeres de administrador, híbridos o independientes
- Espera a que se complete la actualización
Puedes ejecutar el siguiente comando para tomar una instantánea mediante el clúster de arranque.
bmctl check cluster --snapshot --kubeconfig <var>WORKSPACE_DIR</var>/.kindkubeconfig --cluster <var>CLUSTER_NAME</var>
Restablece clústeres con bmctl reset cluster
Cuando un clúster no se instala de forma correcta, puedes intentar restablecer los nodos a un estado limpio si lo restableces. Luego, puedes volver a instalar el clúster después de realizar cambios en la configuración.
Restablece clústeres autoadministrados
Para restablecer un clúster que se administre por sí mismo, como un clúster de administrador, ejecuta el siguiente comando:
bmctl reset --cluster CLUSTER_NAME
Reemplaza CLUSTER_NAME por el nombre del clúster que deseas restablecer.
Restablece clústeres de usuario
Para restablecer un clúster, ejecuta el siguiente comando:
bmctl reset --cluster CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH
Reemplaza CLUSTER_NAME por el nombre del clúster de usuario que deseas restablecer, y reemplaza ADMIN_KUBECONFIG_PATH por la ruta de acceso al archivo kubeconfig
del clúster de administrador asociado. bmctl
admite el uso de --kubeconfig
como un alias para la marca --admin-kubeconfig
.
Restablece los detalles del clúster
Sin importar el tipo de clúster, el comando de restablecimiento se aplica a todo el clúster. No hay opción para apuntar un subconjunto de nodos en un clúster.
El resultado del comando bmctl cluster reset
es similar al siguiente ejemplo:
bmctl reset --cluster cluster1 Creating bootstrap cluster... OK Deleting GKE Hub member admin in project my-gcp-project... Successfully deleted GKE Hub member admin in project my-gcp-project Loading images... OK Starting reset jobs... Resetting: 1 Completed: 0 Failed: 0 ... Resetting: 0 Completed: 1 Failed: 0 Flushing logs... OK
Durante la operación de restablecimiento, bmctl
primero intenta borrar el registro de la membresía
de GKE Hub y, luego, limpia los nodos afectados. Durante el restablecimiento, también se borran los datos y las activaciones de almacenamiento de anthos-system StorageClass
.
Para todos los nodos, bmctl ejecuta kubeadm reset
, quita las interfaces de túnel que se usan para las redes del clúster y borra los siguientes directorios:
/etc/kubernetes
/etc/cni/net.d
/root/.kube
/var/lib/kubelet
En los nodos del balanceador de cargas, bmctl
también realiza las siguientes acciones:
- Inhabilita los servicios
keepalived
yhaproxy
- Borra los archivos de configuración de
keepalived
yhaproxy
La herramienta de restablecimiento espera que el archivo de configuración del clúster esté en la siguiente ubicación del directorio de trabajo actual:
bmctl-workspace/cluster name/cluster name.yaml