Como posso solucionar problemas do controlador etcdadm no EKS Anywhere?

4 minuto de leitura
0

Quero verificar os logs nos pods etcdadm em busca de pistas para solucionar problemas de falha de bootstrap do ETCD.

Breve descrição

Se seus nós Anywhere do Amazon Elastic Kubernetes Service (Amazon EKS) apresentarem uma falha de bootstrap, verifique os logs em busca de pods etcdadm. Além disso, verifique os logs em busca de pods etcd que você criou para um cluster etcd empilhado.

Para depurar ainda mais, faça login em qualquer uma das máquinas virtuais (VMs) etcd. Se você não criou uma VM etcd antes da falha do bootstrap, não pode usar a VM para depurar.

Resolução

Verificar os logs nos pods etcdadm

Observação: Nos comandos a seguir, substitua SUFFIX pelo sufixo do seu provedor de bootstrap. Substitua KUBECONFIG_FILE pela localização do arquivo kubeconfig.

Depois de criar seu cluster, você pode usá-lo com o arquivo KUBECONFIG gerado em seu diretório local:

KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig

Para verificar os logs para etcdadm-bootstrap-provider-controller, execute o seguinte comando:

kubectl -n etcdadm-bootstrap-provider-system logs etcdadm-bootstrap-provider-controller-SUFFIX  
    --kubeconfig=KUBECONFIG_FILE

Para verificar os logs para etcdadm-controller-controller-manager, execute o seguinte comando:

kubectl -n etcdadm-controller-system logs etcdadm-controller-controller-manager-SUFFIX --kubeconfig=KUBECONFIG_FILE

Verificar se há um etcd empilhado nos logs

Se você criou pods para um cluster etcd empilhado, execute o seguinte comando para verificar os logs desses pods:

kubectl logs -n kube-system etcd-$CONTROL_PLANE_VM_IP --kubeconfig=KUBECONFIG_FILE

Observação: Substitua KUBECONFIG_FILE pela localização do arquivo kubeconfig.

Verificar os logs da VM

Depois de usar o cliente kubectl para verificar os logs, você também pode verificar os logs das VMs:

1.    Faça login no ambiente de gerenciamento da VM:

ssh -i $PRIV_KEY ec2-user@$CONTROL_PLANE_VM_IP

Observação: Substitua PRIV_KEY pela sua chave privada. Substitua CONTROL_PLANE_VM_IP pelo endereço IP da VM do seu ambiente de gerenciamento.

2.    Para um sistema operacional (OS) Bottlerocket: Para obter o shell raiz de um nó executado no Bottlerocket OS, execute o comando sudo sheltie.

3.    Depois de fazer login em uma VM etcd, você pode verificar logs adicionais de contêineres relacionados no seguinte local:

cd /var/log/containers

Verificar se há um etcd não empilhado ou externo nos logs

Para um etcd não empilhado ou externo, faça login em qualquer VM etcd que você criou.

1.    Para fazer login na sua VM etcd, execute o seguinte comando:

ssh -i $PRIV_KEY ec2-user@$ETCD_VM_IP

Observação: Substitua PRIV_KEY pela sua chave privada. Substitua ETCD_VM_IP pelo endereço IP da sua VM.

2.    Para um sistema operacional (OS) Bottlerocket: Para obter o shell raiz de um nó executado no Bottlerocket OS, execute o comando sudo sheltie.

3.    Depois de fazer login em uma VM etcd, você pode verificar logs adicionais de contêineres relacionados no seguinte local:

cd /var/log/containers  
bash-5.1# ls -lrt  
total 4  
lrwxrwxrwx. 1 root root 90 Apr 11 16:38 etcd-mgmt-etcd-4mt4g_kube-system_etcd-aa91be45434b920903e0630254cb5f319b86b50c56b87d8f992b0285272b93c4.log -> /var/log/pods/kube-system_etcd-mgmt-etcd-4mt4g_88b6dbc1be367b4ffc5a6bfab65e7376/etcd/0.log

Executar uma verificação de integridade

ETCD_CONTAINER_ID=$(ctr -n k8s.io c ls | grep -w "etcd-io" | cut -d " " -f1)  
ctr -n k8s.io t exec -t --exec-id etcd ${ETCD_CONTAINER_ID} etcdctl \  
     --cacert=/var/lib/etcd/pki/ca.crt \  
     --cert=/var/lib/etcd/pki/server.crt \  
     --key=/var/lib/etcd/pki/server.key \  
     endpoint health  

127.0.0.1:2379 is healthy: successfully committed proposal: took = 10.241212ms

Exemplos de mensagens de erro

Ao verificar seus logs, você pode ver várias mensagens de erro relacionadas à falha do bootstrap. Os exemplos a seguir são alguns dos erros mais comuns:

“Esperando que o ETCD externo esteja pronto.”

Para solucionar esse erro, consulte a documentação de solução de problemas do Amazon EKS Anywhere.

“Kubelet de VMs ETCD está falhando.”

O provisionamento de clusters não continua após a criação da sua VM ETCD. Esse problema também ocorre com a seguinte mensagem de erro do kubelet:

“Falha ao iniciar ContainerManager” err="invalid Node Allocatable configuration. Resource \"ephemeral-storage\" has an allocatable of {{1175812097 0} {<nil>} BinarySI}, capacity of {{-155109377 0} {<nil>} BinarySI}"

Isso indica que o armazenamento efêmero no nó não tem espaço livre suficiente. Em cada nó do Kubernetes, o diretório raiz do kubelet (/var/lib/kubelet por padrão) e o diretório de log (/var/log) estão na partição raiz do nó.

Para exibir o espaço livre em disco de um sistema de arquivos específico, execute o seguinte comando:

"df -h"

Para exibir uma lista de todos os arquivos e seus respectivos tamanhos, execute o seguinte comando:

"sudo du -d 3 /var/lib/"

Se você não tiver espaço livre suficiente em disco, limpe seu nó para liberar espaço. Ou expanda a capacidade de armazenamento da partição raiz do seu nó.

Informações relacionadas

Instalar o etcd (site do etcd)

Como verificar o status do cluster (site do etcd)

AWS OFICIAL
AWS OFICIALAtualizada há um ano