En este documento se muestra cómo usar el comando gkectl diagnose
para crear instantáneas de diagnóstico para solucionar problemas en los clústeres creados con Google Distributed Cloud (solo software) para VMware cuando está habilitado el clúster avanzado.
El clúster avanzado se habilita cuando enableAdvancedClusters
se define como true
en el archivo de configuración del clúster de administradores y en el archivo de configuración del clúster de usuarios. Si el clúster avanzado no está habilitado, consulta Crear capturas de diagnóstico cuando el clúster avanzado no esté habilitado.
gkectl diagnose snapshot
Este comando comprime el estado, las configuraciones y los registros de un clúster en un archivo tar. La configuración predeterminada del comando gkectl diagnose snapshot 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.
Estado del plano de control.
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.
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.
Registros del comando
gkectl diagnose snapshot
.Registros de las tareas de comprobación preparatoria.
Registros de contenedores en espacios de nombres basados en las situaciones.
Las credenciales, incluidas las de vSphere y F5, se eliminan antes de crear el archivo tar.
Capturar el estado del clúster de administrador
Para capturar el estado de un clúster de administrador, ejecuta el siguiente comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Sustituye ADMIN_CLUSTER_KUBECONFIG
por la ruta al archivo kubeconfig del clúster de administrador.
La salida incluye una lista de archivos y el nombre de un archivo tar, como se muestra en el siguiente ejemplo:
Using "system" snapshot configuration...
Creating ssh signer for "[ADMIN_CLUSTER_NAME]"...
Taking snapshots in 10 thread(s)...
gkectlLogs/gkectl-xxx.log
...
kubectlCommands/[NAMESPACE]/kubectl_get_pods
kubectlCommands/[NAMESPACE]/kubectl_get_deployments
kubectlCommands/[NAMESPACE]/kubectl_get_daemonsets
...
nodes/[ADMIN_CLUSTER_NODE]/commands/journalctl_-u_kubelet
nodes/[ADMIN_CLUSTER_NODE]/files/var/log/startup.log
...
Snapshot succeeded. Output saved in [FILENAME].tar.gz.
Para extraer el archivo tar en un directorio, ejecuta el siguiente comando:
tar -zxf TAR_FILE_NAME --directory EXTRACTION_DIRECTORY_NAME
Haz los cambios siguientes:
TAR_FILE_NAME
: el nombre del archivo tar.EXTRACTION_DIRECTORY_NAME
: el directorio en el que quieres extraer el archivo tar.
Para ver la lista de archivos que genera la instantánea, ejecuta los siguientes comandos:
cd EXTRACTION_DIRECTORY_NAME/EXTRACTED_SNAPSHOT_DIRECTORY ls kubectlCommands ls nodes/NODE_NAME/commands ls nodes/NODE_NAME/files
Sustituye NODE_NAME
por el nombre del nodo del que quieras ver los archivos.
Para ver los detalles de una operación concreta, abre uno de los archivos.
Especificar la clave SSH del clúster de administrador
Cuando obtienes una instantánea del clúster de administrador, gkectl
busca automáticamente la clave SSH privada del clúster de administrador. También puedes especificar la clave explícitamente mediante el parámetro --admin-ssh-key-path
.
Sigue las instrucciones de la sección Conectarse a un nodo de clúster mediante SSH para descargar las claves SSH.
En el comando gkectl diagnose snapshot
, asigna --admin-ssh-key-path
a la ruta de clave decodificada:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --admin-ssh-key-path=PATH_TO_DECODED_KEY
Capturar el estado de un clúster de usuarios
Para capturar el estado de un clúster de usuario, ejecuta el siguiente comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME
En el siguiente ejemplo de salida se incluye una lista de archivos y el nombre de un archivo tar:
Using "system" snapshot configuration...
Creating ssh signer for "[USER_CLUSTER_NAME]"...
Taking snapshots in 10 thread(s)...
gkectlLogs/gkectl-xxx.log
...
kubectlCommands/[NAMESPACE]/kubectl_get_pods
kubectlCommands/[NAMESPACE]/kubectl_get_deployments
kubectlCommands/[NAMESPACE]/kubectl_get_daemonsets
...
nodes/[USER_CLUSTER_NODE_IP_ADDRESS]/commands/journalctl_-u_kubelet
nodes/[USER_CLUSTER_NODE_IP_ADDRESS]/files/var/log/startup.logn
...
Snapshot succeeded. Output saved in [FILENAME].tar.gz.
Situaciones de capturas
Los escenarios de la función de crear una copia te permiten controlar la información que se incluye en una copia. Para especificar un escenario, usa la marca --scenario
. En la siguiente lista se muestran los valores posibles:
system
(predeterminado): recoge una instantánea con los registros de los espacios de nombres del sistema admitidos.all
: recoge una instantánea con los registros de todos los espacios de nombres, incluidos los definidos por el usuario.
Para crear una captura del clúster de administrador, no es necesario que especifiques un escenario:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Para crear una instantánea de un clúster de usuarios con el escenario system
, sigue estos pasos:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=system
Para crear una instantánea de un clúster de usuarios con el escenario all
, sigue estos pasos:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=all
Usar --log-since
para limitar una captura
Puedes usar la marca --log-since
para limitar la recogida de registros a un periodo reciente. Por ejemplo, puedes recoger solo los registros de los últimos dos días o de las últimas tres horas. De forma predeterminada, diagnose snapshot
recoge todos los registros.
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=CLUSTER_NAME \ --scenario=system \ --log-since=DURATION
Sustituye <var>DURATION</var>
por un valor de hora, como 120m
o 48h
.
Ten en cuenta lo siguiente:
- La marca
--log-since
solo se admite en los registroskubectl
yjournalctl
. - No se permiten marcas de comando como
--log-since
en la configuración de la instantánea personalizada.
Realizar una prueba de funcionamiento de una instantánea
Puedes usar la marca --dry-run
para mostrar las acciones que se deben llevar a cabo y la configuración de la instantánea.
Para hacer una prueba de funcionamiento en tu clúster de administrador, introduce el siguiente comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=ADMIN_CLUSTER_NAME \ --dry-run
Para hacer una prueba de funcionamiento en un clúster de usuario, introduce el siguiente comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --dry-run
Usar una configuración de captura
Si estos dos casos (--scenario system
o all
) no se ajustan a tus necesidades, puedes crear una instantánea personalizada. Para ello, debes proporcionar un archivo de configuración de instantánea mediante la marca --snapshot-config
:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --snapshot-config=SNAPSHOT_CONFIG_FILE
Generar una configuración de captura
Para generar una configuración de instantánea de un escenario concreto, debes incluir las marcas --scenario
y --dry-run
. Por ejemplo, para ver la configuración de la instantánea del escenario predeterminado (system
) de un clúster de usuario, introduce el siguiente comando:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=system --dry-run
La salida es similar al siguiente ejemplo:
The snapshot configuration is:
numOfParallelThreads: 10
excludeWords:
- password
kubectlCommands:
- commands:
- kubectl version
- kubectl cluster-info
- kubectl top node
- kubectl top pod -A --containers
namespaces: []
- commands:
- kubectl get -o wide --ignore-not-found
- kubectl get -o yaml --ignore-not-found
- kubectl describe
namespaces:
- kube-system
...
expandResources: true
- commands:
- kubectl logs
namespaces:
- kube-system
...
kindNodeCommands: []
nodeCommands:
- nodes: []
commands:
- uptime
- df --all --inodes
- ip addr
- ip neigh
- iptables-save --counters
- mount
- ip route list table all
- top -bn1 || true
- docker info || true
...
- nodes: []
commands:
- dmesg
- systemctl status -l kubelet
- journalctl --utc -u kubelet
- journalctl --utc -u kubelet-monitor.service
...
nodeFiles:
- nodes: []
files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
...
- nodes: []
files:
- /var/log/apiserver/audit-proxy-buffer/* || true
En el resultado se muestra la siguiente información:
numOfParallelThreads
: número de hilos paralelos que se usan para hacer capturas.excludeWords
: lista de palabras que se excluirán de la instantánea (no distingue entre mayúsculas y minúsculas). Las líneas que contengan estas palabras se eliminarán de los resultados de la captura. "password" siempre se excluye, tanto si la especificas como si no.kubectlCommands
: lista de comandos kubectl que se van a ejecutar. Los resultados se guardan. Los comandos se ejecutan en los espacios de nombres correspondientes. En el caso de los comandos dekubectl logs
, todos los pods y contenedores de los espacios de nombres correspondientes se añaden automáticamente. Se admiten expresiones regulares para especificar espacios de nombres. Si no especifica un espacio de nombres, se presupone el espacio de nombresdefault
.nodeCommands
: lista de comandos que se ejecutarán en los nodos correspondientes. Los resultados se guardan. Si no se especifican nodos, se tendrán en cuenta todos los nodos del clúster de destino.nodeFiles
: lista de archivos que se van a recoger de los nodos correspondientes. Los archivos se han guardado. Si no se especifican nodos, se tienen en cuenta todos los nodos del clúster de destino.
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 registros y métricas.
- Componentes, versiones y funciones compatibles de Google Distributed Cloud para VMware (solo software).