Come faccio a risolvere i problemi del controller etcdadm in EKS Anywhere?

4 minuti di lettura
0

Voglio controllare i log nei pod etcdadm per trovare indizi per risolvere i problemi di errore del bootstrap ETCD.

Breve descrizione

Se i tuoi nodi Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere presentano un errore di avvio, controlla i log per i pod etcdadm. Inoltre, controlla i log dei pod etcd che hai creato per un cluster etcd in stack.

Per un ulteriore debug, accedi a una qualsiasi delle macchine virtuali (VM) etcd. Se non hai creato una VM etcd prima dell'errore di bootstrap, non puoi usare la VM per il debug.

Risoluzione

Controlla i log nei pod etcdadm

Nota: nei seguenti comandi, sostituisci SUFFIX con il suffisso del tuo provider di bootstrap. Sostituisci KUBECONFIG_FILE con la posizione del tuo file kubeconfig.

Dopo aver creato il cluster, puoi utilizzarlo con il file KUBECONFIG generato nella tua directory locale:

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

Per controllare i log di etcdadm-bootstrap-provider-controller, esegui il seguente comando:

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

Per controllare i log di etcdadm-controller-controller-manager, esegui il seguente comando:

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

Controlla i log per un etcd in stack

Se hai creato dei pod per un cluster etcd in stack, esegui il seguente comando per controllare i log di quei pod:

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

Nota: sostituisci KUBECONFIG_FILE con la posizione del tuo file kubeconfig.

Controlla i log delle VM

Dopo aver usato il client kubectl per controllare i log, puoi anche controllare i log sulle VM:

1.    Accedi al piano di controllo (control-plane) della VM:

ssh -i $PRIV_KEY ec2-user@$CONTROL_PLANE_VM_IP

Nota: sostituisci PRIV_KEY con la tua chiave privata. Sostituisci CONTROL_PLANE_VM_IP con l'indirizzo IP della VM del tuo piano di controllo.

2.    Per un sistema operativo (OS) Bottlerocket: Per ottenere la shell (interprete di comandi) principale per un nodo che funziona sul sistema operativo Bottlerocket, esegui il comando sudo sheltie.

3.    Dopo aver effettuato l'accesso a una VM etcd, puoi controllare i log aggiuntivi dei container correlati nella seguente posizione:

cd /var/log/containers

Controlla i log per un etcd esterno o non in stack

Per un etcd esterno o non in stack, accedi a qualsiasi VM etcd che hai creato.

1.    Per accedere alla tua VM etcd, esegui il seguente comando:

ssh -i $PRIV_KEY ec2-user@$ETCD_VM_IP

Nota: sostituisci PRIV_KEY con la tua chiave privata. Sostituisci ETCD_VM_IP con l'indirizzo IP della tua VM.

2.    Per un sistema operativo (OS) Bottlerocket: Per ottenere la shell (interprete di comandi) principale per un nodo che funziona sul sistema operativo Bottlerocket, esegui il comando sudo sheltie.

3.    Dopo aver effettuato l'accesso a una VM etcd, puoi controllare i log aggiuntivi dei container correlati nella seguente posizione:

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

Esegui un controllo dell'integrità

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

Messaggi di errore di esempio

Quando controlli i log, potresti visualizzare vari messaggi di errore relativi all'errore di bootstrap. I seguenti esempi sono alcuni degli errori più comuni:

"In attesa che l'ETCD esterno sia pronto".

Per risolvere questo errore, consulta la documentazione per la risoluzione dei problemi di Amazon EKS Anywhere.

"Kubelet delle VM ETCD si blocca".

Il provisioning del cluster si blocca dopo la creazione della tua VM ETCD. Questo problema si verifica anche con il seguente messaggio di errore kubelet:

"Impossibile avviare ContainerManager" err="configurazione allocabile del nodo non valida. La risorsa \"ephemeral-storage\" ha un allocabile di {{1175812097 0} {<nil>} BinarySI}, capacità di {{-155109377 0} {<nil>} BinarySI}"

Ciò indica che lo spazio di archiviazione effimero sul nodo non dispone di spazio libero sufficiente. In ogni nodo Kubernetes, la directory principale di kubelet (/var/lib/kubelet per impostazione predefinita) e la directory di log (/var/log) si trovano nella partizione root del nodo.

Per visualizzare lo spazio libero su disco di un file system specifico, esegui il seguente comando:

"df -h"

Per visualizzare un elenco di tutti i file e le rispettive dimensioni, esegui il seguente comando:

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

Se non hai abbastanza spazio libero su disco, pulisci il nodo per liberare spazio. Oppure, espandi la capacità di archiviazione della partizione root del tuo nodo.

Informazioni correlate

Installare etcd (sito Web etcd)

Come controllare lo stato del cluster (sito Web etcd)

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa