Solución de problemas en Amazon EKS Connector - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Solución de problemas en Amazon EKS Connector

En este tema, se tratan algunos de los errores comunes que pueden producirse mientras se usa Amazon EKS Connector y se incluyen las instrucciones sobre cómo resolverlos e implementar soluciones alternativas.

Solución de problemas básicos

En esta sección, se describen los pasos para diagnosticar el problema si no está claro.

Verificación del estado de Amazon EKS Connector

Compruebe el estado de Amazon EKS Connector.

kubectl get pods -n eks-connector

Inspección de los registros de Amazon EKS Connector

El Pod de Amazon EKS Connector consta de tres contenedores. Para recuperar los registros completos de todos estos contenedores y poder inspeccionarlos, ejecute los siguientes comandos:

  • connector-init

    kubectl logs eks-connector-0 --container connector-init -n eks-connector kubectl logs eks-connector-1 --container connector-init -n eks-connector
  • connector-proxy

    kubectl logs eks-connector-0 --container connector-proxy -n eks-connector kubectl logs eks-connector-1 --container connector-proxy -n eks-connector
  • connector-agent

    kubectl exec eks-connector-0 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log kubectl exec eks-connector-1 --container connector-agent -n eks-connector -- cat /var/log/amazon/ssm/amazon-ssm-agent.log

Obtención del nombre real del clúster

Los clústeres de Amazon EKS se identifican de forma inequívoca a través del clusterName en una cuenta y Región de AWS de AWS. Si tiene varios clústeres conectados en Amazon EKS, puede confirmar qué clúster de Amazon EKS se ha registrado en el clúster de Kubernetes actual. Para ello, ingrese lo siguiente para saber cuál es el clusterName del clúster actual.

kubectl exec eks-connector-0 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/" kubectl exec eks-connector-1 --container connector-agent -n eks-connector \ -- cat /var/log/amazon/ssm/amazon-ssm-agent.log | grep -m1 -oE "eks_c:[a-zA-Z0-9_-]+" | sed -E "s/^.*eks_c:([a-zA-Z0-9_-]+)_[a-zA-Z0-9]+.*$/\1/"

Comandos diversos

Los siguientes comandos son útiles para recuperar la información que necesita para solucionar problemas.

  • Utilice el siguiente comando para recopilar imágenes que utilizan los Pods en Amazon EKS Connector.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n'
  • Utilice el siguiente comando para determinar los nombres de los nodos en los que se ejecuta Amazon EKS Connector.

    kubectl get pods -n eks-connector -o jsonpath="{.items[*].spec.nodeName}" | tr -s '[[:space:]]' '\n'
  • Ejecute el siguiente comando para obtener las versiones de cliente y servidor de Kubernetes.

    kubectl version
  • Ejecute el siguiente comando para obtener información acerca de los nodos.

    kubectl get nodes -o wide --show-labels

Problema de Helm: 403 Prohibido

Si ha recibido el siguiente error al ejecutar los comandos de instalación de Helm:

Error: INSTALLATION FAILED: unexpected status from HEAD request to https://public.ecr.aws/v2/eks-connector/eks-connector-chart/manifests/0.0.6: 403 Forbidden

Puede ejecutar la siguiente línea para solucionarlo:

docker logout public.ecr.aws

Error de la consola: El clúster está atascado en el estado Pending

Si, después de registrar el clúster, este se queda atascado en el estado Pending en la consola de Amazon EKS, tal vez se deba a que Amazon EKS Connector todavía no conectó correctamente el clúster a AWS. Para un clúster registrado, el estado Pending significa que la conexión todavía no se ha establecido correctamente. Para resolver este problema, asegúrese de haber aplicado el manifiesto al clúster de Kubernetes de destino. Si lo aplicó al clúster, pero este sigue en estado Pending, puede que StatefulSet eks-connector esté en mal estado. Para solucionar este problema, consulte Los Pods de Amazon EKS Connector se están bloqueando en bucle en este tema.

