¿Cómo soluciono los problemas con el controlador etcdadm en EKS Anywhere?

5 minutos de lectura
0

Quiero comprobar los registros de los pods de etcdadm en busca de pistas para solucionar problemas de fallo de arranque de ETCD.

Descripción breve

Si los nodos de Amazon Elastic Kubernetes Service (Amazon EKS) Anywhere sufren un error de arranque, compruebe los registros para ver si hay pods de etcdadm. Además, compruebe los registros de los pods de etcd que creó para un clúster de etcd apilado.

Para seguir depurando, inicie sesión en cualquiera de las máquinas virtuales de etcd. Si no ha creado una máquina virtual de etcd antes del error de arranque, no puede usarla para depurar.

Solución

Comprobación de algún registro en los pods de etcdadm

Nota: En los siguientes comandos, sustituya SUFFIX por el sufijo de su proveedor de arranque. Sustituya KUBECONFIG_FILE por la ubicación de su archivo kubeconfig.

Después de crear el clúster, puede usarlo con el archivo generado KUBECONFIG en su directorio local:

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

Para comprobar los registros de etcdadm-bootstrap-provider-controller, ejecute el siguiente comando:

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

Para comprobar los registros de etcdadm-bootstrap-provider-manager, ejecute el siguiente comando:

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

Comprobación de etcd apilados en los registros

Si ha creado pods para un clúster de etcd apilado, ejecute el siguiente comando para comprobar sus registros:

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

Nota: Sustituya KUBECONFIG_FILE por la ubicación de su archivo kubeconfig.

Comprobar los registros de máquinas virtuales

Después de usar el cliente kubectl para comprobar los registros, también puede comprobar los registros en las máquinas virtuales:

1.    Inicie sesión en el plano de control de la máquina virtual:

ssh -i $PRIV_KEY ec2-user@$CONTROL_PLANE_VM_IP

Nota: Sustituya PRIV_KEY por su clave privada. Sustituya CONTROL_PLANE_VM_IP por la dirección IP de la máquina virtual de su plano de control.

2.    Para un sistema operativo (SO) BottleRocket: Para obtener el shell raíz de un nodo que se ejecuta en el sistema operativo BottleRocket, ejecute el comando sudo sheltie.

3.    Tras iniciar sesión en una máquina virtual de etcd, puede comprobar otros registros de contenedores relacionados en la siguiente ubicación:

cd /var/log/containers

Comprobación de algún etcd externo o no apilado en los registros

Para un etcd externo o no apilado, inicie sesión en cualquier máquina virtual de etcd que haya creado.

1.    Para iniciar sesión en su máquina virtual de etcd, ejecute el siguiente comando:

ssh -i $PRIV_KEY ec2-user@$ETCD_VM_IP

Nota: Sustituya PRIV_KEY por su clave privada. Sustituya ETCD_VM_IP por la dirección IP de su máquina virtual.

2.    Para un sistema operativo (SO) BottleRocket: Para obtener el shell raíz de un nodo que se ejecuta en el sistema operativo BottleRocket, ejecute el comando sudo sheltie.

3.    Tras iniciar sesión en una máquina virtual de etcd, puede comprobar otros registros de contenedores relacionados en la siguiente ubicación:

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

Hacer una comprobación de estado

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

Ejemplos de mensajes de error

Al comprobar los registros, es posible que haya varios mensajes de error relacionados con el error de arranque. Los siguientes ejemplos son algunos de los errores más comunes:

«Esperando a que el ETCD externo esté listo».

Para solucionar el error, consulte la documentación de solución de problemas de Amazon EKS Anywhere.

«El kubelet de las máquinas virtuales de ETCD se bloquea».

El aprovisionamiento de clústeres no continúa tras la creación de la máquina virtual de ETCD. Este problema también se produce con el siguiente mensaje de error de kubelet:

«No se pudo iniciar ContainerManager» err=«configuración de asignación de nodos no válida. El recurso \«ephemeral-storage\» tiene una asignación de {{1175812097 0} {<nil>} BinarySI}, capacidad de {{-155109377 0} {<nil>} BinarisSI}»

Esto indica que el almacenamiento efímero del nodo no tiene suficiente espacio libre. En cada nodo de Kubernetes, el directorio raíz de kubelet (/var/lib/kubelet por defecto) y el directorio de registro (/var/log) se encuentran en la partición raíz del nodo.

Para mostrar el espacio libre en disco de un sistema de archivos específico, ejecute el siguiente comando:

"df -h"

Para mostrar una lista de todos los archivos y sus respectivos tamaños, ejecute el siguiente comando:

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

Si no tiene suficiente espacio libre en disco, limpie el nodo para liberar espacio. También puede ampliar la capacidad de almacenamiento de la partición raíz del nodo.

Información relacionada

Instalación de etcd (sitio web de etcd)

Cómo comprobar el estado del clúster (sitio web de etcd)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año