Quando tem um problema com um dos seus clusters, pode obter ajuda do Cloud Customer Care. O apoio ao cliente pode pedir-lhe que faça uma "captura instantânea" do cluster, que pode usar para diagnosticar o problema. Um instantâneo captura os ficheiros de configuração do cluster e do nó, e agrupa essas informações num único ficheiro TAR.
Este documento descreve como criar instantâneos predefinidos ou instantâneos mais personalizados de um cluster. Também explica como criar instantâneos quando um cluster está a ter erros específicos.
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 a configuração do ambiente, os registos e as métricas.
- Componentes suportados.
Capturas de ecrã predefinidas
As secções seguintes descrevem o conteúdo de uma imagem instantânea padrão e como criar uma. Para ver informações sobre resumos personalizados, consulte a secção sobre resumos personalizados.
Que informações contém uma captura de ecrã predefinida?
O resumo de um cluster é um ficheiro TAR de ficheiros de configuração e registos sobre o cluster. Especificamente, a configuração predefinida do comando captura as seguintes informações sobre o seu 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.
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.
Informações sobre o tempo de execução da VM no GDC e quaisquer VMs e recursos relacionados com VMs em execução no seu cluster. Para mais informações sobre o que é recolhido por predefinição e como criar instantâneos específicos da VM, consulte Informações da VM em instantâneos neste documento.
Registos do comando
bmctl check cluster --snapshot
.
As informações de credenciais de um cluster não estão incluídas na captura instantânea predefinida. Se o apoio técnico ao cliente da nuvem solicitar essas informações, consulte o artigo Obter informações do cluster.
Para ver uma lista abrangente das informações recolhidas quando executa o comando snapshot, consulte a secção seguinte sobre o ficheiro de configuração em detalhe. Este ficheiro de configuração mostra os comandos executados quando é tirada uma captura de ecrã predefinida.
Crie um instantâneo predefinido
O comando bmctl check cluster
tira um instantâneo de um cluster. Pode usar este comando para realizar qualquer uma das seguintes ações:
- Crie um instantâneo e carregue-o automaticamente para um contentor do Cloud Storage.
- Crie um instantâneo de um cluster e guarde o ficheiro de instantâneo na máquina local na qual está a executar o comando.
Método n.º 1: crie uma imagem instantânea predefinida e carregue-a automaticamente para o contentor do Cloud Storage
Para criar e carregar uma captura instantânea para um contentor do Cloud Storage, faça o seguinte:
Configure a API e a conta de serviço conforme descrito no artigo Configure uma conta de serviço que possa aceder a um contentor do Cloud Storage.
Este é um passo único.
Execute o seguinte comando
bmctl
para criar e carregar automaticamente uma captura de ecrã para um contentor do Cloud Storage:bmctl check cluster --snapshot --cluster=CLUSTER_NAME \ --admin-kubeconfig=ADMIN_KUBECONFIG \ --service-account-key-file SA_KEY_FILE
Substitua as seguintes entradas por informações específicas do seu ambiente de cluster:
CLUSTER_NAME
: o nome do cluster do qual quer tirar uma captura de ecrã.ADMIN_KUBECONFIG
: o caminho para o ficheiro kubeconfig do cluster de administrador.SA_KEY_FILE
: o caminho para o ficheiro de chave JSON transferido para a conta de serviço criada no passo anterior. Se não usar a flag--service-account-key-file
, o comando usa as credenciais associadas à variável de ambienteGOOGLE_APPLICATION_CREDENTIALS
. A especificação explícita das credenciais da conta de serviço com a flag tem precedência.
Este comando gera um ficheiro tar de instantâneo e guarda-o localmente. Quando a conta de serviço está configurada corretamente, o comando também carrega o ficheiro TAR da captura de ecrã para um contentor no Cloud Storage. O comando pesquisa no seu projeto um contentor de armazenamento com um nome que comece por "
anthos-snapshot-
". Se existir um contentor deste tipo, o comando carrega a captura de ecrã para esse contentor. Se o comando não encontrar um contentor com um nome correspondente, cria um novo contentor com o nomeanthos-snapshot-UUID
, em queUUID
é um identificador exclusivo universal de 32 dígitos.Partilhe o acesso com o Cloud Customer Care, conforme descrito no artigo Permita que o Cloud Customer Care veja a sua captura instantânea do cluster carregada.
Método n.º 2: crie um instantâneo predefinido apenas na máquina local
Use a flag --local
para garantir que a captura instantânea do cluster é guardada apenas localmente. Pode capturar o estado dos clusters criados com o seguinte comando:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--admin-kubeconfig=ADMIN_KUBECONFIG --local
Substitua o seguinte:
CLUSTER_NAME
: o nome do cluster de destino.ADMIN_KUBECONFIG
: o caminho para o ficheiro kubeconfig do cluster de administrador.
Este comando gera um ficheiro TAR na sua máquina local. O nome deste ficheiro TAR tem o formato snapshot-CLUSTER_NAME-TIMESTAMP.tar.gz
, em que TIMESTAMP
indica a data e a hora em que o ficheiro foi criado. Este ficheiro TAR inclui informações de depuração relevantes sobre os componentes do sistema e as máquinas de um cluster.
Quando executa este comando, são recolhidas informações sobre os pods dos seguintes espaços de nomes: gke-system
, gke-connect
, capi-system
, capi-webhook-system
, cert-manager
e capi-kubeadm-bootstrap-system
No entanto, pode alargar o âmbito das informações de diagnóstico recolhidas
usando a flag --snapshot-scenario all
. Esta flag aumenta o âmbito da captura de ecrã de diagnóstico para incluir todos os pods num cluster:
bmctl check cluster --snapshot --snapshot-scenario all \
--cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH \
--local
Cenários de instantâneos
O comando bmctl check cluster --snapshot
suporta dois cenários. Para especificar um cenário, use a flag --scenario
. A lista seguinte mostra os possíveis valores:
system
: recolha um resumo dos componentes do sistema, incluindo os respetivos registos.all
: recolher um instantâneo de todos os pods, incluindo os respetivos registos.
Pode usar cada um dos dois cenários com um cluster de administrador ou um cluster de utilizador. O exemplo seguinte cria uma captura instantânea do cluster de administrador através do cenário system
:
bmctl check cluster --snapshot --snapshot-scenario system \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
O exemplo seguinte cria uma imagem instantânea de um cluster de utilizadores através do all
cenário:
bmctl check cluster --snapshot --snapshot-scenario all \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Faça um ensaio de um instantâneo
Quando usa a flag --snapshot-dry-run
, o comando não cria uma captura de ecrã.
Em alternativa, mostra as ações que o comando snapshot executaria e gera um ficheiro de configuração de instantâneo. Para obter informações sobre o ficheiro de configuração do resumo, consulte o artigo Como criar um resumo personalizado.
Para fazer uma simulação de instantâneo no cluster de administrador, introduza o seguinte comando:
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Para executar um instantâneo de teste num cluster de utilizadores, introduza o seguinte comando:
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Obtenha registos de um período específico
Pode usar a flag --since
para obter registos de um período de tempo que lhe
interessa particularmente. Desta forma, pode criar instantâneos mais pequenos e mais focados do registo que ocorreu nos últimos segundos, minutos ou horas.
Por exemplo, o seguinte comando bmctl
cria uma captura de ecrã do registo que ocorreu nas últimas três horas:
bmctl check cluster --snapshot --since=3h \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Especifique um diretório no qual a imagem instantânea é guardada temporariamente
Pode usar a flag --snapshot-temp-output-dir
para especificar um diretório no qual a captura de ecrã é guardada temporariamente:
bmctl check cluster --snapshot --snapshot-temp-output-dir=TEMP_OUTPUT_DIR \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Se não especificar um diretório, a captura instantânea é guardada temporariamente no diretório /tmp
. A utilização da opção --snapshot-temp-output-dir
é uma boa ideia quando, por exemplo, o espaço é limitado no diretório /tmp
predefinido.
Suprimir registo na consola
Pode usar a flag --quiet
para impedir que as mensagens de registo apareçam na consola durante a execução de uma captura instantânea. Em alternativa, os registos da consola são guardados no ficheiro "bmctl_diagnose_snapshot.log" como parte da captura instantânea.
Execute o seguinte comando para impedir a apresentação de mensagens de registo na consola:
bmctl check cluster --snapshot --quiet \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Ajuste a execução em paralelo na linha de comandos
Normalmente, a rotina de instantâneo executa vários comandos. Vários processos paralelos permitem-lhe executar comandos em simultâneo, o que ajuda a rotina a ser executada mais rapidamente.
Na versão 1.31 e posteriores, o comando bmctl check cluster
suporta uma flag --num-of-parallel-threads
. Use esta flag para definir o número de threads paralelos usados para tirar capturas de ecrã.
Por predefinição, a rotina de instantâneo usa 10 threads. Se as capturas de ecrã demorarem demasiado tempo, aumente este valor.
O comando de exemplo seguinte define o número de threads paralelos como 30
.
bmctl check cluster --snapshot --cluster=cluster1 \
--admin-kubeconfig=bmctl-workspace/admin-cluster/admin-cluster-kubeconfig \
--num-of-parallel-threads=30
Esta capacidade é semelhante ao campo numOfParallelThreads
no ficheiro de configuração do resumo,
quando cria resumos personalizados.
Resumos personalizados
Pode querer criar uma imagem instantânea personalizada de um cluster pelos seguintes motivos:
- Para incluir mais informações sobre o cluster do que as fornecidas na captura de ecrã predefinida.
- Para excluir algumas informações que estão na captura de ecrã predefinida.
Crie um instantâneo personalizado
A criação de um instantâneo personalizado requer a utilização de um ficheiro de configuração do instantâneo. Os passos seguintes explicam como criar o ficheiro de configuração, modificá-lo e usá-lo para criar uma imagem instantânea personalizada de um cluster:
Crie um ficheiro de configuração de instantâneo executando o seguinte comando no cluster e escrevendo o resultado num ficheiro:
bmctl check cluster \ --snapshot --snapshot-dry-run --cluster CLUSTER_NAME \ --kubeconfig KUBECONFIG_PATH
Defina o tipo de informações que quer que apareçam na sua vista geral personalizada. Para tal, modifique o ficheiro de configuração da captura de ecrã que criou no passo 1. Por exemplo, se quiser que a captura instantânea contenha informações adicionais, como o tempo de execução de um nó específico, adicione o comando Linux
uptime
à secção relevante do ficheiro de configuração.O seguinte fragmento de um ficheiro de configuração mostra como fazer com que o comando snapshot forneça informações
uptime
sobre o nó10.200.0.3
. Estas informações não aparecem numa captura de ecrã padrão.... nodeCommands: - nodes: - 10.200.0.3 commands: - uptime ...
Depois de modificar o ficheiro de configuração para definir o tipo de instantâneo que quer, crie o instantâneo personalizado executando o seguinte comando:
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE \ --cluster CLUSTER_NAME--kubeconfig KUBECONFIG_PATH
A flag
--snapshot-config
direciona o comandobmctl
para usar o conteúdo do ficheiro de configuração do instantâneo para definir as informações que aparecem no instantâneo.
O ficheiro de configuração em detalhe
O seguinte ficheiro de configuração de exemplo de uma captura de ecrã mostra os comandos e os ficheiros padrão usados para criar uma captura de ecrã, mas pode adicionar mais comandos e ficheiros quando forem necessárias informações de diagnóstico adicionais:
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
É provável que as seguintes entradas no seu ficheiro de configuração sejam diferentes das que aparecem no ficheiro de configuração de exemplo anterior:
- Os endereços IP dos nós nas secções
nodeCommands
enodeFiles
- O caminho para o
nodeSSHKey
do seu cluster
Campos no ficheiro de configuração
Um ficheiro de configuração de instantâneo está no formato YAML. O ficheiro de configuração inclui os seguintes campos:
numOfParallelThreads
: a rotina de instantâneo executa normalmente vários comandos. Vários threads paralelos ajudam a rotina a ser executada mais rapidamente. Recomendamos que definanumOfParallelThreads
como10
, conforme mostrado no ficheiro de configuração de exemplo anterior. Se as capturas de ecrã demorarem demasiado tempo, aumente este valor.excludeWords
: o resumo contém uma grande quantidade de dados para os seus nós de cluster. UseexcludeWords
para reduzir os riscos de segurança quando partilha a sua captura rápida. Por exemplo, excluapassword
para que não seja possível identificar as strings de palavras-passe correspondentes.nodeCommands
: esta secção especifica as seguintes informações:nodes
: uma lista de endereços IP para os nós do cluster a partir dos quais quer recolher informações. Para criar uma captura de ecrã quando o cluster de administrador não estiver acessível, especifique, pelo menos, um endereço IP do nó.commands
: uma lista de comandos (e argumentos) a executar em cada nó. O resultado de cada comando está incluído na captura de ecrã.
nodeFiles
: esta secção especifica as seguintes informações:nodes
: uma lista de endereços IP de nós de cluster a partir dos quais quer recolher ficheiros. Para criar uma captura de ecrã quando o cluster de administrador não estiver acessível, especifique, pelo menos, um endereço IP do nó.files
: uma lista de ficheiros a obter de cada nó. Quando os ficheiros especificados são encontrados num nó, são incluídos no instantâneo.
nodeSSHKey
: caminho para o ficheiro de chave SSH. Quando o cluster de administrador está inacessível, este campo é obrigatório.
Crie instantâneos quando tiver erros específicos
Podem ser necessários passos ou parâmetros de comandos adicionais para criar com êxito um instantâneo quando ocorrem determinados eventos, como uma atualização bloqueada.
Crie um instantâneo predefinido durante instalações ou atualizações paradas
Ao instalar ou atualizar clusters de administrador, híbridos ou autónomos, o bmctl
pode, por vezes, ficar parado em pontos em que é possível ver as seguintes saídas:
- A aguardar que o kubeconfig do cluster fique pronto.
- A aguardar que o cluster fique pronto.
- A aguardar que os conjuntos de nós fiquem prontos.
- A aguardar a conclusão da atualização.
Se tiver problemas com a instalação ou a atualização, pode tirar uma captura de ecrã de um cluster através do cluster de arranque, conforme mostrado no exemplo seguinte:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Crie um resumo personalizado durante instalações ou atualizações paradas
Os passos seguintes mostram como criar um resumo personalizado de um cluster quando uma instalação ou uma atualização está parada:
Recupere um ficheiro de configuração de uma captura instantânea do cluster a partir dos seus arquivos.
Modifique o ficheiro de configuração do instantâneo para que o instantâneo contenha as informações pretendidas.
Execute o seguinte comando para criar a captura de ecrã personalizada:
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE \ --cluster=CLUSTER_NAME --kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Crie uma captura de ecrã personalizada quando o cluster de administrador estiver inacessível
Quando o cluster de administrador está inacessível, pode tirar uma captura de ecrã personalizada do cluster executando o seguinte comando:
bmctl check cluster --snapshot --cluster CLUSTER_NAME
--node-ssh-key SSH_KEY_FILE
--nodes NODE_1_IP_ADDRESS, NODE_2_IP_ADDRESS, ...
No comando, substitua as seguintes entradas por informações específicas do seu ambiente de cluster:
CLUSTER_NAME
: o nome do cluster do qual quer tirar um instantâneo.SSH_KEY_FILE
: o caminho para o ficheiro de chave SSH do nó.NODE_x_IP_ADDRESS
: o endereço IP de um nó do cluster sobre o qual quer obter informações.
Em alternativa, pode listar os endereços IP dos nós em linhas separadas:
bmctl check cluster
--snapshot --cluster CLUSTER_NAME \
--node-ssh-key SSH_KEY_FILE \
--nodes NODE_1_IP_ADDRESS \
--nodes NODE_2_IP_ADDRESS
...
Informações da VM em instantâneos
Se usar o VM Runtime no GDC para criar e gerir máquinas virtuais (VMs) no Google Distributed Cloud, pode recolher informações de diagnóstico relevantes em capturas de ecrã. As capturas de ecrã são um recurso essencial para diagnosticar e resolver problemas com as suas VMs.
O que é recolhido por predefinição
Quando cria um resumo predefinido, este contém as informações sobre o tempo de execução da VM no GDC e os recursos relacionados.
O tempo de execução da VM no GDC está incluído no Google Distributed Cloud e o
recurso personalizado VMRuntime
está disponível nos seus clusters que executam cargas de trabalho.
Mesmo que não tenha
ativado o tempo de execução da VM no GDC,
a captura de ecrã continua a conter a descrição YAML do recurso personalizado VMRuntime
.
Se ativou o tempo de execução da VM no GDC, as capturas de ecrã contêm informações de estado e configuração para os recursos relacionados com a VM (quando os objetos estão presentes) no seu cluster. Os recursos relacionados com VMs incluem objetos do Kubernetes, como pods, implementações, DaemonSets e ConfigMaps.
Objetos no espaço de nomes vm-system
As informações de estado e configuração dos seguintes objetos encontram-se em
kubectlCommands/vm-system
no instantâneo gerado:
KubeVirt
VirtualMachineType
VMHighAvailabilityPolicy
Objetos noutros espaços de nomes
Quando cria uma VM (VirtualMachine
), pode especificar o espaço de nomes. Se não especificar um espaço de nomes, a VM recebe o espaço de nomes default
. Os outros objetos nesta secção, como VirtualMachineInstance
, estão todos associados ao espaço de nomes da VM correspondente.
As informações de estado e configuração dos seguintes objetos encontram-se em
kubectlCommands/VM_NAMESPACE
no instantâneo gerado. Se não tiver definido um espaço de nomes específico para a sua VM,
as informações encontram-se em kubectlCommands/default
:
VirtualMachine
VirtualMachineInstance
VirtualMachineDisk
GuestEnvironmentData
VirtualMachineAccessRequest
VirtualMachinePasswordResetRequest
Objetos que não têm espaço de nomes
Os seguintes objetos não têm espaço de nomes, pelo que as respetivas informações correspondentes estão localizadas diretamente em kubectlCommands
no resumo gerado:
VMRuntime
DataVolume
CDI
GPUAllocation
Use um ficheiro de configuração de instantâneo para capturar apenas os detalhes da VM
Se estiver a diagnosticar problemas especificamente para VMs, pode usar um ficheiro de configuração de instantâneo para restringir as informações recolhidas apenas a detalhes relacionados com a VM e personalizar as informações da VM recolhidas.
O ficheiro de configuração de instantâneo seguinte ilustra como pode criar um instantâneo específico da VM. Pode incluir comandos adicionais para recolher mais informações para a sua análise rápida.
---
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 mais informações sobre a utilização de ficheiros de configuração de capturas instantâneas, consulte a secção Capturas instantâneas personalizadas neste documento.
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 a configuração do ambiente, os registos e as métricas.
- Componentes suportados.