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-TroubleshootEKSALBControllerIssues
Descrição
O runbook de AWSSupport-TroubleshootEKSALBControllerIssues automação ajuda a diagnosticar problemas comuns que impedem o Load AWS Balancer Controller de provisionar e gerenciar adequadamente o Application Load Balancer (ALB) e o Network Load Balancer (NLB) para entradas e serviços do Kubernetes.
Esse runbook executa a end-to-end validação de componentes essenciais, incluindo configuração do provedor de identidade OIDC, configuração do IRSA, pré-requisitos de rede, configuração e cotas de recursos. ingress/service Ele também captura registros do controlador e configurações de recursos relevantes do Kubernetes para ajudar a identificar configurações incorretas ou problemas operacionais.
Importante
Esse runbook de automação foi projetado para clusters do Amazon EKS usando grupos de nós do Amazon Elastic Compute Cloud (Amazon EC2) e atualmente não oferece suporte a clusters em execução. AWS Fargate
Como funciona?
O runbook AWSSupport-TroubleshootEKSALBControllerIssues executa as seguintes etapas de alto nível:
-
Valida o status do cluster Amazon EKS, a configuração da entrada de acesso e a configuração do provedor OIDC.
-
Cria um proxy Lambda temporário para comunicação com a API Kubernetes.
-
Verifica a implantação do AWS Load Balancer Controller e a configuração da conta de serviço.
-
Verifica a identidade do pod, o webhook e a injeção de função do IAM.
-
Valida a configuração e a marcação da sub-rede para o provisionamento do Application Load Balancer e do Network Load Balancer.
-
Verifica as cotas das contas do Application Load Balancer e do Network Load Balancer em relação ao uso atual.
-
Valida as anotações de entrada e de recursos de serviço.
-
Verifica a marcação do grupo de segurança do nó de trabalho quanto à integração do balanceador de carga.
-
Coleta os registros do pod do controlador para diagnóstico.
-
Limpa os recursos de autenticação temporária.
-
Gera relatório de diagnóstico com descobertas e etapas de remediação.
nota
-
O cluster Amazon EKS deve ter uma entrada de acesso configurada para a entidade IAM que executa essa automação. O modo de autenticação do cluster deve ser definido como
APIouAPI_AND_CONFIG_MAP. Sem a configuração adequada da entrada de acesso, a automação será encerrada durante a validação inicial. -
O
LambdaRoleArnparâmetro é obrigatório e deve ter as políticas AWS gerenciadasAWSLambdaBasicExecutionRoleeAWSLambdaVPCAccessExecutionRoleanexadas para permitir que a função proxy se comunique com a API Kubernetes. -
O AWS Load Balancer Controller deve ser uma versão
v2.1.1ou posterior. -
A automação inclui uma etapa de limpeza que remove os recursos temporários da infraestrutura de autenticação. Essa etapa de limpeza é executada mesmo quando as etapas anteriores falham, garantindo que nenhum recurso órfão permaneça na 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.
cloudformation:CreateStackcloudformation:DeleteStackcloudformation:DescribeStackscloudformation:UpdateStackec2:CreateNetworkInterfaceec2:DeleteNetworkInterfaceec2:DescribeInstancesec2:DescribeNetworkInterfacesec2:DescribeRouteTablesec2:DescribeSecurityGroupsec2:DescribeSubnetsec2:DescribeVpcseks:DescribeClustereks:ListAssociatedAccessPolicieselasticloadbalancing:DescribeAccountLimitselasticloadbalancing:DescribeLoadBalancersiam:GetRoleiam:ListOpenIDConnectProvidersiam:PassRolelambda:CreateFunctionlambda:DeleteFunctionlambda:GetFunctionlambda:InvokeFunctionlambda:ListTagslambda:TagResourcelambda:UntagResourcelambda:UpdateFunctionCodelogs:CreateLogGrouplogs:CreateLogStreamlogs:DescribeLogGroupslogs:DescribeLogStreamslogs:ListTagsForResourcelogs:PutLogEventslogs:PutRetentionPolicylogs:TagResourcelogs:UntagResourcessm:DescribeAutomationExecutionsssm:GetAutomationExecutionssm:StartAutomationExecutiontag:GetResourcestag:TagResources
Instruções
Siga estas etapas para configurar e executar a automação:
nota
Antes de executar a automação, siga estas etapas para configurar as funções necessárias do IAM: uma para que o Systems Manager Automation execute o runbook e outra para o Lambda se comunicar com a API Kubernetes:
-
Crie uma função de automação de SSM
TroubleshootEKSALBController-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 seguinte política do IAM para conceder as permissões necessárias:
{ "Version": "2012-10-17", "Statement": [{ "Sid": "TroubleshootEKSALBControllerIssuesActions", "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListAssociatedAccessPolicies", "iam:GetRole", "iam:ListOpenIDConnectProviders", "ssm:StartAutomationExecution", "ssm:GetAutomationExecution", "ssm:DescribeAutomationExecutions", "ec2:DescribeSubnets", "ec2:DescribeRouteTables", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeAccountLimits", "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups" ], "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:GetRole", "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": "*", "Condition": { "StringLikeIfExists": { "iam:PassedToService": [ "lambda.amazonaws.com", "ssm.amazonaws.com" ] } } }] } -
Configure a entrada de acesso para seu cluster Amazon EKS. Esse é um requisito obrigatório para a automação. Para ver as etapas para configurar o modo de autenticação para entradas de acesso, consulte Configurando entradas de acesso.
No console do Amazon EKS, navegue até seu cluster e siga estas etapas:
Na seção Acesso, verifique se sua configuração de autenticação está definida como
APIouAPI_AND_CONFIG_MAP.-
Escolha Criar entrada de acesso e configure:
Para o ARN principal do IAM, selecione a função do IAM que você criou ()
TroubleshootEKSALBController-SSM-Role.Em Tipo, selecione
Standard.
-
Adicione uma política de acesso:
Em Nome da política, selecione
AmazonEKSAdminViewPolicy.Em Escopo do Access, selecione
Cluster.
Escolha Add policy.
Verifique os detalhes e escolha Criar.
-
Crie uma função do IAM para a função Lambda (referenciada
LambdaRoleArnnos parâmetros de entrada):-
Crie uma nova função do IAM com a seguinte política de confiança:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Anexe as seguintes políticas AWS gerenciadas a essa função:
AWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRole
-
Observe o ARN dessa função, pois você precisará dele para o parâmetro
LambdaRoleArnde entrada.
-
-
Navegue até AWSSupport-TroubleshootEKSALBControllerIssues
o console do AWS Systems Manager. -
Escolha Execute automation.
-
Você pode usar os seguintes parâmetros de entrada:
-
AutomationAssumeRole (Opcional):
Tipo AWS::IAM::Role: :Arn
Descrição: (Opcional) O Amazon Resource Name (ARN) da função AWS Identity and Access Management (IAM) que permite que o Systems Manager Automation execute ações em seu nome. Se nenhum perfil for especificado, o Systems Manager Automation usa as permissões do usuário que inicia este runbook.
Padrão permitido: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :função/? [A-zA-Z_0-9+=, .@\ -_/] +$
-
EksClusterName (Obrigatório):
Tipo: string
Descrição: (Obrigatório) Nome do cluster Amazon Elastic Kubernetes Service (Amazon EKS).
Padrão permitido: ^ [0-9a-zA-z] [a-zA-z0-9-_] {0,99} $
-
ALBControllerDeploymentName (Opcional):
Tipo: string
Descrição: (Opcional) O nome da implantação do AWS Load Balancer Controller em seu cluster Amazon EKS. Normalmente, é 'aws-load-balancer-controller', a menos que você o tenha personalizado durante a instalação.
Padrão permitido: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $
Padrão: aws-load-balancer-controller
-
ALBControllerNamespace (opcional):
Tipo: string
Descrição: (Opcional) O namespace Kubernetes em que o Load Balancer AWS Controller é implantado. Por padrão, isso é 'kube-system', mas pode ser diferente se você tiver instalado o controlador em um namespace personalizado.
Padrão permitido: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $
Padrão: kube-system
-
ServiceAccountName (Opcional):
Tipo: string
Descrição: (Opcional) O nome da conta de serviço do Kubernetes associada ao Load Balancer Controller AWS . Normalmente, isso é 'aws-load-balancer-controller', a menos que seja personalizado durante a instalação.
Padrão permitido: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $
Padrão: aws-load-balancer-controller
-
ServiceAccountNamespace (Opcional):
Tipo: string
Descrição: (Opcional) O namespace Kubernetes em que a conta de serviço do Load Balancer AWS Controller está localizada. Normalmente, isso é 'kube-system', mas pode ser diferente se você tiver usado um namespace personalizado.
Padrão permitido: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $
Padrão: kube-system
-
IngressName (Opcional):
Tipo: string
Descrição: (Opcional) Nome do recurso do Ingress a ser validado (Application Load Balancer). Se não for especificada, a validação do Ingress será ignorada.
Padrão permitido: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $
Padrão: “” (string vazia)
-
IngressNamespace (Opcional):
Tipo: string
Descrição: (Opcional) Namespace do recurso Ingress. Necessário, se
IngressNamefor especificado.Padrão permitido: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $
Padrão: “” (string vazia)
-
ServiceName (Opcional):
Tipo: string
Descrição: (Opcional) Nome de um recurso de serviço específico para validar as anotações do Network Load Balancer (Network Load Balancer). Se não for especificado, a validação dos recursos do serviço será ignorada.
Padrão permitido: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $
Padrão: “” (string vazia)
-
ServiceNamespace (Opcional):
Tipo: string
Descrição: (Opcional) Namespace do recurso de serviço. Necessário, se
ServiceNamefor especificado.Padrão permitido: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $
Padrão: “” (string vazia)
-
LambdaRoleArn (Obrigatório):
Tipo AWS::IAM::Role: :Arn
Descrição: (Obrigatório) O ARN da função do IAM que permite que a função ( AWS Lambda Lambda) acesse os serviços e recursos necessários AWS . Associe as políticas AWS gerenciadas:
AWSLambdaBasicExecutionRoleeAWSLambdaVPCAccessExecutionRoleà sua função IAM de execução da função lambda.Padrão permitido: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :função/? [A-zA-Z_0-9+=, .@\ -_/] +$
-
-
Clique em Executar.
-
A automação é iniciada.
-
O bucket realiza as seguintes etapas:
-
ValidateAccessEntryAndOIDCProvider:
Valida a configuração do IAM do cluster Amazon EKS verificando as permissões de entrada de acesso e a configuração do provedor OIDC.
-
Configurar K8: sAuthenticationClient
Execute o documento SAW AWSSupport-SetupK 8 sApiProxy forEKS para configurar uma função lambda para executar chamadas de API do Amazon EKS no cluster.
-
Verifique ALBController eIRSASetup:
Verifica se o controlador de Service Account & Application Load Balancer fornecido existe em seus respectivos namespaces. Também verifica a política de Anotação e Confiança da Função da Conta de Serviço do controlador do Application Load Balancer.
-
VerifyPodIdentityWebhookAndEnv:
Verifica se pod-identity-webhook está em execução. Também verifica se o IRSA é injetado nas variáveis ENV do pod.
-
ValidateSubnetRequirements:
Verifique pelo menos duas sub-redes em duas AZs com 8 IPs disponíveis. Existe uma marcação de sub-rede adequada para balanceadores de carga. public/private
-
CheckLoadBalancerLimitsAndUsage:
Compare o limite da conta com o número de Application Load Balancer e Network Load Balancer.
-
CheckIngressOrServiceAnnotations:
Verifica as anotações e especificações corretas nos recursos do Ingress e do Service para garantir que estejam configurados adequadamente para o uso do Application Load Balancer e do Network Load Balancer.
-
CheckWorkerNodeSecurityGroupTags:
Verifique se exatamente um grupo de segurança anexado aos nós de trabalho tem a tag de cluster necessária.
-
ALBControllerRegistros de captura:
Recupera os registros de diagnóstico mais recentes dos pods do AWS Load Balancer Controller em execução no cluster Amazon EKS.
-
Limpeza K8: sAuthenticationClient
Executa o documento SAW 'AWSSupport-SetupK8 sApiProxy forEks' usando a operação 'Cleanup' para limpar os recursos criados como parte da automação.
-
GenerateReport:
Gera o relatório de automação.
-
-
Após a conclusão da execução, revise a seção Saídas para obter os resultados detalhados da execução:
-
Relatório:
Fornece um resumo abrangente de todas as verificações realizadas, incluindo o status do cluster Amazon EKS, a configuração do Application Load Balancer Controller, a configuração do IRSA, os requisitos de sub-rede, os limites do balanceador de carga, as ingress/service anotações, as tags do grupo de segurança do nó de trabalho e os registros do Application Load Balancer Controller. Também inclui todos os problemas identificados e as etapas de correção recomendadas.
-
Referências
Automação do Systems Manager
Documentação relacionada ao AWS Load Balancer Controller