Error de consola: User “system:serviceaccount:eks-connector:eks-connector” can't impersonate resource “users” in API group “” en el ámbito del clúster

Amazon EKS Connector utiliza la suplantación de usuarios de Kubernetes para actuar en nombre de las entidades principales de IAM desde la AWS Management Console. A cada entidad principal de IAM que accede a la API de Kubernetes desde la cuenta de servicio de AWS eks-connector se le debe conceder permiso para suplantar al usuario de Kubernetes correspondiente con un ARN de IAM como nombre de usuario de Kubernetes. En los siguientes ejemplos, el ARN de IAM se asigna a un usuario de Kubernetes.

  • El usuario de IAM john de la cuenta AWS de 111122223333 está asignado a un usuario de Kubernetes. Según las prácticas recomendadas de IAM, se recomienda conceder permisos a los roles en lugar de a los usuarios.

    arn:aws:iam::111122223333:user/john
  • El rol de IAM admin de la cuenta AWS de 111122223333 está asignado a un usuario de Kubernetes:

    arn:aws:iam::111122223333:role/admin

    El resultado es el ARN de un rol de IAM, en lugar del ARN de la sesión de AWS STS.

Para obtener instrucciones sobre cómo configurar ClusterRole y ClusterRoleBinding a fin de conceder a la cuenta de servicio de eks-connector el privilegio para suplantar al usuario asignado, consulte Concesión de acceso a una entidad principal de IAM para ver recursos de Kubernetes en un clúster. Asegúrese de que, en la plantilla, %IAM_ARN% se sustituya con el ARN de IAM de la entidad principal de IAM de la AWS Management Console.

Error de consola: [...] is forbidden: User [...] cannot list resource “[...] in API group” en el ámbito del clúster

Considere el siguiente problema. Amazon EKS Connector ha suplantado correctamente a la entidad principal de IAM solicitante de la AWS Management Console en el clúster de Kubernetes de destino. Sin embargo, la entidad principal suplantada no tiene permiso de RBAC en las operaciones de la API de Kubernetes.

Para resolver este problema, existen dos métodos para conceder permisos a usuarios adicionales. Si anteriormente instaló eks-connector mediante el gráfico de Helm, puede conceder acceso a los usuarios fácilmente ejecutando el siguiente comando. Sustituya userARN1 y userARN2 con una lista de los ARN de los roles de IAM para permitir el acceso a la visualización de los recursos de Kubernetes:

helm upgrade eks-connector oci://public.ecr.aws/eks-connector/eks-connector-chart \ --reuse-values \ --set 'authentication.allowedUserARNs={userARN1,userARN2}'

O bien, como administrador del clúster, otorgue el nivel adecuado de privilegios de RBAC a los usuarios individuales de Kubernetes. Para obtener más información y ejemplos, consulte Concesión de acceso a una entidad principal de IAM para ver recursos de Kubernetes en un clúster.

Error de la consola: Amazon EKS no puede comunicarse con el servidor de la API del clúster de Kubernetes. El clúster debe estar en estado ACTIVE (ACTIVO) para que la conexión se establezca de forma correcta. Intente establecer la conexión en unos minutos.

Si el servicio Amazon EKS no puede comunicarse con Amazon EKS Connector en el clúster de destino, tal vez se deba a alguno de los siguientes motivos:

  • Amazon EKS Connector no funciona bien en el clúster de destino.

  • La conectividad es deficiente o la conexión se ha interrumpido entre el clúster de destino y la Región de AWS.

Para resolver este problema, consulte los registros de Amazon EKS Connector. Si no aparece un error para Amazon EKS Connector, vuelva a intentar establecer la conexión después de unos minutos. Si experimenta regularmente una alta latencia o una conectividad intermitente para el clúster de destino, considere volver a registrar el clúster en una Región de AWS que se encuentre en una ubicación más cercana.

Los Pods de Amazon EKS Connector se están bloqueando en bucle

