¿Cómo soluciono los problemas de los complementos kubelet o CNI para Amazon EKS?

7 minutos de lectura
0

Quiero resolver problemas con mi complemento kubelet o CNI para Amazon Elastic Kubernetes Service (Amazon EKS).

Descripción corta

Para asignar y ejecutar una dirección IP al pod de su nodo de trabajo con su complemento CNI (en el sitio web de Kubernetes), debe tener las siguientes configuraciones:

  • Permisos de AWS Identity and Access Management (IAM), incluida una política de CNI que se vincula al rol de IAM de su nodo de trabajo. O bien, los permisos de IAM que proporciona a través de los roles de IAM de la cuenta de servicio.
  • Un punto de enlace del servidor de API de Amazon EKS al que se puede acceder desde el nodo de trabajo.
  • Acceso de red a los puntos de enlace de API para Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Registry (Amazon ECR) y Amazon Simple Storage Service (Amazon S3).
  • Suficientes direcciones IP disponibles en la subred.
  • Un kube-proxy que se ejecuta correctamente para que el pod aws-node pase al estado Listo.
  • La versión de kube-proxy y la versión de CNI de VPC que admiten la versión de Amazon EKS.

Resolución

Verificar que el pod aws-node esté en estado de ejecución en cada nodo de trabajo

Para comprobar que el pod aws-node está en estado En ejecución en un nodo de trabajo, ejecute el siguiente comando:

kubectl get pods -n kube-system -l k8s-app=aws-node -o wide

Si la salida del comando muestra que el recuento de RESTARTS es 0, el pod aws-node está en estado En ejecución. Siga los pasos de la sección Verificar que la subred tenga suficientes direcciones IP libres disponibles.

Si la salida del comando muestra que el recuento de RESTARTS es superior a 0, compruebe que el nodo de trabajo pueda llegar al punto de enlace del servidor de API de su clúster de Amazon EKS. Ejecute el siguiente comando:

curl -vk https://eks-api-server-endpoint-url

Verificar la conectividad con su clúster de Amazon EKS

1.    Compruebe que la configuración del grupo de seguridad de su nodo de trabajo para Amazon EKS esté establecida correctamente. Para obtener más información, consulte Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS.

2.    Compruebe que las reglas de la lista de control de acceso a la red (ACL de la red) de su nodo de trabajo para su subred permitan la comunicación con el punto de enlace del servidor de la API de Amazon EKS.

Importante: Permita el tráfico entrante y saliente en el puerto 443.

3.    Compruebe que el pod kube-proxy esté en estado En ejecución en cada nodo de trabajo:

kubectl get pods -n kube-system -l k8s-app=kube-proxy -o wide

4.    Compruebe que su nodo de trabajo pueda acceder a los puntos de enlace de API para Amazon EC2, Amazon ECR y Amazon S3.

Nota: Configure estos servicios a través de puntos de enlace públicos o AWS PrivateLink.

Verificar que la subred tenga suficientes direcciones IP libres disponibles

Para enumerar las direcciones IP disponibles en cada subred del ID de Amazon Virtual Private Cloud (Amazon VPC), ejecute el siguiente comando:

aws ec2 describe-subnets --filters "Name=vpc-id,Values= VPCID" | jq '.Subnets[] | .SubnetId + "=" + "\(.AvailableIpAddressCount)"'

Nota: El valor AvailableIpAddressCount debe ser mayor que 0 para la subred en la que se lanzan los pods.

Comprobar si se han alcanzado los límites de su grupo de seguridad

Si alcanza los límites de la interfaz de red elástica de su grupo de seguridad, la configuración de red del pod puede fallar.

Para obtener más información, consulte Amazon VPC quotas.

Verificar que está ejecutando la última versión estable del complemento CNI

Para confirmar que tiene la versión más reciente del complemento CNI, consulte Actualización del complemento CNI de Amazon VPC para el complemento autoadministrado de Kubernetes.

Para obtener más información sobre la solución de problemas, consulte la página de problemas de GitHub de AWS y las notas de la versión del complemento CNI.

Comprobar los registros del complemento CNI de VPC en el nodo de trabajo

