AWSSupport-TroubleshootEbsCsiDriversForEks - AWS Systems Manager Referência do runbook de automação

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWSSupport-TroubleshootEbsCsiDriversForEks

Descrição

O AWSSupport-TroubleshootEbsCsiDriversForEks runbook ajuda a solucionar problemas com montagens de volume do Amazon Elastic Block Store no Amazon Elastic Kubernetes Service (Amazon EKS) e problemas de driver do Amazon EBS Container Storage Interface (CSI)

Importante

Atualmente, o driver CSI do Amazon EBS em execução não AWS Fargate é suportado.

Como funciona?

O runbook AWSSupport-TroubleshootEbsCsiDriversForEks executa as seguintes etapas de alto nível:

  • Verifica se o cluster de destino do Amazon EKS existe e está no estado ativo.

  • Implanta os recursos de autenticação necessários para fazer chamadas de API do Kubernetes com base no fato de o complemento ser gerenciado ou autogerenciado pelo Amazon EKS.

  • Executa verificações e diagnósticos de saúde do controlador CSI do Amazon EBS.

  • Executa verificações de permissões do IAM nas funções dos nós e nas funções da conta de serviço.

  • Diagnostica problemas persistentes de criação de volume para o pod de aplicativo especificado.

  • Verifica o node-to-pod agendamento e examina os eventos do pod.

  • Coleta registros relevantes do Kubernetes e do aplicativo, enviando-os para o bucket especificado do Amazon S3.

  • Executa verificações de integridade dos nós e verifica a conectividade com os EC2 endpoints da Amazon.

  • Analisa os anexos persistentes do dispositivo de bloqueio de volume e o status de montagem.

  • Limpa a infraestrutura de autenticação criada durante a solução de problemas.

  • Gera um relatório abrangente de solução de problemas combinando todos os resultados do diagnóstico.

nota
  • O modo de autenticação do cluster Amazon EKS deve ser definido como API ouAPI_AND_CONFIG_MAP. Recomendamos usar a entrada Amazon EKS Access. O runbook exige permissões de controle de acesso baseado em funções (RBAC) do Kubernetes para realizar as chamadas de API necessárias.

  • Se você não especificar uma função do IAM para a função Lambda (LambdaRoleArnparâmetro), a automação cria uma função nomeada Automation-K8sProxy-Role-<ExecutionId> na sua conta. Essa função inclui as políticas gerenciadas AWSLambdaBasicExecutionRole AWSLambdaVPCAccessExecutionRole e.

  • Algumas etapas de diagnóstico exigem que os nós de trabalho do Amazon EKS sejam instâncias gerenciadas pelo Systems Manager. Se os nós não forem instâncias gerenciadas pelo Systems Manager, as etapas que exigem acesso ao Systems Manager serão ignoradas, mas outras verificações continuarão.

  • A automação inclui uma etapa de limpeza que remove os recursos da infraestrutura de autenticação. Essa etapa de limpeza é executada mesmo quando as etapas anteriores falham, o que ajuda a evitar recursos órfãos em sua conta. AWS

Executar esta automação (console)

Tipo de documento

Automação

Proprietário

Amazon

Plataformas

/

Permissões obrigatórias do IAM

O parâmetro AutomationAssumeRole requer as seguintes ações para usar o runbook com êxito.

  • ec2:DescribeIamInstanceProfileAssociations

  • ec2:DescribeInstanceStatus

  • ec2:GetEbsEncryptionByDefault

  • eks:DescribeAddon

  • eks:DescribeAddonVersions

  • eks:DescribeCluster

  • iam:GetInstanceProfile

  • iam:GetOpenIDConnectProvider

  • iam:GetRole

  • iam:ListOpenIDConnectProviders

  • iam:SimulatePrincipalPolicy

  • s3:GetBucketLocation

  • s3:GetBucketPolicyStatus

  • s3:GetBucketPublicAccessBlock

  • s3:GetBucketVersioning

  • s3:ListBucket

  • s3:ListBucketVersions

  • ssm:DescribeInstanceInformation

  • ssm:GetAutomationExecution

  • ssm:GetDocument

  • ssm:ListCommandInvocations

  • ssm:ListCommands

  • ssm:SendCommand

  • ssm:StartAutomationExecution

