Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AWSSupport-TroubleshootEKSALBControllerIssues
Descrizione
Il runbook di AWSSupport-TroubleshootEKSALBControllerIssues automazione aiuta a diagnosticare i problemi comuni che impediscono al AWS Load Balancer Controller di effettuare correttamente il provisioning e la gestione di Application Load Balancer (ALB) e Network Load Balancer (NLB) per gli ingressi e i servizi Kubernetes.
Questo runbook esegue la convalida end-to-end dei componenti essenziali, tra cui la configurazione del provider di identità OIDC, la configurazione IRSA, i prerequisiti di rete, la configurazione e le quote di risorse. ingress/service Inoltre, acquisisce i log dei controller e le configurazioni pertinenti delle risorse Kubernetes per aiutare a identificare configurazioni errate o problemi operativi.
Importante
Questo runbook di automazione è progettato per i cluster Amazon EKS che utilizzano gruppi di nodi Amazon Elastic Compute Cloud (Amazon EC2) e attualmente non supporta i cluster in esecuzione su. AWS Fargate
Come funziona?
Il runbook AWSSupport-TroubleshootEKSALBControllerIssues esegue i seguenti passaggi di alto livello:
-
Convalida lo stato del cluster Amazon EKS, la configurazione degli accessi e la configurazione del provider OIDC.
-
Crea un proxy Lambda temporaneo per la comunicazione tramite API Kubernetes.
-
Verifica la distribuzione AWS del Load Balancer Controller e la configurazione dell'account di servizio.
-
Verifica l'identità del pod, il webhook e l'inserimento dei ruoli IAM.
-
Convalida la configurazione e l'etichettatura della sottorete per il provisioning di Application Load Balancer e Network Load Balancer.
-
Verifica le quote degli account Application Load Balancer e Network Load Balancer rispetto all'utilizzo corrente.
-
Convalida le annotazioni sulle risorse di ingresso e di servizio.
-
Verifica la codifica dei gruppi di sicurezza dei nodi di lavoro per l'integrazione del sistema di bilanciamento del carico.
-
Raccoglie i log dei pod del controller per la diagnostica.
-
Pulisce le risorse di autenticazione temporanee.
-
Genera un rapporto diagnostico con i risultati e le fasi di correzione.
Nota
-
Il cluster Amazon EKS deve avere una voce di accesso configurata per l'entità IAM che esegue questa automazione. La modalità di autenticazione del cluster deve essere impostata su
APIoAPI_AND_CONFIG_MAP. Senza una corretta configurazione dell'accesso, l'automazione verrà interrotta durante la convalida iniziale. -
Il
LambdaRoleArnparametro è obbligatorio e deve avere le politiche AWS gestiteAWSLambdaBasicExecutionRoleeAWSLambdaVPCAccessExecutionRoleallegate per consentire alla funzione proxy di comunicare con l'API Kubernetes. -
La versione del AWS Load Balancer Controller deve essere una versione successiva.
v2.1.1 -
L'automazione include una fase di pulizia che rimuove le risorse temporanee dell'infrastruttura di autenticazione. Questa fase di pulizia viene eseguita anche quando i passaggi precedenti falliscono, assicurando che nell'account non rimangano risorse orfane. AWS
Esegui questa automazione (console)
Tipo di documento
Automazione
Proprietario
Amazon
Piattaforme
/
Autorizzazioni IAM richieste
Il AutomationAssumeRole parametro richiede le seguenti azioni per utilizzare correttamente il runbook.
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
Istruzioni
Segui questi passaggi per configurare ed eseguire l'automazione:
Nota
Prima di eseguire l'automazione, segui questi passaggi per configurare i ruoli IAM richiesti: uno per consentire a Systems Manager Automation di eseguire il runbook e un altro per consentire a Lambda di comunicare con l'API Kubernetes:
-
Crea un ruolo di automazione SSM nel tuo account.
TroubleshootEKSALBController-SSM-RoleVerifica che la relazione di trust includa la policy seguente.{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Allega la seguente policy IAM per concedere le autorizzazioni richieste:
{ "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" ] } } }] } -
Configura l'accesso per il tuo cluster Amazon EKS. Questo è un requisito obbligatorio per l'automazione. Per i passaggi per configurare la modalità di autenticazione per le voci di accesso, vedere Impostazione delle voci di accesso.
Nella console Amazon EKS, accedi al tuo cluster e segui questi passaggi:
Nella sezione Accesso, verifica che la configurazione di autenticazione sia impostata su
APIoAPI_AND_CONFIG_MAP.-
Scegli Crea voce di accesso e configura:
Per l'ARN principale di IAM, seleziona il ruolo IAM che hai creato (
TroubleshootEKSALBController-SSM-Role).In Tipo, seleziona
Standard.
-
Aggiungi una policy di accesso:
Per Nome della politica, seleziona
AmazonEKSAdminViewPolicy.Per Ambito di accesso, selezionare
Cluster.
Scegli Aggiungi policy.
Verifica i dettagli e scegli Crea.
-
Crea un ruolo IAM per la funzione Lambda (a cui si fa riferimento
LambdaRoleArnnei parametri di input):-
Crea un nuovo ruolo IAM con la seguente politica di fiducia:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Allega le seguenti politiche AWS gestite a questo ruolo:
AWSLambdaBasicExecutionRoleAWSLambdaVPCAccessExecutionRole
-
Annota l'ARN di questo ruolo poiché ti servirà per il parametro
LambdaRoleArndi input.
-
-
Accedere AWSSupport-TroubleshootEKSALBControllerIssues
alla console di AWS Systems Manager. -
Scegli Esegui automazione.
-
Per i parametri di input, immettete quanto segue:
-
AutomationAssumeRole (Facoltativo):
Tipo: AWS: :IAM: :Role: :Arn
Descrizione: (Facoltativo) L'Amazon Resource Name (ARN) del ruolo AWS Identity and Access Management (IAM) che consente a Systems Manager Automation di eseguire azioni per tuo conto. Se non viene specificato alcun ruolo, Systems Manager Automation utilizza le autorizzazioni dell'utente che avvia questo runbook.
Modello consentito: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :ruolo/? [a-z _0-9+=, .@\ A-Z -_/] +$
-
EksClusterName (Obbligatorio):
Tipo: stringa
Descrizione: (obbligatorio) Nome del cluster Amazon Elastic Kubernetes Service (Amazon EKS).
Schema consentito: ^ [0-9A-Za-z] [A-Za-z0-9-_] {0,99} $
-
ALBControllerDeploymentName (Opzionale):
Tipo: stringa
Descrizione: (Facoltativo) Il nome della distribuzione del AWS Load Balancer Controller nel cluster Amazon EKS. In genere si tratta di «aws-load-balancer-controller» a meno che tu non l'abbia personalizzato durante l'installazione.
Schema consentito: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $
Predefinito: aws-load-balancer-controller
-
ALBControllerNamespace (Opzionale):
Tipo: stringa
Descrizione: (Facoltativo) Lo spazio dei nomi Kubernetes in cui è distribuito il AWS Load Balancer Controller. Per impostazione predefinita, si tratta di 'kube-system', ma potrebbe essere diverso se hai installato il controller in uno spazio dei nomi personalizzato.
Schema consentito: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $
Predefinito: kube-system
-
ServiceAccountName (Opzionale):
Tipo: stringa
Descrizione: (Facoltativo) Il nome dell'account di servizio Kubernetes associato al AWS Load Balancer Controller. In genere si tratta di «aws-load-balancer-controller» a meno che non sia personalizzato durante l'installazione.
Schema consentito: ^ [a-z0-9] ([-.a-z0-9] {0,251} [a-z0-9])? $
Predefinito: aws-load-balancer-controller
-
ServiceAccountNamespace (Opzionale):
Tipo: stringa
Descrizione: (Facoltativo) Lo spazio dei nomi Kubernetes in cui si trova l'account di servizio per il AWS Load Balancer Controller. Si tratta in genere di «kube-system», ma può essere diverso se hai utilizzato un namespace personalizzato.
Schema consentito: ^ [a-z0-9] ([-a-z0-9] {0,61} [a-z0-9])? $
Predefinito: kube-system
-
IngressName (Opzionale):
Tipo: stringa
Descrizione: (Facoltativo) Nome della risorsa Ingress da convalidare (Application Load Balancer). Se non viene specificato, la convalida di Ingress verrà ignorata.
Schema consentito: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $
Predefinito: «» (stringa vuota)
-
IngressNamespace (Facoltativo):
Tipo: stringa
Descrizione: (Facoltativo) Namespace della risorsa Ingress. Obbligatorio se è specificato
IngressName.Schema consentito: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $
Predefinito: «» (stringa vuota)
-
ServiceName (Facoltativo):
Tipo: stringa
Descrizione: (Facoltativo) Nome di una risorsa di servizio specifica per convalidare le annotazioni Network Load Balancer (Network Load Balancer). Se non specificato, la convalida delle risorse del servizio verrà ignorata.
Schema consentito: ^$|^ [a-z0-9] [a-z0-9.-] {0,251} [a-z0-9] $
Predefinito: «» (stringa vuota)
-
ServiceNamespace (Facoltativo):
Tipo: stringa
Descrizione: (Facoltativo) Namespace della risorsa del servizio. Obbligatorio se
ServiceNameè specificato.Schema consentito: ^$|^ [a-z0-9] [a-z0-9-] {0,61} [a-z0-9] $
Predefinito: «» (stringa vuota)
-
LambdaRoleArn (Obbligatorio):
Tipo: AWS: :IAM: :Role: :Arn
Descrizione: (Obbligatorio) L'ARN del ruolo IAM che consente alla funzione AWS Lambda (Lambda) di accedere ai AWS servizi e alle risorse richiesti. AWS Associa le policy gestite:
AWSLambdaBasicExecutionRoleeAWSLambdaVPCAccessExecutionRoleal ruolo IAM di esecuzione della funzione lambda.Modello consentito: ^arn :(? :aws|aws-cn|aws-us-gov) :iam::\ d {12} :ruolo/? [a-z _0-9+=, .@\ A-Z -_/] +$
-
-
Scegli Esegui.
-
L'automazione viene avviata.
-
Il documento esegue i seguenti passaggi:
-
ValidateAccessEntryAndOIDCProvider:
Convalida la configurazione IAM del cluster Amazon EKS controllando le autorizzazioni di accesso e la configurazione del provider OIDC.
-
SetupK8sAuthenticationClient:
Esegui il documento SAW AWSSupport-SetupK8sApiProxyForEKS per configurare una funzione lambda per eseguire chiamate API Amazon EKS sul cluster.
-
VerifyALBControllerAndIRSASetup:
Verifica se il Service Account e il controller Application Load Balancer specificati esistono nei rispettivi namespace. Controlla anche la politica di annotazione e attendibilità del Service Account Role Annotation & Trust del controller Application Load Balancer.
-
VerifyPodIdentityWebhookAndEnv:
Controlla se pod-identity-webhook è in esecuzione. Controlla anche se l'IRSA viene inserito nelle variabili ENV del pod.
-
ValidateSubnetRequirements:
Controlla almeno due sottoreti in due AZ con 8 IP disponibili. Esiste una corretta etichettatura delle sottoreti per i sistemi di bilanciamento del carico. public/private
-
CheckLoadBalancerLimitsAndUsage:
Confronta il limite dell'account con il numero di Application Load Balancer e Network Load Balancer.
-
CheckIngressOrServiceAnnotations:
Verifica la correttezza delle annotazioni e delle specifiche nelle risorse Ingress e Service per assicurarsi che siano configurate correttamente per l'utilizzo di Application Load Balancer e Network Load Balancer.
-
CheckWorkerNodeSecurityGroupTags:
Verifica che esattamente un gruppo di sicurezza collegato ai nodi di lavoro abbia il tag cluster richiesto.
-
CaptureALBControllerLogs:
Recupera i log diagnostici più recenti dai pod del AWS Load Balancer Controller in esecuzione nel cluster Amazon EKS.
-
CleanupK8sAuthenticationClient:
Esegue il documento SAW 'AWSSupport-SetupK8sApiProxyForEKS' utilizzando l'operazione 'Cleanup' per ripulire le risorse create come parte dell'automazione.
-
GenerateReport:
Genera il report di automazione.
-
-
Al termine dell'esecuzione, consulta la sezione Output per i risultati dettagliati dell'esecuzione:
-
Rapporto:
Fornisce un riepilogo completo di tutti i controlli eseguiti, tra cui lo stato del cluster Amazon EKS, la configurazione dell'Application Load Balancer Controller, la configurazione IRSA, i requisiti di sottorete, i limiti del load balancer, ingress/service le annotazioni, i tag dei gruppi di sicurezza dei nodi di lavoro e i log dell'Application Load Balancer Controller. Include anche eventuali problemi identificati e le procedure di risoluzione consigliate.
-
Riferimenti
Systems Manager Automation
Documentazione relativa al AWS Load Balancer Controller