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 (
LambdaRoleArn
parâmetro), a automação cria uma função nomeadaAutomation-K8sProxy-Role-<ExecutionId>
na sua conta. Essa função inclui as políticas gerenciadasAWSLambdaBasicExecutionRole
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:
-
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" } ] }
-
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" } } } ] }
-
-
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
.
-
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-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
-
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::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.
-
-
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.