Este documento mostra como usar o comando gkectl diagnose
para criar
capturas instantâneas de diagnóstico para resolver problemas nos seus clusters criados com o
Google Distributed Cloud (apenas software) para VMware quando o cluster avançado está ativado.
O cluster avançado é ativado quando enableAdvancedClusters
está definido como true
no
ficheiro de configuração do cluster de administrador
e no ficheiro de configuração do cluster de utilizador. Se o cluster avançado não estiver ativado, consulte o artigo Crie capturas de ecrã de diagnóstico quando o cluster avançado não estiver ativado.
gkectl diagnose snapshot
Este comando comprime o estado, as configurações e os registos de um cluster num ficheiro tar. A configuração predefinida do comando gkectl diagnose snapshot captura as seguintes informações sobre o cluster:
Versão do Kubernetes.
Estado dos recursos do Kubernetes nos espaços de nomes kube-system e gke-system: cluster, máquina, nós, serviços, pontos finais, ConfigMaps, ReplicaSets, CronJobs, pods e os proprietários desses pods, incluindo implementações, DaemonSets e StatefulSets.
Estado do plano de controlo.
Detalhes sobre cada configuração de nó, incluindo endereços IP, regras de iptables, pontos de montagem, sistema de ficheiros, ligações de rede e processos em execução.
Registos de contentores do nó do plano de controlo do cluster de administrador quando o servidor da API Kubernetes não está disponível.
Registos do comando
gkectl diagnose snapshot
.Registos de tarefas de pré-publicação.
Registos de contentores em espaços de nomes com base nos cenários.
As credenciais, incluindo as do vSphere e F5, são removidas antes de o ficheiro TAR ser criado.
Capturar o estado do cluster de administrador
Para capturar o estado de um cluster de administrador, execute o seguinte comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Substitua ADMIN_CLUSTER_KUBECONFIG
pelo caminho para o ficheiro kubeconfig do cluster de administrador.
A saída inclui uma lista de ficheiros e o nome de um ficheiro TAR, conforme mostrado no seguinte exemplo de saída:
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 extrair o ficheiro tar para um diretório, execute o seguinte comando:
tar -zxf TAR_FILE_NAME --directory EXTRACTION_DIRECTORY_NAME
Substitua o seguinte:
TAR_FILE_NAME
: o nome do ficheiro TAR.EXTRACTION_DIRECTORY_NAME
: o diretório para o qual quer extrair o arquivo do ficheiro TAR.
Para ver a lista de ficheiros produzidos pela captura instantânea, execute os seguintes comandos:
cd EXTRACTION_DIRECTORY_NAME/EXTRACTED_SNAPSHOT_DIRECTORY ls kubectlCommands ls nodes/NODE_NAME/commands ls nodes/NODE_NAME/files
Substitua NODE_NAME
pelo nome do nó para o qual quer ver os ficheiros.
Para ver os detalhes de uma operação específica, abra um dos ficheiros.
Especifique a chave SSH para o cluster de administrador
Quando obtém uma captura instantânea do cluster de administrador, o gkectl
encontra automaticamente a chave SSH privada para o cluster de administrador. Também pode especificar a chave explicitamente através do parâmetro --admin-ssh-key-path
.
Siga as instruções para Usar o SSH para estabelecer ligação a um nó do cluster para transferir as chaves SSH.
No comando gkectl diagnose snapshot
, defina --admin-ssh-key-path
para o caminho da chave descodificada:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --admin-ssh-key-path=PATH_TO_DECODED_KEY
Capture o estado do cluster de utilizadores
Para capturar o estado de um cluster de utilizadores, execute o seguinte comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME
O exemplo de saída seguinte inclui uma lista de ficheiros e o nome de um ficheiro 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.
Cenários de instantâneos
Os cenários de instantâneos permitem-lhe controlar as informações incluídas num instantâneo. Para especificar um cenário, use a flag --scenario
. A lista que se segue
mostra os valores possíveis:
system
(predefinição): recolhe o instantâneo com registos nos espaços de nomes do sistema suportados.all
: recolhe um instantâneo com registos em todos os espaços de nomes, incluindo espaços de nomes definidos pelo utilizador.
Para criar um instantâneo do cluster de administrador, não precisa de especificar um cenário:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Para criar uma imagem instantânea de um cluster de utilizadores através do cenário system
:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=system
Para criar uma imagem instantânea de um cluster de utilizadores através do cenário all
:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=all
Use --log-since
para limitar um instantâneo
Pode usar a flag --log-since
para limitar a recolha de registos a um período recente. Por exemplo, pode recolher apenas os registos dos últimos dois dias ou das últimas três horas. Por predefinição, o diagnose snapshot
recolhe todos os registos.
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=CLUSTER_NAME \ --scenario=system \ --log-since=DURATION
Substitua <var>DURATION</var>
por um valor de tempo, como 120m
ou 48h
.
Aplicam-se as seguintes considerações:
- A flag
--log-since
só é suportada para registoskubectl
ejournalctl
. - As flags de comando, como
--log-since
, não são permitidas na configuração de instantâneo personalizada.
Faça um ensaio de um instantâneo
Pode usar a flag --dry-run
para mostrar as ações a realizar e a configuração de instantâneos.
Para fazer um teste de execução no cluster de administrador, introduza o seguinte comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=ADMIN_CLUSTER_NAME \ --dry-run
Para fazer um teste de execução num cluster de utilizadores, introduza o seguinte comando:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --dry-run
Use uma configuração de instantâneo
Se estes dois cenários (--scenario system
ou all
) não satisfizerem as suas necessidades, pode criar um resumo personalizado transmitindo um ficheiro de configuração do resumo através da flag --snapshot-config
:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --snapshot-config=SNAPSHOT_CONFIG_FILE
Gere uma configuração de instantâneo
Pode gerar uma configuração de resumo para um determinado cenário transmitindo as flags --scenario
e --dry-run
. Por exemplo, para ver a configuração de instantâneo para o cenário predefinido (system
) de um cluster de utilizadores, introduza o seguinte comando:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=system --dry-run
O resultado é semelhante ao seguinte exemplo:
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
As seguintes informações são apresentadas no resultado:
numOfParallelThreads
: número de threads paralelos usados para tirar instantâneos.excludeWords
: lista de palavras a excluir do resumo (sem distinção entre maiúsculas e minúsculas). As linhas que contêm estas palavras são removidas dos resultados da análise rápida. "palavra-passe" é sempre excluída, quer a especifique ou não.kubectlCommands
: lista de comandos kubectl a executar. Os resultados são guardados. Os comandos são executados nos espaços de nomes correspondentes. Para comandoskubectl logs
, todos os pods e contentores nos espaços de nomes correspondentes são adicionados automaticamente. As expressões regulares são suportadas para especificar espaços de nomes. Se não especificar um espaço de nomes, é assumido o espaço de nomesdefault
.nodeCommands
: lista de comandos a executar nos nós correspondentes. Os resultados são guardados. Quando não são especificados nós, são considerados todos os nós no cluster de destino.nodeFiles
: lista de ficheiros a recolher dos nós correspondentes. Os ficheiros são guardados. Quando os nós não são especificados, todos os nós no cluster de destino são considerados.
O que se segue?
Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud.
Também pode consultar o artigo Receber apoio técnico para mais informações sobre recursos de apoio técnico, incluindo o seguinte:
- Requisitos para abrir um registo de apoio ao cliente.
- Ferramentas para ajudar a resolver problemas, como registos e métricas.
- Componentes suportados, versões e funcionalidades do Google Distributed Cloud para VMware (apenas software).