Hay muchas razones que pueden provocar que un Pod de Amazon EKS Connector entre en el estado CrashLoopBackOff. Es probable que este problema afecte al contenedor connector-init. Compruebe el estado del Pod conector de Amazon EKS.

kubectl get pods -n eks-connector

Un ejemplo de salida sería el siguiente.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:CrashLoopBackOff 1 7s

Si el resultado es similar al resultado anterior, consulte Inspección de los registros de Amazon EKS Connector para solucionar el problema.

Failed to initiate eks-connector: InvalidActivation

Cuando inicia Amazon EKS Connector por primera vez, este registra un activationId y un activationCode en Amazon Web Services. El registro puede fallar, lo que podría provocar que el contenedor connector-init se bloquee con un error similar al siguiente.

F1116 20:30:47.261469       1 init.go:43] failed to initiate eks-connector: InvalidActivation:

Para solucionar este problema, tenga en cuenta las siguientes causas y correcciones recomendadas:

  • Es posible que el registro haya fallado porque el activationId y el activationCode no están en el archivo de manifiesto. En este caso, asegúrese de que se devolvieron los valores correctos de la operación RegisterCluster de la API y de que el activationCode se encuentra en el archivo de manifiesto. El activationCode se agrega a los secretos de Kubernetes, por lo que debe estar codificado en base64. Para obtener más información, consulte Paso 1: registro del clúster.

  • Es posible que el registro haya fallado porque la activación venció. Esto se debe a que, por razones de seguridad, debe activar Amazon EKS Connector en un plazo de tres días después del registro del clúster. Para resolver este problema, asegúrese de haber aplicado el manifiesto de Amazon EKS Connector al clúster de Kubernetes de destino antes de la fecha y la hora de vencimiento. Para confirmar la fecha de vencimiento de la activación, llame a la operación de la API DescribeCluster.

    aws eks describe-cluster --name my-cluster

    En la siguiente respuesta de ejemplo, la fecha y la hora de vencimiento se registran como 2021-11-12T22:28:51.101000-08:00.

    { "cluster": { "name": "my-cluster", "arn": "arn:aws:eks:region:111122223333:cluster/my-cluster", "createdAt": "2021-11-09T22:28:51.449000-08:00", "status": "FAILED", "tags": { }, "connectorConfig": { "activationId": "00000000-0000-0000-0000-000000000000", "activationExpiry": "2021-11-12T22:28:51.101000-08:00", "provider": "OTHER", "roleArn": "arn:aws:iam::111122223333:role/my-connector-role" } } }

    Si activationExpiry ya transcurrió, anule el registro del clúster y vuelva a registrarlo. Hacer esto genera una nueva activación.

El nodo del clúster no tiene conectividad de salida

Para que funcione correctamente, Amazon EKS Connector requiere conectividad de salida a varios puntos de conexión de AWS. No se puede conectar un clúster privado sin conectividad de salida a una Región de AWS de destino. Para resolver este problema, debe agregar la conectividad de salida necesaria. Para obtener información sobre los requisitos de los conectores, consulte Consideraciones sobre Amazon EKS Connector.

Los Pods conectores de Amazon EKS están en estado ImagePullBackOff

Si ejecuta el comando get pods y los Pods se encuentran en el estado ImagePullBackOff, no pueden funcionar correctamente. Si los Pods de Amazon EKS Connector se encuentran en estado ImagePullBackOff, no pueden funcionar correctamente. Compruebe el estado de los Pods de Amazon EKS Connector.

kubectl get pods -n eks-connector

Un ejemplo de salida sería el siguiente.

NAME READY STATUS RESTARTS AGE eks-connector-0 0/2 Init:ImagePullBackOff 0 4s

El archivo de manifiesto predeterminado de Amazon EKS Connector hace referencia a imágenes de Galería pública de Amazon ECR. Es posible que el clúster de Kubernetes de destino no pueda extraer imágenes de Galería pública de Amazon ECR. Resuelva el problema de extracción de imágenes de Galería pública de Amazon ECR o considere la posibilidad de reflejar las imágenes en el registro de contenedores privado de su elección.