Nesta página, mostramos como resolver problemas relacionados à instalação ou ao upgrade do GKE na AWS.
Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.Falhas na criação de cluster
Quando você faz uma solicitação para criar um cluster, o GKE na AWS primeiro executa um conjunto de testes de simulação para verificar a solicitação. Se a criação do cluster falhar, pode ser porque um desses testes de simulação falhou ou porque uma etapa no processo de criação do cluster não foi concluída.
Quando um teste de simulação falha, o cluster não cria recursos e
retorna informações sobre o erro diretamente para você. Por exemplo, se você tenta
criar um cluster com o nome invalid%%%name
, o teste de simulação de um
nome de cluster válido falha, e a solicitação retorna 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 do cluster também pode falhar depois da aprovação dos testes de simulação. Isso pode
acontecer vários minutos depois que a criação do cluster começar, após o GKE na AWS
criar recursos no Google Cloud e na AWS. Nesse caso, vai haver um
recurso da AWS no projeto do Google Cloud com o estado definido
como ERROR
.
Para conferir detalhes sobre a falha, execute o seguinte comando:
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--format "value(state, errors)"
Substitua:
- CLUSTER_NAME pelo nome do cluster com o estado você está consultando
- GOOGLE_CLOUD_LOCATION pelo nome da região do Google Cloud que gerencia esse cluster da AWS
Outra opção para conferir detalhes sobre a falha de criação é descrever o
recurso Operation
associado à chamada de API de criação do cluster.
gcloud container aws operations describe OPERATION_ID
Substitua OPERATION_ID pelo ID da operação que criou o cluster. Se você não tiver o ID da operação de sua solicitação de criação do cluster, será possível buscá-lo com o seguinte comando:
gcloud container aws operations list \
--location GOOGLE_CLOUD_LOCATION
Use o carimbo de data/hora ou as informações relacionadas para identificar a operação de criação de cluster de interesse.
Por exemplo, se a criação do cluster falhou devido a um papel do IAM da AWS com permissão insuficiente, esse comando e os resultados dele serão semelhantes ao exemplo a seguir:gcloud container aws operations describe b6a3d042-8c30-4524-9a99-6ffcdc24b370 \
--location GOOGLE_CLOUD_LOCATION
A saída é semelhante a esta:
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
Falha na criação ou operação do cluster com um erro de autorização
Um erro que mostra uma falha de autorização geralmente indica
que um dos dois papéis do IAM da AWS especificados durante o comando de criação
do cluster foi criado incorretamente. Por exemplo, se o papel
da API não incluir a permissão elasticloadbalancing:ModifyTargetGroupAttributes
,
a criação do cluster vai falhar com uma mensagem de erro semelhante
a esta:
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 sucesso, um papel do
IAM especificado incorretamente pode causar falhas posteriormente durante a operação do cluster, como
ao usar comandos como kubectl logs
.
Para resolver esses erros de autorização, confirme se as políticas associadas aos dois papéis do IAM especificados durante a criação do cluster estão corretas. Especificamente, verifique se elas correspondem às descrições em Criar papéis do IAM da AWS. Em seguida, exclua e recrie o cluster. As descrições de papéis individuais estão disponíveis em Papel de API e em Papel do plano de controle.
A criação ou operação do cluster falha no estágio de verificação de integridade
Às vezes, a criação do cluster falha durante a verificação de integridade com um status de operação semelhante a este:
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
Essa falha pode ocorrer devido à ausência de papéis do IAM ou à especificação incorreta de papéis do IAM. É possível usar o AWS CloudTrail para mostrar problemas do IAM.
Exemplo:
Se o papel da API não incluir a permissão
kms:GenerateDataKeyWithoutPlaintext
para a chave KMS do volume principal do plano de controle, você 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 o papel do plano de controle não incluir a permissão
kms:CreateGrant
para a chave KMS do volume principal do plano de controle, você receberá 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 você não tiver concedido o papel vinculado ao serviço chamado
AWSServiceRoleForAutoScaling
com permissõeskms:CreateGrant
para usar a chave KMS do volume raiz do plano de controle, 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 você não tiver concedido o papel vinculado ao serviço chamado
AWSServiceRoleForAutoScaling
com permissõeskms:GenerateDataKeyWithoutPlaintext
para usar a chave KMS do volume raiz do plano de controle, 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",
Aguardando os nós participarem do cluster
Se você receber o seguinte erro ao criar um pool de nós, verifique se 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 esse 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 Pools de nós em blocos CIDR secundários da VPC.
Acessar o registro do sistema de uma instância
Se um plano de controle ou uma instância de pool de nós não for iniciada, será possível inspecionar o registro do sistema. Para inspecionar o registro do sistema, faça isto:
- Abra o console da instância do EC2 da AWS.
- Clique em Instâncias.
- Encontre a instância pelo nome. O GKE na AWS geralmente cria instâncias
chamadas
CLUSTER_NAME-cp
para nós do plano de controle ouCLUSTER_NAME-np
para nós do pool de nós. - Escolha Ações -> Monitorar e resolver problemas -> Acessar registro do sistema. O registro do sistema da instância é exibido.
Falhas de atualização do cluster
Quando você atualiza um cluster, assim como ao criar um novo cluster, o GKE na AWS primeiro executa um conjunto de testes de simulação para verificar a solicitação. Se a atualização do cluster falhar, pode ser porque um desses testes de simulação falhou ou porque uma etapa no processo de atualização do cluster não foi concluída.
Quando um teste de simulação falha, o cluster não atualiza recursos e
retorna informações sobre o erro diretamente para você. Por exemplo, se você tentar atualizar um cluster para usar um par de chaves SSH com o nome test_ec2_keypair
, o teste de simulação tentará buscar o par de chaves EC2 e falhará, e a solicitação retornará o erro a seguir:
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
A atualização do cluster também pode falhar depois da aprovação dos testes de simulação. Isso pode
acontecer vários minutos após o início da atualização do cluster e o recurso da AWS
no projeto do Google Cloud terá o estado definido como DEGRADED
.
Para ver detalhes sobre a falha e a operação relacionada, siga as etapas descritas em Falhas de criação do cluster.
A atualização de cluster falha ao atualizar as tags do plano de controle
A API de atualização da AWS agora é compatível com a atualização das tags do plano de controle. Para atualizar tags, você precisa de um cluster com o Kubernetes versão 1.24 ou mais recente. Também é preciso garantir que o papel do IAM da AWS tenha as permissões apropriadas, conforme listado na página Atualizar cluster para atualizar o plano de controle.
Um erro que mostra uma falha de autenticação geralmente indica que você não adicionou
alguma permissão do IAM. Por exemplo, se o papel da API não incluir a
permissão ec2:DeleteTags
, a atualização do cluster para tags poderá falhar com uma
mensagem de erro semelhante a esta (<encoded_auth_failure_message>
é
encoberto para fins de simplificação):
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, envie uma solicitação para a API decode-authorization-message do STS da AWS, conforme mostrado no seguinte comando:
aws sts decode-authorization-message --encoded-message
<encoded_auth_failure_message> --query DecodedMessage --output
text | jq '.' | less
O resultado será assim:
...
"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 foi possível executar a ação ec2:DeleteTags
no recurso de regra do grupo de segurança do EC2 do cluster da AWS. Atualize o papel da APIde acordo e reenvie a solicitação da API de atualização para atualizar as tags do plano de controle.
A seguir
- Se precisar de mais ajuda, entre em contato com o Cloud Customer Care.