Como posso solucionar erros no ambiente do Amazon EKS depois de criar um cluster?

Data da última atualização: 24/08/2021

Eu recebo erros no meu ambiente do Amazon Elastic Kubernetes Service (Amazon EKS) depois de criar um cluster.

Descrição breve

Você pode usar o fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster para solucionar erros comuns com seu ambiente do Amazon EKS. O fluxo de trabalho fornece um relatório detalhado que lista erros, avisos e links para as melhores práticas recomendadas pela AWS.

Você pode usar o fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster se tiver os seguintes problemas:

  • O autoescalador de cluster do Kubernetes não está funcionando.
  • O balanceador de carga interno não é criado em sub-redes privadas ou públicas.
  • Você não sabe se os nós de processamento estão usando a Amazon Machine Image (AMI) mais recente.
  • Você obtém erros de acesso negado nos pods aws-node.
  • Você não pode extrair imagens do Amazon Elastic Container Registry (Amazon ECR).
  • Seus nós gerenciados não se estabilizam ou os nós autogerenciados não ingressam em um cluster.

O fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster executa as seguintes verificações:

  • Conferi os grupos do Auto Scaling para as etiquetas de sub-rede do Cluster AutoScaler para balanceadores de carga internos e voltados para a Internet e o operador de grupos de segurança.
    Importante: se você tiver mais de um grupo de segurança associado aos nós de processamento, deverá aplicar uma etiqueta a um dos security groups. Defina a chave da etiqueta como kubernetes.io/cluster/your-cluster-name. Defina o valor como possuído. Essa etiqueta é opcional se você tiver apenas um grupo de segurança associado aos nós de processamento.
  • Conferi os nós de processamento quanto à AMI mais recente.
  • Conferi as regras do grupo de segurança para configurações mínimas e recomendadas. Por exemplo, o fluxo de trabalho conferi a entrada e a saída do grupo de segurança do cluster (ou seja, todos os grupos de segurança anexados ao cluster) e do grupo de segurança do trabalhador.
  • Conferi as configurações personalizadas da lista de controle de acesso à rede (ACL da rede).
  • Conferi as políticas do AWS Identity and Access Management (IAM) em nós de processamento, incluindo as políticas AmazonEKSWorkerNodePolicy eAmazonEC2ContainerRegistryReadOnly.
  • Conferi se os nós de processamento podem se conectar à Internet verificando as tabelas de rotas das sub-redes em que estão localizadas.

Resolução

Torne seus nós de processamento detectáveis

Para tornar os nós de processamento detectáveis, use o fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster e o cluster do Amazon EKS:

1.    Abra o console do Amazon EC2.

2.    No painel de navegação, escolha Instâncias.

3.    Selecione as instâncias do Amazon Elastic Compute Cloud (Amazon EC2) para seus nós de processamento e, em seguida, escolha a guia Etiquetas.

4.    Escolha Adicionar/Editar etiqueta.

5.    Em Chave, insirakubernetes.io/cluster/your-cluster-name. Para Valor, insira“possuído” / ”compartilhado”.

6.    Escolha Salvar.

O fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster é executado com a seguinte política. A política deve incluir permissões mínimas para acessar o cluster. O cluster pode ser acessado por AutomationAssumeRole ou pelo usuário que executa a automação.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AWSPremiumSupportTroubleshootEKSCluster",
            "Effect": "Allow",
            "Action": [
                "eks:ListNodegroups",
                "eks:DescribeCluster",
                "eks:DescribeNodegroup",
                "iam:GetInstanceProfile",
                "iam:ListInstanceProfiles",
                "iam:ListAttachedRolePolicies",
                "autoscaling:DescribeAutoScalingGroups",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeInstances",
                "ec2:DescribeNatGateways",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeRouteTables"
            ],
            "Resource": "*"
        },
        {
            "Sid": "GetPublicSSMParams",
            "Effect": "Allow",
            "Action": "ssm:GetParameter",
            "Resource": [
                "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2/recommended/image_id",
                "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-*/image_id",
                "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-EKS_Optimized-*/image_id",
                "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-1909-English-Core-EKS_Optimized-*/image_id",
                "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2-gpu/recommended/image_id"
            ]
        },
        {
            "Sid": "UploadObjectToS3",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketAcl",
                "s3:PutObject"
            ],
            "Resource": "YOUR_BUCKET_NAME>"
        }
    ]
}

Execute o fluxo de trabalho de automação no console do AWS Systems Manager

1.    Abra o console do Systems Manager.

2.    No painel de navegação, escolha Automação.

Observação: se a página inicial do Systems Manager abrir primeiro, escolha o ícone de menu para abrir o painel de navegação e escolha Automação.

3.    Escolha Executar automação.

4.    Na caixa de pesquisa de documentos de automação, insira AWSPremiumSupport-TroubleshootEKSCluster e pressione Enter.

5.    Nos resultados da pesquisa, selecione AWSPremiumSupport-TroubleshootEKSCluster.

Observação: o proprietário do documento é a Amazon.

6.    Na guia Descrição do documento, verifique se a Versão do documento está definida como Versão padrão no tempo de execução.

7.    Escolha Avançar.

8.    Para Executar documento de automação, escolha Execução simples.

9.    Na seção Parâmetros de entrada, defina os seguintes parâmetros:

Defina ClusterName como o nome do cluster. O cluster deve estar em execução na sua conta da AWS.
Defina AutomationAssumeRole como a função do IAM que você deseja usar para o fluxo de trabalho.
(Opcional) se necessário, defina BucketName como o bucket do Amazon Simple Storage Service (Amazon S3) no qual você deseja carregar o relatório.

10.    Escolha Executar.

11.    Para monitorar o progresso da execução, escolha a Automação em execução e, em seguida, escolha a guia Etapas.

12.    Quando a execução for concluída, escolha a guia Descrições e escolha Visualizar saída para visualizar os resultados.

Observação: os resultados são na forma de um relatório detalhado que lista todos os erros e avisos do cluster.

Execute o fluxo de trabalho de automação da AWS CLI

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique e confirme estar usando a versão mais recente da AWS CLI.

Se você quiser o relatório em um bucket do S3, execute o seguinte comando:

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"],"S3BucketName":["your_bucket"]}' --region your_region

Se você não quiser carregar o relatório para um bucket do S3, execute o seguinte comando:

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"]}' --region your_region

Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?