Esta página mostra como resolver problemas relacionados com a instalação ou a atualização do GKE na AWS.
Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud.Falhas na criação de clusters
Quando faz um pedido para criar um cluster, o GKE no AWS executa primeiro um conjunto de testes pré-voo para validar o pedido. Se a criação do cluster falhar, pode dever-se a uma destas situações: um dos testes prévios falhou ou um passo no próprio processo de criação do cluster não foi concluído.
Se um teste pré-implementação falhar, o cluster não cria recursos e devolve-lhe diretamente informações sobre o erro. Por exemplo, se tentar criar um cluster com o nome invalid%%%name
, o teste prévio para um nome de cluster válido falha e o pedido devolve o seguinte erro:
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
A criação de clusters também pode falhar após a aprovação nos testes pré-lançamento. Isto pode acontecer vários minutos após o início da criação do cluster, depois de o GKE no AWS ter criado recursos no Google Cloud e no AWS. Neste caso, existe um recurso da AWS no seu projeto com o estado definido como ERROR
. Google Cloud
Para obter detalhes sobre a falha, execute o seguinte comando:
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--format "value(state, errors)"
Substitua o seguinte:
- CLUSTER_NAME com o nome do cluster cujo estado está a consultar
- GOOGLE_CLOUD_LOCATION com o nome da Google Cloud região que gere este cluster da AWS
Em alternativa, pode obter detalhes sobre a falha de criação descrevendo o recurso Operation
associado à chamada da API create cluster.
gcloud container aws operations describe OPERATION_ID
Substitua OPERATION_ID pelo ID da operação que criou o cluster. Se não tiver o ID da operação do seu pedido de criação do cluster, pode obtê-lo com o seguinte comando:
gcloud container aws operations list \
--location GOOGLE_CLOUD_LOCATION
Use a data/hora ou as informações relacionadas para identificar a operação de criação do cluster de interesse.
Por exemplo, se a criação do cluster falhou devido a uma função do AWS IAM com autorizações insuficientes, este comando e os respetivos resultados são semelhantes ao seguinte exemplo:gcloud container aws operations describe b6a3d042-8c30-4524-9a99-6ffcdc24b370 \
--location GOOGLE_CLOUD_LOCATION
O resultado é semelhante ao seguinte:
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
A criação ou a operação do cluster falha com um erro de autorização
Um erro que mostra uma falha de autorização indica normalmente que uma das duas funções do AWS IAM que especificou durante o comando de criação do cluster foi criada incorretamente. Por exemplo, se a função da API não incluísse a autorização elasticloadbalancing:ModifyTargetGroupAttributes
, a criação do cluster falharia com uma mensagem de erro semelhante à seguinte:
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
Mesmo que um cluster pareça ter sido criado com êxito, uma função de IAM especificada incorretamente pode causar falhas posteriormente durante a operação do cluster, como quando usa comandos como kubectl logs
.
Para resolver estes erros de autorização, confirme se as políticas associadas às duas funções do IAM especificadas durante a criação do cluster estão corretas. Especificamente, certifique-se de que correspondem às descrições em Crie funções do IAM da AWS, em seguida, elimine e recrie o cluster. As descrições das funções individuais estão disponíveis em API Role e Control plane role.
A criação ou a operação do cluster falha na fase de verificação de funcionamento
Por vezes, a criação do cluster falha durante a verificação de funcionamento com um estado de operação semelhante ao seguinte:
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
Esta falha pode dever-se à falta de funções do IAM ou a funções do IAM especificadas incorretamente. Pode usar o AWS CloudTrail para expor problemas de IAM.
Por exemplo:
Se a função da API não incluir a autorização
kms:GenerateDataKeyWithoutPlaintext
para a chave KMS do volume principal do plano de controlo, verá os seguintes eventos:"eventName": "AttachVolume", "errorCode": "Client.InvalidVolume.NotFound", "errorMessage": "The volume 'vol-0ff75940ce333aebb' does not exist.",
e
"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",
Se a função do plano de controlo não incluir a autorização
kms:CreateGrant
para a chave KMS do volume principal do plano de controlo, verá os seguintes eventos:"eventName": "AttachVolume", "errorCode": "Client.CustomerKeyHasBeenRevoked", "errorMessage": "Volume vol-0d022beb769c8e33b cannot be attached. The encrypted volume was unable to access the KMS key.",
e
"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",
Se não atribuiu à função associada ao serviço denominada
AWSServiceRoleForAutoScaling
as autorizaçõeskms:CreateGrant
para usar a chave do KMS do volume raiz do plano de controlo, verá os seguintes 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",
Se não atribuiu à função associada ao serviço denominada
AWSServiceRoleForAutoScaling
as autorizaçõeskms:GenerateDataKeyWithoutPlaintext
para usar a chave do KMS do volume raiz do plano de controlo, verá os seguintes 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",
A aguardar que os nós se juntem ao cluster
Se receber o seguinte erro ao criar um conjunto de nós, verifique se a sua VPC não inclui um bloco CIDR IPv4 secundário associado.
errorDetail: Operation failed
statusDetail: Waiting for nodes to join the cluster (0 out of 1 are ready)
Para corrigir este problema, crie um grupo de segurança que inclua todos os blocos CIDR e adicione esse grupo ao seu cluster. Para mais informações, consulte o artigo Pools de nós em blocos CIDR secundários da VPC.
Obtenha o registo do sistema de uma instância
Se uma instância do plano de controlo ou do conjunto de nós não for iniciada, pode inspecionar o respetivo registo do sistema. Para inspecionar o registo do sistema, faça o seguinte:
- Abra a consola de instâncias do AWS EC2.
- Clique em Instâncias.
- Encontre a instância pelo nome. Normalmente, o GKE on AWS cria instâncias
denominadas
CLUSTER_NAME-cp
para nós do plano de controlo ouCLUSTER_NAME-np
para nós do conjunto de nós. - Escolha Ações -> Monitorizar e resolver problemas -> Obter registo do sistema. É apresentado o registo do sistema da instância.
Falhas na atualização do cluster
Quando atualiza um cluster, tal como quando cria um novo cluster, o GKE na AWS executa primeiro um conjunto de testes prévios para validar o pedido. Se a atualização do cluster falhar, pode dever-se a uma destas testes prévios falhados ou a um passo no próprio processo de atualização do cluster não concluído.
Se um teste pré-implementação falhar, o cluster não atualiza nenhum recurso e devolve-lhe diretamente informações sobre o erro. Por exemplo, se tentar
atualizar um cluster para usar um par de chaves SSH com o nome test_ec2_keypair
, o
teste prévio tenta obter o par de chaves do EC2, falha e o pedido
devolve o seguinte erro:
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
As atualizações de clusters também podem falhar após a aprovação nos testes pré-implementação. Isto pode acontecer vários minutos após o início da atualização do cluster e o recurso da AWS no seu projeto tem o estado definido como DEGRADED
. Google Cloud
Para obter detalhes sobre a falha e a operação relacionada, siga os passos descritos em Falhas na criação de clusters.
A atualização do cluster falha ao atualizar as etiquetas do plano de controlo
A API de atualização da AWS suporta a atualização de etiquetas do plano de controlo. Para atualizar as etiquetas, precisa de um cluster com a versão 1.24 ou superior do Kubernetes. Também tem de se certificar de que a função do IAM do AWS tem as autorizações adequadas, conforme indicado na página atualizar cluster, para atualizar as etiquetas do plano de controlo.
Um erro que mostra uma falha de autenticação indica normalmente que se esqueceu de adicionar
alguma autorização de IAM. Por exemplo, se a função da API não incluísse a autorização ec2:DeleteTags
, a atualização do cluster para etiquetas pode falhar com uma mensagem de erro semelhante à seguinte (o <encoded_auth_failure_message>
é ocultado para simplificar):
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 a mensagem de falha codificada anterior, pode enviar um pedido para a API AWS STS decode-authorization-message, conforme mostrado no seguinte comando:
aws sts decode-authorization-message --encoded-message
<encoded_auth_failure_message> --query DecodedMessage --output
text | jq '.' | less
O resultado é semelhante ao seguinte:
...
"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",
...
A resposta anterior indica que não conseguiu realizar a ação no recurso de regra do grupo de segurança do EC2 do cluster da AWS.ec2:DeleteTags
Atualize a função da API em conformidade e reenvie o pedido da API de atualização para atualizar as etiquetas do plano de controlo.
O que se segue?
- Se precisar de assistência adicional, contacte o apoio ao cliente do Google Cloud.