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

Data da última atualização: 14/7/2022

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

Breve descrição

Você pode usar o fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster para solucionar erros comuns em 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 Amazon Web Services (AWS).

Observação: para usar o fluxo de trabalho de automação AWSPremiumSupport-TroubleshooteksCluster, é necessário estar inscrito em um plano Support Enterprise ou Business.

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

  • O Kubernetes Cluster Autoscaler 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 imagem de máquina da Amazon (AMI) mais recente.
  • Você obtém erros de acesso negado nos pods aws-node.
  • Não é possível 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 estas verificações:

  • Confere os grupos do Auto Scaling para verificar as tags 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 tag a um dos grupos de segurança. Defina a chave da tag como kubernetes.io/cluster/your-cluster-name. Defina o valor como owned (próprio). Essa tag será 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.
  • Confere as configurações personalizadas da lista de controle de acesso à rede (ACL da rede).
  • Confere as políticas do AWS Identity and Access Management (IAM) em nós de processamento, inclusive as políticas AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly.
  • Confere 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.    Ouvrez la console Amazon EC2.

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

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

4.    Escolha Add/Edit Tags (Adicionar/editar tags).

5.    Em Key (Chave), insira kubernetes.io/cluster/your-cluster-name. Para Value (Valor), insira “owned”/”shared” (próprio/compartilhado).

6.    Escolha Save (Salvar).

O fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster é executado com a política a seguir. A política deve incluir permissões mínimas para acessar o cluster. O cluster só poderá ser acessado por AutomationAssumeRole.

{
  "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": [
        "<BUCKET_ARN>",
        "<BUCKET_ARN>/AWSPremiumSupport-TroubleshootEKSCluster-*"
      ]
    }
  ]
}

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 Automation (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 Automation (Automação).

3.    Escolha Execute automation (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 Document description (Descrição do documento), verifique se a Document version (Versão do documento) está definida como Default version at runtime (Versão padrão no tempo de execução).

7.    Escolha Next (Seguinte).

8.    Na seção Execute automation document (Executar documento de automação), escolha Simple execution (Execução simples).

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

Defina ClusterName como o nome do cluster. O cluster deve estar em execução em sua conta da AWS.
Defina AutomationAssumeRole como o perfil 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.

Observação: se você quiser especificar o AutomationAssumeRole, crie um perfil do IAM e um bucket do S3 que se apliquem à política. Em seguida, carregue o relatório em seu próprio bucket do S3 (BucketName) para a automação do SSM.

10.    Escolha Execute (Executar).

11.    Para monitorar o andamento, escolha a Automation (Automação) em execução e escolha a guia Etapas.

12.    Quando o processo for concluído, escolha a guia Descriptions (Descrições) e escolha View output (Visualizar saída) para visualizar os resultados.

Observação: os resultados aparecem como um relatório que lista todos os erros e avisos do cluster.

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

Observação: se receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI. Crie um perfil do IAM e um bucket do S3 que se apliquem à política se quiser especificar AutomationAssumeRole e carregar o relatório para seu próprio bucket do S3 (S3BucketName) para executar o fluxo de trabalho de automação.

Se você quiser o relatório em um bucket do S3, execute este 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 este 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?