¿Por qué no puedo usar kubectl para conectarme a mi clúster de EKS?
Cuando uso la herramienta de la línea de comandos kubectl para intentar conectarme a mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS), recibo un mensaje de error.
Resolución
Si no puedes conectarte a tu clúster de Amazon EKS cuando usas kubectl, es posible que hayas configurado un servicio, un permiso o una configuración de forma incorrecta. También se puede producir un error cuando el entorno local no puede comunicarse con el servidor de API del clúster de EKS. Soluciona el problema según el mensaje de error que recibas.
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Requisitos previos:
-
Ejecuta el siguiente comando para comprobar si el sistema puede establecer una conexión con el clúster correcto:
kubectl config current-context -
Ejecuta el siguiente comando get-caller-identity de la AWS CLI para comprobar que el usuario o el rol de AWS Identity and Access Management (IAM) actualmente autenticado es correcto:
aws sts get-caller-identityNota: Permite que la entidad principal de IAM acceda a los objetos de Kubernetes de tu clúster según el modo de autenticación del clúster.
Mensaje de error "exec plugin invalid"
Cuando la versión de la API de autenticación del archivo kubeconfig no es compatible con la versión del plano de control de la API de Kubernetes, recibes el siguiente mensaje de error:
"exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha""
Ejecuta el siguiente comando update-kubeconfig para actualizar el archivo kubeconfig de tu clúster:
aws eks update-kubeconfig --region region-code --name my-cluster
Nota: Sustituye region-code por la región de AWS en la que se encuentra el clúster y my-cluster por el nombre del clúster.
Tu versión de kubectl debe estar dentro de una diferencia de una versión secundaria anterior o posterior con respecto al plano de control del clúster de Amazon EKS. Por ejemplo, un cliente kubectl versión 1.29 funciona con los clústeres 1.28, 1.29 y 1.30 de Kubernetes.
Mensaje de error "couldn't get current server API group list"
Cuando el archivo kubeconfig no existe o no contiene la autoridad de certificación (CA), recibirás el siguiente mensaje de error:
"couldn't get current server API group list: Get "https://xxxxxxxxxxxxxxxxxxxx..eks.amazonaws.com/api?timeout=32s": tls: failed to verify certificate: x509: certificate signed by unknown authority"
-
Ejecuta el siguiente comando para comprobar si el archivo kubeconfig existe en la ubicación predeterminada (.kube) de tu directorio principal:
cat ~/.kube/config -
Si el archivo existe, comprueba que la CA del clúster codificada en base64 esté en el archivo kubeconfig. Comprueba también si el archivo certificate-authority-data existe y si lo has configurado correctamente.
-
Si el archivo kubeconfig no existe, ejecuta el siguiente comando para volver a crearlo:
kubectl get svc --insecure-skip-tls-verify -
Comprueba si utilizas un proxy o una VPN que pueda bloquear TLS.
Mensaje de error de tiempo de espera "could not get current server API group list"
Si el host de origen no puede comunicarse con el servidor de API en el puerto 443, se agota el tiempo de espera de la solicitud y recibes el siguiente mensaje de error:
"could not get current server API group list: Get "https://xxxxxxxxxxxxxxxxxxxx.gr7.<region-code>.eks.amazonaws.com/api?timeout=32s": dial tcp xx.yy.zz.vvv:443: i/o timeout"
Ejecuta el siguiente comando para usar telnet en el puerto 443 y comprobar la conectividad del punto de enlace del servidor de API desde tu dispositivo:
$ echo exit | telnet
Resultado de ejemplo:
xxxxxxxxxxxxxxxxxxxx.gr7.us-east-2.eks.amazonaws.com 443Trying 18.224.160.210... Connected to xxxxxxxxxxxxxxxxxxxx.gr7.us-east-2.eks.amazonaws.com. Escape character is '^]'. Connection closed by foreign host.
Si el comando telnet no resuelve el problema, realiza las siguientes acciones:
- Si has activado el acceso público en el punto de enlace del servidor de API, comprueba si has restringido el acceso al punto de enlace del servidor de API a un intervalo de CIDR determinado. Asegúrate de que la dirección IP del dispositivo pertenezca al bloque de CIDR. Comprueba también el comportamiento de acceso a los puntos de enlace del servidor de API.
- Si solo has activado el acceso privado en el punto de enlace del servidor de API, todo el tráfico del servidor de API del clúster debe provenir de la nube virtual privada (VPC) o de una red conectada. Además, los comandos kubectl deben provenir de la VPC o de una red conectada. Para obtener más información, consulta Acceso a un servidor de API solo privado.
- Comprueba si los grupos de seguridad o las listas de control de acceso de la red (ACL de la red) bloquean las solicitudes al servidor de API de Kubernetes. Asegúrate de que el grupo de seguridad del clúster permita el tráfico en el puerto 443 desde el CIDR de origen.
Mensaje de error "couldn't get current API server group list"
Cuando intentas realizar una acción sin permiso para acceder a la API de Kubernetes en el clúster de Amazon EKS, recibes el siguiente mensaje de error:
"couldn't get current server API group list: the server has asked for the client to provide credentials"
Para resolver este problema, sigue estos pasos:
-
Ejecuta el comando get-caller-identity para comprobar quién hizo la solicitud de acceso al clúster de EKS:
aws sts get-caller-identityResultado de ejemplo:
{ "UserId": "user-ID", "Account": "account-ID", "Arn": "arn:aws:iam::account-ID:user/kube-user" }Nota: El resultado del ejemplo anterior contiene el ID de usuario, la cuenta de AWS y el ARN de la entidad de IAM que realizó la solicitud.
-
Cambia el modo de autenticación a API_AND_CONFIG_MAP o API y, a continuación, utiliza las entradas de acceso de EKS para conceder a los usuarios de IAM acceso a Kubernetes.
-
Para conceder los permisos adecuados, utiliza el modo de autenticación de API o API_AND_CONFIG_MAP para agregar la entrada de la entidad de IAM.
Modo de autenticación de API
Ejecuta el siguiente comando create-access-entry para crear una entrada de acceso que permita a la entidad principal de IAM autenticarse en tu clúster de Amazon EKS:aws eks create-access-entry --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:user/my-user --type STANDARD --username my-userNota: En el comando anterior, sustituye el ARN principal por el ARN de la entidad de IAM.
Ejecuta el siguiente comando associate-access-policy para asociar la entrada de acceso a una política de acceso:aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --access-scope type=cluster --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicyModo de autenticación de API_AND_CONFIG_MAP
Para el modo de autenticación de API_AND_CONFIG_MAP, puedes usar el modo de autenticación de API anterior o puedes editar el ConfigMap.
Para editar aws-auth configmap, ejecuta el siguiente comando:kubectl edit configmap aws-auth -n kube-systemAgrega tu rol o usuario de IAM a la sección mapRoles o mapUsers.
A continuación, se muestra un ejemplo de una sección de mapRoles con una entrada para un rol de IAM:mapRoles: | - groups: - system:masters rolearn: arn:aws:iam::111122223333:role/MyEKSrole username: eks-userNota: Sustituye el ARN de ejemplo por el ARN de tu rol de IAM. Si utilizas un usuario de IAM, sustituye MapRoles por MapUsers y el ARN por el ARN del usuario de IAM.
El ejemplo anterior asigna la entidad principal de IAM al grupo system:masters, que concede acceso administrativo completo al clúster. Para un acceso más restrictivo, asigna la entidad principal de IAM a un usuario o grupo de Kubernetes personalizado y utiliza los objetos de control de acceso basado en roles (RBAC) de Kubernetes para definir los permisos necesarios. Para obtener más información, consulta Using RBAC Authorization (Uso de la autorización RBAC) en el sitio web de Kubernetes.
Mensaje de error "Did you specify the right host or port?"
Si no has configurado correctamente el archivo kubeconfig, kubectl no puede conectarse al clúster de EKS y recibirás el siguiente mensaje de error:
"The connection to the server localhost:8080 was refused - did you specify the right host or port?"
Para solucionar este problema, toma las siguientes medidas:
-
Ejecuta el siguiente comando para actualizar el archivo kubeconfig:
aws eks update-kubeconfig --region region-code --name my-cluster -
Ejecuta el siguiente comando para comprobar el contexto actual en tu archivo kubeconfig:
kubectl config current-context -
Si el resultado del comando current-context no apunta al clúster de EKS esperado, ejecuta el siguiente comando:
kubectl config use-context ;
Información relacionada
Conexión de kubectl a un clúster de EKS mediante la creación de un archivo kubeconfig
- Temas
- Containers
- Etiquetas
- Amazon Elastic Kubernetes Service
- Idioma
- Español

Contenido relevante
preguntada hace un año
preguntada hace 6 meses
preguntada hace un año
preguntada hace 2 años
preguntada hace un año
OFICIAL DE AWSActualizada hace un año
OFICIAL DE AWSActualizada hace 2 años
OFICIAL DE AWSActualizada hace un año