Esta página le muestra cómo resolver problemas relacionados con la instalación o actualización de GKE en AWS.
Si necesita ayuda adicional, comuníquese con Atención al cliente de Cloud .Errores en la creación de clústeres
Al solicitar la creación de un clúster, GKE en AWS primero ejecuta una serie de pruebas previas al lanzamiento para verificar la solicitud. Si la creación del clúster falla, puede deberse a que una de estas pruebas previas falló o a que un paso del proceso de creación del clúster no se completó.
Si una prueba previa al vuelo falla, el clúster no crea ningún recurso y le devuelve directamente la información del error. Por ejemplo, si intenta crear un clúster con el nombre invalid%%%name
, la prueba previa al vuelo para un nombre de clúster válido falla y la solicitud devuelve el siguiente error:
ERROR: (gcloud.container.aws.clusters.create) INVALID_ARGUMENT: must be
between 1-63 characters, valid characters are /[a-z][0-9]-/, should start with a
letter, and end with a letter or a number: "invalid%%%name",
field: aws_cluster_id
La creación del clúster también puede fallar después de que se hayan superado las pruebas previas al vuelo. Esto puede ocurrir varios minutos después de que haya comenzado la creación del clúster, después de que GKE en AWS haya creado recursos en Google Cloud y AWS. En este caso, existirá un recurso de AWS en su Google Cloud proyecto con su estado establecido en ERROR
.
Para obtener detalles sobre la falla, ejecute el siguiente comando:
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--format "value(state, errors)"
Reemplace lo siguiente:
- CLUSTER_NAME con el nombre del clúster cuyo estado estás consultando
- GOOGLE_CLOUD_LOCATION con el nombre de la Google Cloud región que administra este clúster de AWS
Como alternativa, puede obtener detalles sobre la falla de creación al describir el recurso Operation
asociado con la llamada API de creación de clúster.
gcloud container aws operations describe OPERATION_ID
Reemplace OPERATION_ID con el ID de la operación que creó el clúster. Si no tiene el ID de la operación de su solicitud de creación del clúster, puede obtenerlo con el siguiente comando:
gcloud container aws operations list \
--location GOOGLE_CLOUD_LOCATION
Utilice la marca de tiempo o la información relacionada para identificar la operación de creación de clúster de interés.
Por ejemplo, si la creación de su clúster falló debido a un rol de AWS IAM sin permisos suficientes, este comando y sus resultados se parecen al siguiente ejemplo:gcloud container aws operations describe b6a3d042-8c30-4524-9a99-6ffcdc24b370 \
--location GOOGLE_CLOUD_LOCATION
La salida es similar a la siguiente:
done: true
error:
code: 9
message: 'could not set deregistration_delay timeout for the target group: AccessDenied
User: arn:aws:sts::0123456789:assumed-role/foo-1p-dev-oneplatform/multicloud-service-agent
is not authorized to perform: elasticloadbalancing:ModifyTargetGroupAttributes
on resource: arn:aws:elasticloadbalancing:us-west-2:0123456789:targetgroup/gke-4nrk57tlyjva-cp-tcp443/74b57728e7a3d5b9
because no identity-based policy allows the elasticloadbalancing:ModifyTargetGroupAttributes
action'
metadata:
'@type': type.googleapis.com/google.cloud.gkemulticloud.v1.OperationMetadata
createTime: '2021-12-02T17:47:31.516995Z'
endTime: '2021-12-02T18:03:12.590148Z'
statusDetail: Cluster is being deployed
target: projects/123456789/locations/us-west1/awsClusters/aws-prod1
name: projects/123456789/locations/us-west1/operations/b6a3d042-8c30-4524-9a99-6ffcdc24b370
La creación o el funcionamiento del clúster falla con un error de autorización
Un error que muestra un fallo de autorización suele indicar que uno de los dos roles de AWS IAM especificados durante el comando de creación del clúster se creó incorrectamente. Por ejemplo, si el rol de API no incluía el permiso elasticloadbalancing:ModifyTargetGroupAttributes
, la creación del clúster fallaría con un mensaje de error similar al siguiente:
ERROR: (gcloud.container.aws.clusters.create) could not set
deregistration_delay timeout for the target group: AccessDenied User:
arn:aws:sts::0123456789:assumed-role/cloudshell-user-dev-api-role/multicloud-
service-agent is not authorized to perform:
elasticloadbalancing:ModifyTargetGroupAttributes on resource:
arn:aws:elasticloadbalancing:us-east-1:0123456789:targetgroup/gke-u6au6c65e4iq-
cp-tcp443/be4c0f8d872bb60e because no identity-based policy allows the
elasticloadbalancing:ModifyTargetGroupAttributes action
Incluso si un clúster parece haberse creado correctamente, una función de IAM especificada incorrectamente podría provocar fallas más adelante durante el funcionamiento del clúster, como cuando se usan comandos como kubectl logs
.
Para solucionar estos errores de autorización, confirme que las políticas asociadas a los dos roles de IAM especificados durante la creación del clúster sean correctas. En concreto, asegúrese de que coincidan con las descripciones de "Crear roles de IAM de AWS" y, a continuación, elimine y vuelva a crear el clúster. Las descripciones de cada rol están disponibles en "Rol de API" y "Rol del plano de control" .
La creación o el funcionamiento del clúster fallan en la etapa de comprobación del estado
A veces, la creación del clúster falla durante la verificación del estado con un estado de Operación similar al siguiente:
done: true
error:
code: 4
message: Operation failed
metadata:
'@type': type.googleapis.com/google.cloud.gkemulticloud.v1.OperationMetadata
createTime: '2022-06-29T18:26:39.739574Z'
endTime: '2022-06-29T18:54:45.632136Z'
errorDetail: Operation failed
statusDetail: Health-checking cluster
target: projects/123456789/locations/us-west1/awsClusters/aws-prod1
name: projects/123456789/locations/us-west1/operations/8a7a3b7f-242d-4fff-b518-f361d41c6597
Este error podría deberse a que faltan roles de IAM o a que se especificaron incorrectamente. Puede usar AWS CloudTrail para detectar problemas de IAM.
Por ejemplo:
Si la función de API no incluyó el permiso
kms:GenerateDataKeyWithoutPlaintext
para la clave KMS del volumen principal del plano de control, verá los siguientes eventos:"eventName": "AttachVolume", "errorCode": "Client.InvalidVolume.NotFound", "errorMessage": "The volume 'vol-0ff75940ce333aebb' does not exist.",
y
"errorCode": "AccessDenied", "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/foo-1p-dev-oneplatform/multicloud-service-agent is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: arn:aws:kms:us-west1:0123456789:key/57a61a45-d9c1-4038-9021-8eb08ba339ba because no identity-based policy allows the kms:GenerateDataKeyWithoutPlaintext action",
Si el rol del plano de control no incluyó el permiso
kms:CreateGrant
para la clave KMS del volumen principal del plano de control, verá los siguientes eventos:"eventName": "AttachVolume", "errorCode": "Client.CustomerKeyHasBeenRevoked", "errorMessage": "Volume vol-0d022beb769c8e33b cannot be attached. The encrypted volume was unable to access the KMS key.",
y
"errorCode": "AccessDenied", "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/foo-controlplane/i-0a11fae03eb0b08c1 is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:us-west1:0123456789:key/57a61a45-d9c1-4038-9021-8eb08ba339ba because no identity-based policy allows the kms:CreateGrant action",
Si no le otorgó al rol vinculado al servicio llamado
AWSServiceRoleForAutoScaling
los permisoskms:CreateGrant
para usar la clave KMS del volumen raíz del plano de control, verá los siguientes eventos:"errorCode": "AccessDenied", "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:CreateGrant on resource: arn:aws:kms:us-west1:0123456789:key/c77a3a26-bc91-4434-bac0-0aa963cb0c31 because no identity-based policy allows the kms:CreateGrant action",
Si no le otorgó al rol vinculado al servicio llamado
AWSServiceRoleForAutoScaling
con permisoskms:GenerateDataKeyWithoutPlaintext
para usar la clave KMS del volumen raíz del plano de control, verá los siguientes eventos:"errorCode": "AccessDenied", "errorMessage": "User: arn:aws:sts::0123456789:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: arn:aws:kms:us-west1:0123456789:key/c77a3a26-bc91-4434-bac0-0aa963cb0c31 because no identity-based policy allows the kms:CreateGrant action",
Esperando que los nodos se unan al clúster
Si recibe el siguiente error al crear un grupo de nodos, verifique que su VPC no incluya un bloque CIDR IPv4 secundario asociado .
errorDetail: Operation failed
statusDetail: Waiting for nodes to join the cluster (0 out of 1 are ready)
Para solucionar este problema, cree un grupo de seguridad que incluya todos los bloques CIDR y agréguelo al clúster. Para obtener más información, consulte Grupos de nodos en bloques CIDR secundarios de VPC .
Obtener el registro del sistema de una instancia
Si una instancia del plano de control o del grupo de nodos no se inicia, puede inspeccionar su registro del sistema. Para ello, haga lo siguiente:
- Abra la consola de instancia de AWS EC2 .
- Haga clic en Instancias .
- Busque la instancia por nombre. GKE en AWS generalmente crea instancias llamadas
CLUSTER_NAME -cp
para nodos del plano de control oCLUSTER_NAME -np
para nodos del grupo de nodos. - Seleccione Acciones -> Supervisar y solucionar problemas -> Obtener registro del sistema . Aparecerá el registro del sistema de la instancia.
Errores de actualización del clúster
Al actualizar un clúster, al igual que al crear uno nuevo, GKE en AWS primero ejecuta un conjunto de pruebas previas al lanzamiento para verificar la solicitud. Si la actualización del clúster falla, puede deberse a que una de estas pruebas previas falló o a que un paso del proceso de actualización del clúster no se completó.
Si una prueba previa al vuelo falla, el clúster no actualiza ningún recurso y le devuelve directamente la información del error. Por ejemplo, si intenta actualizar un clúster para usar un par de claves SSH llamado test_ec2_keypair
, la prueba previa al vuelo intenta obtener el par de claves EC2, pero falla y la solicitud devuelve el siguiente error:
ERROR: (gcloud.container.aws.clusters.update) INVALID_ARGUMENT: key pair
"test_ec2_keypair" not found,
field: aws_cluster.control_plane.ssh_config.ec2_key_pair
Las actualizaciones del clúster también pueden fallar después de que se hayan superado las pruebas previas al vuelo. Esto puede ocurrir varios minutos después de que haya comenzado la actualización del clúster y su recurso de AWS en su Google Cloud El proyecto tiene su estado establecido en DEGRADED
.
Para obtener detalles sobre la falla y la operación relacionada, siga los pasos descritos en Fallas de creación de clúster .
La actualización del clúster falla al actualizar las etiquetas del plano de control
La API de actualización de AWS permite actualizar las etiquetas del plano de control. Para ello, necesita un clúster con Kubernetes versión 1.24 o superior. También debe asegurarse de que su rol de AWS IAM tenga los permisos adecuados, como se indica en la página de actualización del clúster .
Un error que muestra un fallo de autenticación suele indicar que no se agregó algún permiso de IAM. Por ejemplo, si el rol de API no incluía el permiso ec2:DeleteTags
, la actualización del clúster para las etiquetas podría fallar con un mensaje de error similar al siguiente (el <encoded_auth_failure_message>
se ha omitido para abreviar):
ERROR: (gcloud.container.aws.clusters.update) could not delete tags:
UnauthorizedOperation You are not authorized to perform this operation.
Encoded authorization failure message: <encoded_auth_failure_message>
Para depurar el mensaje de error codificado anterior, puede enviar una solicitud a la API de decodificación de mensajes de autorización de AWS STS como se muestra en el siguiente comando:
aws sts decode-authorization-message --encoded-message
<encoded_auth_failure_message> --query DecodedMessage --output
text | jq '.' | less
La salida es similar a la siguiente:
...
"principal": {
"id": "AROAXMEL2SCNPG6RCJ72B:iam-session",
"arn": "arn:aws:sts::1234567890:assumed-role/iam_role/iam-session"
},
"action": "ec2:DeleteTags",
"resource": "arn:aws:ec2:us-west-2:1234567890:security-group-rule/sgr-00bdbaef24a92df62",
...
La respuesta anterior indica que no se pudo ejecutar la acción ec2:DeleteTags
en el recurso de regla del grupo de seguridad de EC2 del clúster de AWS. Actualice su rol de API según corresponda y reenvíe la solicitud de actualización de API para actualizar las etiquetas del plano de control.
¿Qué sigue?
- Si necesita ayuda adicional, comuníquese con Atención al cliente de Cloud .