¿Cómo soluciono los problemas con el punto de conexión del servidor de la API de mi clúster de Amazon EKS?

5 minutos de lectura
0

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.

Descripción breve

Si tiene problemas con el punto de conexión del servidor de la API de Kubernetes, siga los pasos de una de las siguientes secciones:

  • No puede ejecutar comandos kubectl en un clúster nuevo o en uno existente
  • No puede ejecutar comandos kubectl en el clúster después de cambiar el acceso al punto de conexión de público a privado
  • El clúster se ha quedado bloqueado en el estado Error y no puede cambiar la configuración de acceso al punto de conexión de público a privado

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

1.    Confirme que está utilizando los archivos kubeconfig correctos para conectarse a su clúster. Para obtener más información, consulte Organización del acceso a los clústeres con archivos kubeconfig (procedente del sitio web de Kubernetes).

2.    Compruebe si hay varios contextos en cada clúster en sus archivos kubeconfig.

Ejemplo de salida:

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

Si los archivos kubeconfig existentes no tienen los detalles correctos del clúster, utilice el siguiente comando para crear uno con los detalles correctos:

aws eks update-kubeconfig --name cluster name --region region

Nota: Sustituya cluster name por el nombre de su clúster y region por su región de AWS.

3.    Utilice telnet en el puerto 443 para validar la conectividad del punto de conexión del servidor de la API desde su dispositivo.

Ejemplo de salida:

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.

Si telnet no funciona, siga estos pasos para solucionar el problema:

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 conexión del servidor de su API.

Comprobar si se ha restringido el acceso público al punto de conexión del servidor de la API

Si ha especificado bloques de CIDR para limitar el acceso al punto de conexión del servidor de la API público, se recomienda activar también el acceso al punto de conexión privado.

4.    Compruebe el comportamiento de acceso a los puntos de conexión 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 conexión de público a privado

1.    Confirme que utiliza un host bastión o redes conectadas, como VPC interconectadas, AWS Direct Connect o VPN, para acceder al punto de conexión de la API de Amazon EKS.

Nota: En el modo de acceso privado, solo puede acceder al punto de conexión de la API de Amazon EKS desde la VPC del clúster.

2.    Compruebe si los grupos de seguridad o las listas de control de acceso de la red bloquean las llamadas a la API.

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 desde la VPC interconectada a los grupos de seguridad del plan de control en el puerto 443. Además, compruebe que las VPC interconectadas tengan el puerto 53 abierto con las otras VPC. El puerto 53 se utiliza para la resolución de DNS.

El clúster se ha quedado bloqueado en el estado Error y no puede cambiar la configuración de acceso al punto de conexión 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).

1.    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.

2.    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.


Información relacionada

Requisitos y consideraciones sobre grupos de seguridad de Amazon EKS

La resolución de DNS para los clústeres de EKS a través de puntos de conexión privados

Amazon EKS habilita restricciones de acceso a la red para los puntos de conexión públicos en un clúster de Kubernetes

Control de acceso al punto de conexión del clúster de Amazon EKS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años