Si crea un pod y no asigna una dirección IP al contenedor, recibirá el siguiente error:

failed to assign an IP address to container

Para comprobar los registros, vaya al directorio /var/log/aws-routed-eni/ y, a continuación, busque los nombres de archivo plugin.log y ipamd.log.

Verificar que el kubelet extrae las imágenes del contenedor de Docker

Si su kubelet no extrae las imágenes del contenedor de Docker para los contenedores kube-proxy y amazon-k8s-cni, recibirá el siguiente error:

network plugin is not ready: cni config uninitialized

Asegúrese de poder acceder al punto de enlace del servidor de la API de Amazon EKS desde el nodo de trabajo.

Verificar que el valor WARM_PREFIX_TARGET esté establecido correctamente

Nota: Esto solo se aplica si la delegación de prefijos está activada. Si la delegación de prefijos está activada, compruebe el siguiente mensaje de error registrado:

Error: Setting WARM_PREFIX_TARGET = 0 is not supported while WARM_IP_TARGET/MINIMUM_IP_TARGET is not set.
Please configure either one of the WARM_{PREFIX/IP}_TARGET or MINIMUM_IP_TARGET env variable

WARM_PREFIX_TARGET se debe establecer en un valor mayor o igual que 1. Si está establecido en 0, recibirá el siguiente error:

Consulte CNI configuration variables en el sitio web de GitHub para obtener más información.

Comprobar el espacio reservado en la subred

Nota: Esto solo se aplica si la delegación de prefijos está activada. Si la delegación de prefijos está activada, compruebe el siguiente mensaje de error registrado:

InsufficientCidrBlocks

Asegúrese de tener suficientes bloques de /28 IP CIDR (16 IP) disponibles en la subred. Las 16 direcciones IP deben ser contiguas. Si no tiene un rango /28 de direcciones IP continuas, recibirá el error InsufficientCidrBlocks.

Para resolver el error, cree una nueva subred y lance los pods desde allí. Además, utilice una reserva de CIDR de subred de Amazon EC2 para reservar espacio en una subred con un prefijo asignado. Para obtener más información, consulte Use subnet CIDR reservations.

Las actualizaciones que se realizan con infraestructura como código (IaC) se revierten con conflictos

Si utiliza complementos administrados de Amazon EKS, los errores de actualización que utilizan los siguientes servicios se revierten cuando el método de conflicto no está definido:

Los métodos correctos son NONE, OVERWRITE o PRESERVE.

  • Si no se define ningún método, el valor predeterminado es NONE. Cuando el sistema detecta conflictos, la actualización de la pila de CloudFormation se revierte y no se realiza ningún cambio.
  • Para establecer la configuración predeterminada de los complementos, utilice el método de sobrescritura. Debe usar OVERWRITE cuando pase de complementos autoadministrados a complementos administrados por Amazon EKS.
  • Utilice el método PRESERVE cuando utilice configuraciones definidas personalizadas, como WARM_IP_TARGET o redes personalizadas.

Los nodos están en estado NotReady

Cuando tiene nodos de AWS que no están en estado En ejecución, es común que los nodos estén en el estado NotReady. Para obtener más información, consulte ¿Cómo puedo cambiar el estado de mis nodos de NotReady o Unknown a Ready?

Desafíos de configuración de redes personalizadas

Cuando las redes personalizadas están activas para la CNI de la VPC, las definiciones de recursos personalizadas (CRD) de ENIConfig deben definir la subred y los grupos de seguridad correctos.

Para comprobar si las redes personalizadas están activas, describa el pod aws-node en el espacio de nombres kube-system. A continuación, compruebe si la siguiente variable de entorno está establecida en true:

AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG

Si la red personalizada está activa, compruebe que los CRD estén configurados correctamente.

kubectl get ENIConfig -A -o yaml

Describa cada entrada que coincida con el nombre de la zona de disponibilidad. Los ID de subred coinciden con la ubicación de la VPC y del nodo de trabajo. Los grupos de seguridad son accesibles o se comparten con el grupo de seguridad del clúster. Para obtener más información sobre las prácticas recomendadas, consulte las guías de prácticas recomendadas de Amazon EKS en el sitio web de GitHub.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año