En esta página se explica cómo resolver problemas habituales con GKE en AWS.
Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud.Mensajes de error habituales
En las siguientes secciones se explican las causas y las soluciones de algunos mensajes de error habituales.
El servidor no tiene un recurso
Pueden producirse errores como error: the server doesn't have a resource type "services"
cuando un clúster no tiene grupos de nodos en ejecución o cuando la pasarela Connect no puede conectarse a un grupo de nodos. Para comprobar el estado de tus grupos de nodos, ejecuta el siguiente comando:
gcloud container aws node-pools list \
--cluster-name CLUSTER_NAME \
--location LOCATION
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clústerLOCATION
: la Google Cloud ubicación que gestiona tu clúster
El resultado incluye el estado de los grupos de nodos del clúster. Si no aparece ningún grupo de nodos, crea uno.
Usuario prohibido
Se produce el siguiente error cuando tu nombre de usuario no tiene acceso de administrador a tu clúster:
Error from server (Forbidden): users "administrator@example.com" is forbidden:
User "system:serviceaccount:gke-connect:connect-agent-sa" cannot impersonate
resource "users" in API group "" at the cluster scope
Puedes configurar usuarios adicionales pasando la marca
--admin-users
al crear un clúster.
Si usas la pasarela Connect y no puedes conectarte a tu clúster, prueba a seguir estos pasos:
Obtén los usuarios autorizados de tu clúster.
gcloud container aws clusters describe CLUSTER_NAME \ --format 'value(authorization.admin_users)'
Sustituye
CLUSTER_NAME
por el nombre de tu clúster.El resultado incluye los nombres de usuario con acceso de administrador al clúster. Por ejemplo:
{'username': 'administrator@example.com'}
Obtiene el nombre de usuario autenticado actualmente con la CLI de Google Cloud.
gcloud config get-value account
El resultado incluye la cuenta autenticada con la CLI de Google Cloud. Si la salida de
gcloud containers aws clusters describe
ygcloud config get-value account
no coincide, ejecutagcloud auth login
y autentícate como el nombre de usuario con acceso de administrador al clúster.
Problemas con los comandos de kubectl
En las siguientes secciones se explica cómo resolver problemas con comandos de kubectl
que no responden o fallan.
Los comandos de kubectl dejan de responder
Si tu clúster ejecuta una versión de Kubernetes anterior a la 1.25 y los comandos kubectl
no responden o se agota el tiempo de espera, lo más probable es que aún no hayas creado un pool de nodos. De forma predeterminada, GKE on AWS genera archivos kubeconfig
que usan la pasarela de Connect como endpoint accesible a través de Internet.
Para que esto funcione, la implementación de gke-connect-agent
debe ejecutarse en un grupo de nodos del clúster.
Para obtener más información de diagnóstico, ejecuta el siguiente comando:
kubectl cluster-info -v=9
Si no hay grupos de nodos en ejecución, las solicitudes a connectgateway.googleapis.com
fallarán con un error 404.cannot find active connections for cluster
En los clústeres con una versión de Kubernetes 1.25 o posterior, gke-connect-agent
se ejecuta en el plano de control y no se necesita un pool de nodos. Si el comando kubectl
no responde, consulta los registros del componente del plano de control con Cloud Logging.
Los comandos kubectl exec, attach y port-forward fallan
Los comandos kubectl exec
, kubectl attach
y kubectl port-forward
pueden fallar y mostrar el mensaje error: unable to upgrade connection
al usar Conectar pasarela. Esta es una limitación al usar la pasarela Connect como endpoint del servidor de la API de Kubernetes.
Para solucionar este problema, usa un kubeconfig
que especifique el endpoint privado del clúster. Para obtener instrucciones sobre cómo acceder al clúster a través de su endpoint privado, consulta el artículo Configurar el acceso a clústeres para kubectl.
kubectl logs falla con el error remoto: tls: internal error
Este problema puede producirse si falta un permiso en el rol de la API Control Plane. Por ejemplo, esto puede ocurrir si a tu rol de AWS le falta el permiso ec2:DescribeDhcpOptions
. En este caso, no se pueden aprobar las solicitudes de firma de certificados de los nodos y el nodo de trabajo no tiene un certificado válido.
Para determinar si este es el problema, puedes comprobar si hay solicitudes de firma de certificados pendientes que no se hayan aprobado con este comando:
kubectl get csr
Para resolver este problema, verifica que tu rol de AWS cumpla los requisitos.
Solución de problemas genéricos de kubectl
Si usas la pasarela de conexión:
Asegúrate de que has habilitado Connect Gateway en tu Google Cloud proyecto:
gcloud services enable connectgateway.googleapis.com
En los clústeres con una versión de Kubernetes anterior a la 1.25, asegúrate de que haya al menos un grupo de nodos de Linux en ejecución y de que
gke-connect-agent
esté en funcionamiento. Para obtener más información, consulta el artículo Solucionar problemas de conexión de clústeres.En los clústeres con una versión de Kubernetes 1.25 o posterior, consulta los
gke-connect-agent
registros con Cloud Logging.
El servicio de Kubernetes (LoadBalancer) o el Ingress de Kubernetes no funcionan
Si has creado balanceadores de carga elásticos (ELB, NLB o ALB) de AWS, pero no funcionan como esperabas, puede deberse a problemas con el etiquetado de subredes. Para obtener más información, consulta Subredes de balanceador de carga.
Los pods de los nodos Arm fallan
El problema siguiente se produce cuando se despliega un pod en un nodo Arm, pero la imagen de contenedor no se ha compilado para la arquitectura Arm.
Para identificar el problema, sigue estos pasos:
Obtén el estado de tus pods:
kubectl get pods
Obtén los registros del pod que falla:
kubectl logs POD_NAME
Sustituye
POD_NAME
por el nombre del pod que falla.El mensaje de error de los registros de tu pod es similar al siguiente:
exec ./hello-app: exec format error
Para solucionar este problema, asegúrese de que su imagen de contenedor sea compatible con la arquitectura Arm. Te recomendamos que crees imágenes de varias arquitecturas.
No se puede eliminar el clúster
Si recibes un error similar al siguiente al intentar eliminar un clúster, es posible que tu rol de API de GKE Multi-Cloud no exista:
ERROR: (gcloud.container.aws.clusters.delete) FAILED_PRECONDITION: Could not
assume role
"arn:aws:iam::ACCOUNT_NUMBER:role/gke123456-anthos-api-role"
through service account
"service-123456789@gcp-sa-gkemulticloud.iam.gserviceaccount.com".
Please make sure the role has a trust policy allowing the GCP service agent to
assume it: WebIdentityErr failed to retrieve credentials
Para solucionar el problema, sigue los pasos que se indican en Crear un rol de API de GKE Multi-Cloud. Cuando vuelvas a crear el rol con el mismo nombre y permisos, podrás volver a probar el comando.
Siguientes pasos
- Si necesitas más ayuda, ponte en contacto con el servicio de atención al cliente de Cloud.