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
APIouAPI_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 nomeadaAutomation-K8sProxy-Role-<ExecutionId>na sua conta. Essa função inclui as políticas gerenciadasAWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRolee. -
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:DescribeIamInstanceProfileAssociationsec2:DescribeInstanceStatusec2:GetEbsEncryptionByDefaulteks:DescribeAddoneks:DescribeAddonVersionseks:DescribeClusteriam:GetInstanceProfileiam:GetOpenIDConnectProvideriam:GetRoleiam:ListOpenIDConnectProvidersiam:SimulatePrincipalPolicys3:GetBucketLocations3:GetBucketPolicyStatuss3:GetBucketPublicAccessBlocks3:GetBucketVersionings3:ListBuckets3:ListBucketVersionsssm:DescribeInstanceInformationssm:GetAutomationExecutionssm:GetDocumentssm:ListCommandInvocationsssm:ListCommandsssm:SendCommandssm:StartAutomationExecution
Instruções
Siga estas etapas para configurar a automação:
-
Crie uma função de automação de SSM
TroubleshootEbsCsiDriversForEks-SSM-Roleem 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" } ] } -
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.OptionalRestrictPutObjectsO bucket do Amazon S3 deve apontar para o bucket correto do Amazon S3 se você
S3BucketNameselecionar na execução do SSM.Essa permissão é opcional se você não especificar
S3BucketNameO 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" } } } ] } -
-
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_MAPouAPI. 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.
-
Adicione uma política de acesso:
Em Escopo do Access, selecione
Cluster.Em Nome da política, selecione
AmazonEKSAdminViewPolicy.
Escolha Add policy.
Se você não estiver usando entradas de acesso para gerenciar as permissões da API Kubernetes,
aws-authConfigMap 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}/podsGET
/api/v1/namespaces/{namespace}/pods/{name}/logGET
/api/v1/events
-
Execute a automação AWSSupport-TroubleshootEbsCsiDriversForEks (console)
-
Selecione Execute automation (Executar automação).
-
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::ArnExample:
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:
StringPadrão:
ebs-csi-controller
-
EbsCsiControllerNamespace (Opcional):
Descrição: (Opcional) O namespace Kubernetes para o pod controlador CSI do Amazon EBS.
Tipo:
StringPadrã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.
-
-
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.