Nesta página, descrevemos como usar a ferramenta de linha de comando actl
no
modo particular do Anthos para diagnosticar problemas com clusters. O comando
diagnose
gera um arquivo que contém uma coleção de registros que captura
o estado do cluster.
Introdução
É possível capturar o estado dos clusters criados com o comando actl diagnose
.
As informações de diagnóstico podem ajudar você a descobrir problemas e depurar
suas implantações com mais eficiência. O comando captura todos os arquivos de configuração de cluster
e nó relevantes para o escopo definido e empacota as
informações em um único arquivo tar. As sinalizações do comando permitem escolher
o escopo de diagnóstico dele.
actl diagnose
Use o comando actl diagnose
para resolver problemas
com clusters. Esse comando compacta o status, as configurações e os registros de um
cluster em um arquivo tar. A configuração padrão do comando captura as
seguintes informações sobre o cluster:
- Versão do Kubernetes
- Status dos recursos do Kubernetes nos namespaces dos controladores do kube-system e do APM: cluster, máquina, nós, serviços, Endpoints, ConfigMaps, ReplicaSets, CronJobs, pods e os proprietários desses pods, incluindo implantações, DaemonSets e StatefulSets.
- Status do plano de controle do usuário se o cluster de destino for um cluster de usuário (o plano de controle do cluster de usuário é executado no cluster de administrador)
- Detalhes sobre cada configuração de nó, incluindo endereços IP, regras de iptables, pontos de montagem, sistemas de arquivos, conexões de rede e processos em execução.
- Registros do contêiner no nó do plano de controle do cluster de administrador quando o servidor da API Kubernetes não está disponível.
- Informações no sistema Istio, incluindo pods, serviços, implantações, endpoints, secrets, configmaps, registros atuais e anteriores de todos os componentes e arquivos secundários do Istio e todos os artefatos de configuração do Istio.
- Informações no Config Sync, incluindo configurações em namespaces relacionados a config-management-system.
- Registros do comando
actl diagnose
Crie um snapshot em um cenário
O comando actl diagnose
é compatível com cinco cenários. Para especificar um
cenário, use a sinalização --scenario
para coletar snapshots de qualquer uma das seguintes
configurações:
- all: (padrão) inclui todos os cenários predefinidos, incluindo: auth, config-management, kubernetes, management-center e service-mesh.
- auth
- config-management
- kubernetes
- management-center
- service-mesh
É possível usar cada um dos cinco cenários com o cluster de administrador. Para criar um snapshot do cluster de administrador usando o cenário a seguir:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
--cluster=CLUSTER_NAME\
--scenario=all
Substitua:
ADMIN_CLUSTER_KUBECONFIG
: o arquivo kubeconfig do cluster de administrador.- (Opcional)
CLUSTER_NAME
: o nome do cluster de administrador. Se você não souber o nome do cluster, omita essa sinalização e será solicitado que você selecione um cluster para o snapshot.
A saída inclui uma lista de arquivos e o nome de um arquivo tar:
Using ["all"] snapshot configuration...
? Choose a cluster (namespace/name) cluster-admin/admin
Taking snapshots throttled at 10 in-flight requests...
kubectlCommands/anthos-management-center-operator/kubectl_get_updateitems
kubectlCommands/kubectl_cluster-info
kubectlCommands/kubectl_version
kubectlCommands/anthos-management-center/kubectl_logs_git-server-0_--container_git-server_--since_24h0m0s
kubectlCommands/anthos-management-center/kubectl_get_deployments
...
nodes/10.200.0.5/files/lib/systemd/system/docker.service
nodes/10.200.0.4/files/lib/systemd/system/docker.service
...
istioCommands/istioctl_bug-report
Snapshot succeeded.
Snapshots saved in "[TAR_FILE_PATH]/[TAR_FILE_NAME].tar.gz".
Limite um snapshot a um período
É possível usar a sinalização --log-since
para limitar a coleta de registros a um período
recente. Por exemplo, é possível coletar os registros dos últimos dois dias ou
das últimas três horas. Por padrão, diagnose
coleta registros das
últimas 24 horas. Essa sinalização é compatível apenas com registros kubectl
.
Para limitar o período da coleta de registros:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--scenario=all \
--log-since=DURATION
Substitua DURATION
por um valor de tempo como 2d ou 3h. A
duração padrão é de 24 horas.
Executar uma simulação para um snapshot
É possível usar a sinalização --dry-run
para mostrar as ações a serem realizadas e a
configuração do snapshot.
Para executar uma simulação no cluster de administrador:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--dry-run
Personalize as configurações de um snapshot
Se os cinco cenários não atenderem às suas necessidades, crie um snapshot personalizado. Você pode gerar uma configuração e copiá-la e colá-la em um novo arquivo de configuração ou criar um arquivo de configuração do zero. Em seguida, você pode criar o snapshot a partir do arquivo de configuração personalizado.
Opção 1: gerar as configurações de um snapshot
É possível gerar as configurações de um snapshot para um determinado cenário transmitindo as
sinalizações --scenario
e --dry-run
. Por exemplo, para ver as configurações
do snapshot de todo (padrão) o cenário de um cluster, digite este
comando:
actl diagnose \
--scenario=all \
--dry-run \
Veja um exemplo da saída:
ExcludeWords:
- certificateAuthorityData
- password
InFlightRequests: 10
KubectlCommands:
- Commands:
- kubectl get deployments
- kubectl get deployments -o yaml
- kubectl get pods
- kubectl get pods -o yaml
- kubectl get secret
- kubectl logs
- kubectl get gateways -o yaml
Namespaces:
- istio-system
NodeCommands:
- Commands:
- uptime
- df --all --inodes
- ip addr
- iptables-save --counters
- mount
- ip route list table all
- top -bn1
- docker info
- docker ps -a
- ps -edF
- ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
- conntrack --count
Nodes: []
NodeFiles:
- Files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
- /lib/systemd/system/kubelet.service
- /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- /lib/systemd/system/docker.service
- /etc/docker/daemon.json
Nodes: []
NomosBugReport:
Enabled: true
IstioBugReport:
Enabled: true
É possível copiar e colar a saída desse comando da interface de linha de comando em um novo arquivo de configuração criado, por exemplo,
myconfig.yaml
. É possível editar estes valores:
InFlightRequests
: número de linhas de execução paralelas usadas para tirar snapshots.excludeWords
: lista de palavras a serem excluídas do snapshot (não diferencia maiúsculas de minúsculas). As linhas que contêm essas palavras são removidas dos resultados do snapshot. A "senha" é sempre excluída, independentemente de você especificá-la ou não.kubectlCommands
: lista de comandoskubectl
a serem executados. Os comandos são executados nos namespaces correspondentes. Para comandoskubectl logs
, todos os pods e contêineres nos namespaces correspondentes são adicionados automaticamente. As expressões regulares são compatíveis com a especificação de namespaces. Se você não especificar um namespace, o namespacedefault
será usado.nodeCommands
: lista de comandos a serem executados nos nós correspondentes. Os resultados são salvos. Quando os nós não são especificados, todos os nós no cluster de destino são considerados.nodeFiles
: lista de arquivos a serem coletados dos nós correspondentes. Os arquivos são salvos. Quando os nós não são especificados, todos os nós no cluster de destino são considerados.istioBugReport
: uma sinalização para ativar o snapshot doistioctl bug-report
.nomosBugReport
: uma sinalização para ativar o snapshotnomos bugreport
.
Opção 2: definir manualmente o arquivo de configuração personalizado de um snapshot
Crie um arquivo YAML com os parâmetros de snapshot desejados, por exemplo:
ExcludeWords:
- certificateAuthorityData
- password
InFlightRequests: 10
KubectlCommands:
- Commands:
- kubectl get deployments
- kubectl get deployments -o yaml
- kubectl get pods
- kubectl get pods -o yaml
- kubectl get secret
- kubectl logs
- kubectl get gateways -o yaml
Namespaces:
- istio-system
Crie um snapshot usando a configuração personalizada de snapshot
Transmita seu arquivo de configuração personalizado do snapshot usando a sinalização
--snapshot-config
:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--snapshot-config=SNAPSHOT_CONFIG_FILE
Substitua SNAPSHOT_CONFIG_FILE
pelo nome do
arquivo de configuração de snapshot personalizado, por exemplo, myconfig.yaml
.
Revisar o conteúdo do snapshot
Para revisar o conteúdo do arquivo tar, extraia-o com o seguinte comando:
tar -zxf TAR_FILE_PATHTAR_FILENAME.tar.gz --directory EXTRACTION_DIRECTORY_NAME
Revise o conteúdo do arquivo .tar antes de anexá-lo às interações com o suporte.