Instruções

Siga estas etapas para configurar a automação:

  1. Crie uma função de automação de SSM TroubleshootEbsCsiDriversForEks-SSM-Role em sua conta. Verifique se a relação de confiança contém a seguinte política.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Anexe a política abaixo à função do IAM para conceder as permissões necessárias para realizar as ações especificadas nos recursos especificados.

    • Se você espera fazer o upload de registros de execução e recursos para o bucket do Amazon S3 na AWS mesma região, arn:{partition}:s3:::BUCKET_NAME/* substitua os seus em. OptionalRestrictPutObjects

      • O bucket do Amazon S3 deve apontar para o bucket correto do Amazon S3 se você S3BucketName selecionar na execução do SSM.

      • Essa permissão é opcional se você não especificar S3BucketName

      • O bucket do Amazon S3 deve ser privado e estar na mesma AWS região em que você executa a automação do SSM.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "OptionalRestrictPutObjects", "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:{partition}:s3:::BUCKET_NAME/*"] }, { "Effect": "Allow", "Action": [ "ec2:DescribeIamInstanceProfileAssociations", "ec2:DescribeInstanceStatus", "ec2:GetEbsEncryptionByDefault", "eks:DescribeAddon", "eks:DescribeAddonVersions", "eks:DescribeCluster", "iam:GetInstanceProfile", "iam:GetOpenIDConnectProvider", "iam:GetRole", "iam:ListOpenIDConnectProviders", "iam:SimulatePrincipalPolicy", "s3:GetBucketLocation", "s3:GetBucketPolicyStatus", "s3:GetBucketPublicAccessBlock", "s3:GetBucketVersioning", "s3:ListBucket", "s3:ListBucketVersions", "ssm:DescribeInstanceInformation", "ssm:GetAutomationExecution", "ssm:GetDocument", "ssm:ListCommandInvocations", "ssm:ListCommands", "ssm:SendCommand", "ssm:StartAutomationExecution" ], "Resource": "*" }, { "Sid": "SetupK8sApiProxyForEKSActions", "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "eks:DescribeCluster", "iam:CreateRole", "iam:DeleteRole", "iam:GetRole", "iam:TagRole", "iam:UntagRole", "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:ListTags", "lambda:TagResource", "lambda:UntagResource", "lambda:UpdateFunctionCode", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:ListTagsForResource", "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:TagResource", "logs:UntagResource", "ssm:DescribeAutomationExecutions", "tag:GetResources", "tag:TagResources" ], "Resource": "*" }, { "Sid": "PassRoleToAutomation", "Effect": "Allow", "Action": "iam:PassRole", "Resource": [ "arn:*:iam::*:role/TroubleshootEbsCsiDriversForEks-SSM-Role", "arn:*:iam::*:role/Automation-K8sProxy-Role-*" ], "Condition": { "StringLikeIfExists": { "iam:PassedToService": [ "lambda.amazonaws.com", "ssm.amazonaws.com" ] } } }, { "Sid": "AttachRolePolicy", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:DetachRolePolicy" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "iam:ResourceTag/AWSSupport-SetupK8sApiProxyForEKS": "true" } } } ] }
  3. Conceda as permissões necessárias para o cluster RBAC (Role-Based Access Control) do Amazon EKS. A abordagem recomendada é criar uma entrada de acesso no seu cluster Amazon EKS.

    No console do Amazon EKS, navegue até seu cluster. Para entradas de acesso do Amazon EKS, verifique se sua configuração de acesso está definida como API_AND_CONFIG_MAP ouAPI. Para ver as etapas para configurar o modo de autenticação para entradas de acesso, consulte Configurando entradas de acesso.

    Selecione Criar entrada de acesso.

    • Para o ARN principal do IAM, selecione a função do IAM que você criou para a automação do SSM na etapa anterior.

    • Em Tipo, selecione Standard.

  4. Adicione uma política de acesso:

    • Em Escopo do Access, selecioneCluster.

    • Em Nome da política, selecioneAmazonEKSAdminViewPolicy.

    Escolha Add policy.

    Se você não estiver usando entradas de acesso para gerenciar as permissões da API Kubernetes, aws-auth ConfigMap atualize e crie uma associação de função entre seu usuário ou função do IAM. Certifique-se de que sua entidade do IAM tenha as seguintes permissões de API Kubernetes somente para leitura:

    • GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}

    • GET /apis/apps/v1/namespaces/{namespace}/replicasets/{name}

    • GET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}

    • GET /api/v1/nodes/{name}

    • GET /api/v1/namespaces/{namespace}/serviceaccounts/{name}

    • GET /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}

    • GET /api/v1/persistentvolumes/{name}

    • GET /apis/storage.k8s.io/v1/storageclasses/{name}

    • GET /api/v1/namespaces/{namespace}/pods/{name}

    • GET /api/v1/namespaces/{namespace}/pods

    • GET /api/v1/namespaces/{namespace}/pods/{name}/log

    • GET /api/v1/events

  5. Execute a automação AWSSupport-TroubleshootEbsCsiDriversForEks (console)

  6. Selecione Execute automation (Executar automação).

  7. Para os parâmetros de entrada, insira o seguinte:

    • AutomationAssumeRole (Opcional):

      • Descrição: (Opcional) O Amazon Resource Name (ARN) da função AWS Identity and Access Management (IAM) que permite que o SSM Automation execute as ações em seu nome. A função precisa ser adicionada à sua entrada de acesso ao cluster Amazon EKS ou à permissão RBAC para permitir chamadas de API do Kubernetes.

      • Tipo: AWS::IAM::Role::Arn

      • Example: TroubleshootEbsCsiDriversForEks-SSM-Role

    • EksClusterName:

      • Descrição: O nome do cluster de destino do Amazon Elastic Kubernetes Service (Amazon EKS).

      • Tipo: String

    • ApplicationPodName:

      • Descrição: O nome do pod do aplicativo Kubernetes com problemas com o driver CSI do Amazon EBS.

      • Tipo: String

    • ApplicationNamespace:

      • Descrição: O namespace Kubernetes para o pod do aplicativo com problemas com o driver CSI do Amazon EBS.

      • Tipo: String

    • EbsCsiControllerDeploymentName (Opcional):

      • Descrição: (Opcional) O nome da implantação do pod controlador CSI do Amazon EBS.

      • Tipo: String

      • Padrão: ebs-csi-controller

    • EbsCsiControllerNamespace (Opcional):

      • Descrição: (Opcional) O namespace Kubernetes para o pod controlador CSI do Amazon EBS.

      • Tipo: String

      • Padrão: kube-system

    • S3 BucketName (opcional):

      • Descrição: (Opcional) O nome do bucket de destino do Amazon S3 para o qual os registros de solução de problemas serão carregados.

      • Tipo: AWS::S3::Bucket::Name

    • LambdaRoleArn (Opcional):

      • Descrição: (Opcional) O ARN da função do IAM que permite que a AWS Lambda função acesse os AWS serviços e recursos necessários.

      • Tipo: AWS::IAM::Role::Arn

    Selecione Executar.

  8. Depois de concluído, revise a seção Saídas para obter os resultados detalhados da execução.

Referências

Automação do Systems Manager

Para obter mais informações sobre o Amazon EBS CSI Driver, consulte Amazon EBS CSI Driver.