¿Cómo soluciono los problemas de conectividad con el punto de enlace del servidor de la API de mi clúster de Amazon EKS?
No puedo ejecutar comandos kubectl. Además, he cambiado la configuración de acceso al punto de conexión de público a privado en mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS). En este momento, mi clúster se ha quedado bloqueado en estado Error.
Breve descripción
Según su problema, siga los pasos de una de las siguientes secciones.
Nota: Para configurar el acceso al punto de conexión del servidor de la API de Kubernetes, consulte Modificar el acceso al punto de conexión del clúster.
Solución
No puede ejecutar comandos kubectl en un clúster nuevo o en uno existente
Confirme que el archivo kubeconfig se conecta a su clúster
Siga estos pasos:
- Confirme que está utilizando los archivos kubeconfig correctos para conectarse a su clúster. Para obtener más información, consulte Organizing cluster access using kubeconfig files en el sitio web de Kubernetes.
- Compruebe si hay varios contextos en cada clúster en sus archivos kubeconfig.
Resultado del ejemplo:
Si el archivo kubeconfig no tiene los detalles correctos del clúster, ejecute el siguiente comando para crear una nueva entrada para el clúster:$ kubectl config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}' Cluster name Server new200.us-east-2.eksctl.io https://D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com
Nota: Sustituya CLUSTER NAME por el nombre de su clúster y REGION por su región de AWS.aws eks update-kubeconfig --name CLUSTER NAME --region REGION
- Utilice telnet en el puerto 443 para validar la conectividad del punto de enlace del servidor de la API desde su dispositivo.
Resultado del ejemplo:
Si el comando telnet no funciona, siga los siguientes pasos para solucionar el problema.$ echo exit | telnet D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com 443 Trying 18.224.160.210... Connected to D8DC9092A7985668FF67C3D1C789A9F5.gr7.us-east-2.eks.amazonaws.com. Escape character is '^]'. Connection closed by foreign host.
Comprobar el solucionador de DNS
Si el servidor de la API no resuelve el problema, entonces hay un problema con el solucionador de DNS.
Ejecute el siguiente comando desde el mismo dispositivo en el que fallaron los comandos kubectl:
nslookup APISERVER ENDPOINT
Nota: Sustituya APISERVER ENDPOINT por el punto de enlace del servidor de la API de su clúster.
Comprobar si se ha restringido el acceso público al punto de enlace del servidor de la API
Si ha especificado bloques de CIDR para limitar el acceso al punto de enlace del servidor de la API público, se recomienda activar también el acceso al punto de enlace privado.
Compruebe el comportamiento de acceso a los puntos de enlace del servidor de la API. Consulte Modificar el acceso al punto de conexión del clúster.
No puede ejecutar comandos kubectl en el clúster después de cambiar el acceso al punto de enlace de público a privado
Para resolver este problema, siga estos pasos:
- Confirme que utiliza un host bastión o redes conectadas, como nubes virtuales privadas (VPC) interconectadas, AWS Direct Connect o VPN, para acceder al punto de enlace de la API de Amazon EKS.
Nota: En el modo de acceso privado, solo puede acceder al punto de enlace de la API de Amazon EKS desde la VPC del clúster o las redes conectadas. - Compruebe si los grupos de seguridad o las listas de control de acceso de la red bloquean las solicitudes al servidor de API de Kubernetes.
Si accede a su clúster a través de una VPC interconectada, confirme que los grupos de seguridad del plano de control permiten el acceso correcto. Deben permitir el acceso desde la VPC interconectada a los grupos de seguridad del plano de control de Amazon EKS en el puerto 443.
El clúster se ha quedado bloqueado en el estado Error y no puede cambiar la configuración de acceso al punto de enlace de público a privado
Es posible que el clúster esté en estado Error debido a un problema de permisos con AWS Identity and Access Management (IAM).
Para resolver este problema, siga estos pasos:
- Confirme que el rol de IAM del usuario tenga autorización para realizar la acción AssociateVPCWithHostedZone.
Nota: Si la acción no está bloqueada, compruebe si la cuenta del usuario tiene políticas de AWS Organizations que bloqueen las llamadas a la API y provoquen un error en el clúster. - Confirme que el permiso del usuario de IAM no esté bloqueado de forma implícita o explícita en ningún nivel superior a la cuenta.
Nota: El permiso de usuario de IAM se bloquea de forma implícita si no se incluye en la declaración de la política Permitir. Se bloquea de forma explícita si se incluye en la declaración de la política Denegar. El permiso se bloquea incluso si el administrador de la cuenta asocia la política de IAM AdministratorAccess con permisos */* al usuario. Los permisos de las políticas de AWS Organizations anulan los permisos de las entidades de IAM.
Contenido relevante
- OFICIAL DE AWSActualizada hace 9 meses
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 años