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

6 minuto de leitura
0

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 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 da Amazon Web Services (AWS).

Observação: para usar o fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster, você precisa ter assinado um Plano de suporte empresarial ou comercial.

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

  • Seu Kubernetes Cluster Autoscaler não está funcionando.
  • Seu balanceador de carga interno não é criado em sub-redes privadas ou públicas.
  • Você não sabe se seus nós de processamento estão usando a imagem de máquina da Amazon (AMI) mais recente.
  • Você obtém erros de acesso negado em seus pods aws-node.
  • Você não conseguir extrair imagens do Amazon Elastic Container Registry (Amazon ECR).
  • Seus nós gerenciados não se estabilizam ou seus nós autogerenciados não ingressas em um cluster.

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

  • Verifica os grupos do Auto Scaling em busca das tags de sub-rede do Cluster AutoScaler para balanceadores de carga internos e voltados para a Internet e grupos de segurança de processamento.
    Importante: se você tiver mais de um grupo de segurança associado aos seus nós de processamento, deverá aplicar uma tag a um dos seus grupos de segurança. Defina a chave da tag como kubernetes.io/cluster/your-cluster-name. Defina o valor como de propriedade. Essa tag é opcional se você tiver somente um grupo de segurança associado aos seus nós de processamento.
  • Verifica os nós de processamento em busca da AMI mais recente.
  • Verifica as regras do grupo de segurança para ver as configurações mínimas e recomendadas. Por exemplo, o fluxo de trabalho verifica a entrada e a saída do grupo de segurança do cluster (ou seja, todos os grupos de segurança conectados ao cluster) e do grupo de segurança do nó de processamento.
  • Verificas as configurações da lista de controle de acesso à rede (ACL da rede).
  • Verifica as políticas do AWS Identity and Access Management (IAM) em nós de processamento, incluindo as políticas AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly.
  • Verifica se os nós de processamento podem se conectar à Internet verificando as tabelas de rotas das sub-redes em que estão localizados.

Resolução

Torne seus nós de processamento detectáveis

Para tornar seus nós de trabalho detectáveis, use o fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster e seu 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 Tags.

4.Escolha Adicionar/Editar tags.

5.Em Chave, digite kubernetes.io/cluster/your-cluster-name. Em Valor, insira 'de propriedade'/ 'compartilhado'.

6.Escolha Salvar.

O fluxo de trabalho de automação AWSPremiumSupport-TroubleshootEKSCluster é executado com a seguinte política. Essa política deve incluir permissões mínimas para acessar o cluster. O cluster só pode 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 Automação.

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

3.Escolha Executar automação.

4.Na caixa de pesquisa Documentos da automação, digite AWSPremiumSupport-TroubleshootEKSCluster e pressione Enter.

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

Observação: o documento é propriedade da 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.Na seção Executar documento de automação, escolha Execução simples.

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

Defina ClusterName como o nome do cluster. Esse cluster deve estar em execução na 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, faça o upload do relatório em seu próprio bucket do S3 (BucketName) para a automação do SSM.

10.Escolha Executar.

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

12.Quando o processo estiver concluído, escolha a guia Descrições e, em seguida, escolha Exibir saída para visualizar os resultados.

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

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

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está utilizando sua versão mais recente. Crie um perfil do IAM e um bucket do S3 que se apliquem à política se você quiser especificar AutomationAssumeRole e fazer upload do relatório em 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 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"]}' --region your_region