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-TroubleshootEKSCNI
Description
Il AWSSupport-TroubleshootEKSCNI runbook diagnostica i problemi con il plug-in CNI Amazon Virtual Private Cloud (Amazon VPC) sui nodi di lavoro Amazon Elastic Kubernetes Service (Amazon EKS). Esegue controlli diagnostici completi, tra cui lo stato dell'addon, l'autenticazione AWS Identity and Access Management (IAM), la configurazione di rete e la connettività.
Il runbook esegue i seguenti controlli diagnostici:
Stato dell'addon Amazon VPC CNI (gestito e autogestito), compatibilità delle versioni e disponibilità dei pod
Autenticazione IAM (Pod Identity, IAM Roles for Service Accounts (IRSA), ruolo IAM del nodo, provider OpenID Connect (OIDC))
Connettività di rete al server API Amazon EKS e agli endpoint Amazon Elastic Compute Cloud
Stato del nodo, file di configurazione CNI e stato del pod di sistema
Configurazione di rete (famiglia IP, rete personalizzata, delega dei prefissi, densità dei pod, disponibilità della sottorete)
Configurazione del gruppo di sicurezza per i pod
Raccolta dei log mediante caricamento opzionale
eks-log-collector.shdi Amazon Simple Storage Service
Importante
Questo runbook utilizza risorse temporanee AWS Lambda (Lambda) e potrebbe comportare costi associati. Tutte le risorse temporanee vengono ripulite automaticamente al termine dell'esecuzione.
Esegui questo runbook
Esegui questa automazione (console)
Tipo di documento
Automazione
Owner
Amazon
Piattaforme
Linux
Parameters
-
AutomationAssumeRoleTipo: AWS: :IAM: :Role: :Arn
Descrizione: (Facoltativo) L'Amazon Resource Name (ARN) del ruolo IAM che consente a Systems Manager Automation di eseguire le azioni per tuo conto. Se non viene specificato alcun ruolo, Systems Manager Automation utilizza le autorizzazioni dell'utente che avvia questo runbook.
-
EksClusterNameTipo: stringa
Schema consentito:
^[a-zA-Z0-9][a-zA-Z0-9_-]{0,99}$Descrizione: (obbligatorio) Il nome del cluster Amazon EKS per la risoluzione dei problemi.
-
InstanceIdTipo: AWS: :EC2: :Instance: :Id
Descrizione: (Obbligatorio) L'ID dell'istanza Amazon Elastic Compute Cloud (Amazon EC2) del nodo di lavoro.
-
S3BucketNameTipo: AWS: :S3: :Bucket: :Name
Descrizione: (Facoltativo) Il bucket Amazon S3 per log dettagliati. Il bucket deve essere sicuro (non pubblico, crittografia abilitata).
-
S3BucketOwnerAccountTipo: stringa
Impostazione predefinita:
{{ global:ACCOUNT_ID }}Schema consentito:
^$|^\{\{ global:ACCOUNT_ID \}\}$|^[0-9]{12}$Descrizione: (Facoltativo) L' AWS account proprietario del bucket Amazon S3. Se non si specifica questo parametro, il runbook presuppone che il bucket si trovi in questo account.
-
LambdaRoleArnTipo: AWS: :IAM: :Role: :Arn
Descrizione: (Facoltativo) L'ARN del ruolo IAM per l'autenticazione della funzione Lambda nel cluster Amazon EKS. Se non viene fornito, il runbook crea un ruolo temporaneo.
Autorizzazioni IAM richieste
Il AutomationAssumeRole parametro richiede le seguenti azioni per utilizzare correttamente il runbook.
Importante
AutomationAssumeRoleDeve essere mappato nella configurazione di accesso del cluster Amazon EKS per consentire chiamate API autenticateKubernetes. È possibile mappare il ruolo tramite le voci di accesso di Amazon EKS o il. aws-auth ConfigMap Senza questa mappatura, l'automazione non può verificare la registrazione del nodo e fallisce con un errore di autenticazione.
Autorizzazioni Amazon EKS
eks:DescribeClustereks:DescribeAddoneks:DescribeAddonVersionseks:ListPodIdentityAssociationseks:DescribePodIdentityAssociation
Autorizzazioni Amazon EC2
ec2:DescribeInstancesec2:DescribeInstanceTypesec2:DescribeSubnetsec2:DescribeNetworkInterfacesec2:DescribeVpcAttributeec2:DescribeRouteTablesec2:DescribeVpcsec2:DescribeSecurityGroupsec2:CreateNetworkInterfaceec2:DeleteNetworkInterface
autorizzazioni IAM
iam:GetRoleiam:GetInstanceProfileiam:ListAttachedRolePoliciesiam:GetRolePolicyiam:GetPolicyiam:GetPolicyVersioniam:SimulatePrincipalPolicyiam:ListOpenIDConnectProvidersiam:GetOpenIDConnectProvideriam:PassRoleiam:CreateRoleiam:TagRoleiam:AttachRolePolicyiam:DetachRolePolicyiam:DeleteRole
Autorizzazioni Lambda
lambda:CreateFunctionlambda:InvokeFunctionlambda:DeleteFunctionlambda:UpdateFunctionCodelambda:GetFunctionlambda:TagResource
Autorizzazioni Amazon Logs CloudWatch
logs:CreateLogGrouplogs:TagResourcelogs:DeleteLogGrouplogs:PutRetentionPolicy
AWS Systems Manager autorizzazioni
ssm:StartAutomationExecutionssm:SendCommandssm:GetCommandInvocationssm:GetAutomationExecutionssm:DescribeAutomationExecutionsssm:DescribeAutomationStepExecutionsssm:DescribeInstanceInformation
Autorizzazioni di etichettatura delle risorse
tag:GetResourcestag:TagResources
AWS CloudFormation autorizzazioni
cloudformation:DescribeStackscloudformation:CreateStackcloudformation:DeleteStack
Autorizzazioni Amazon S3 (richieste solo quando viene S3BucketName fornito un parametro)
s3:ListBuckets3:GetBucketEncryptions3:GetBucketAcls3:GetBucketPublicAccessBlocks3:GetAccountPublicAccessBlocks3:GetBucketPolicyStatuss3:GetBucketLocations3:PutObject
Per eseguire questo runbook, il tuo utente IAM AutomationAssumeRole o il tuo utente IAM richiede le seguenti azioni. L'esempio seguente mostra una policy IAM con privilegi minimi che assegna le autorizzazioni a modelli di risorse specifici utilizzati dall'automazione:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EKSReadOnly", "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:DescribeAddon", "eks:DescribeAddonVersions", "eks:ListPodIdentityAssociations", "eks:DescribePodIdentityAssociation" ], "Resource": [ "arn:aws:eks:REGION:ACCOUNTID:cluster/CLUSTER_NAME", "arn:aws:eks:REGION:ACCOUNTID:addon/CLUSTER_NAME/*", "arn:aws:eks:REGION:ACCOUNTID:podidentityassociation/CLUSTER_NAME/*" ] }, { "Sid": "EC2ReadOnly", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:DescribeSubnets", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcAttribute", "ec2:DescribeRouteTables", "ec2:DescribeVpcs", "ec2:DescribeSecurityGroups" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "REGION" } } }, { "Sid": "EC2NetworkInterfaceForLambdaVPC", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface" ], "Resource": [ "arn:aws:ec2:REGION:ACCOUNTID:network-interface/*", "arn:aws:ec2:REGION:ACCOUNTID:subnet/SUBNET_ID", "arn:aws:ec2:REGION:ACCOUNTID:security-group/CLUSTER_SECURITY_GROUP_ID" ] }, { "Sid": "IAMReadOnly", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetInstanceProfile", "iam:ListAttachedRolePolicies", "iam:GetRolePolicy", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:SimulatePrincipalPolicy", "iam:ListOpenIDConnectProviders", "iam:GetOpenIDConnectProvider" ], "Resource": [ "arn:aws:iam::ACCOUNTID:role/*", "arn:aws:iam::ACCOUNTID:instance-profile/*", "arn:aws:iam::ACCOUNTID:policy/*", "arn:aws:iam::ACCOUNTID:oidc-provider/*" ] }, { "Sid": "IAMRoleManagementForLambda", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:TagRole", "iam:AttachRolePolicy", "iam:DetachRolePolicy", "iam:DeleteRole" ], "Resource": "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy-Role-*" }, { "Sid": "PassRoleToLambdaOnly", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::ACCOUNTID:role/Automation-K8sProxy-Role-*", "Condition": { "StringEquals": { "iam:PassedToService": "lambda.amazonaws.com" } } }, { "Sid": "LambdaManagement", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:UpdateFunctionCode", "lambda:GetFunction", "lambda:TagResource" ], "Resource": "arn:aws:lambda:REGION:ACCOUNTID:function:AWSSupport-SetupK8sApiProxy-*" }, { "Sid": "CloudWatchLogs", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:TagResource", "logs:DeleteLogGroup", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:REGION:ACCOUNTID:log-group:/aws/lambda/AWSSupport-SetupK8sApiProxy-*" }, { "Sid": "SSMAutomationScopedToChildDoc", "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:REGION:ACCOUNTID:automation-definition/AWSSupport-SetupK8sApiProxyForEKS:*", "arn:aws:ssm:REGION:ACCOUNTID:automation-execution/*" ] }, { "Sid": "SSMAutomationRead", "Effect": "Allow", "Action": [ "ssm:GetAutomationExecution", "ssm:DescribeAutomationExecutions", "ssm:DescribeAutomationStepExecutions" ], "Resource": "arn:aws:ssm:REGION:ACCOUNTID:automation-execution/*" }, { "Sid": "SSMCommandExecution", "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:GetCommandInvocation" ], "Resource": [ "arn:aws:ssm:REGION::document/AWS-RunShellScript", "arn:aws:ec2:REGION:ACCOUNTID:instance/INSTANCE_ID" ] }, { "Sid": "SSMDescribeInstances", "Effect": "Allow", "Action": "ssm:DescribeInstanceInformation", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "REGION" } } }, { "Sid": "CloudFormation", "Effect": "Allow", "Action": [ "cloudformation:DescribeStacks", "cloudformation:CreateStack", "cloudformation:DeleteStack" ], "Resource": "arn:aws:cloudformation:REGION:ACCOUNTID:stack/AWSSupport-SetupK8sApiProxyForEKS-*/*" }, { "Sid": "ResourceTagging", "Effect": "Allow", "Action": [ "tag:GetResources", "tag:TagResources" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": "REGION" } } }, { "Sid": "S3LogUpload", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketEncryption", "s3:GetBucketAcl", "s3:GetBucketPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:GetBucketLocation", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME", "arn:aws:s3:::S3_BUCKET_NAME/*" ], "Condition": { "StringEquals": { "s3:ResourceAccount": "ACCOUNTID" } } }, { "Sid": "S3AccountPublicAccessBlock", "Effect": "Allow", "Action": "s3:GetAccountPublicAccessBlock", "Resource": "*" } ] }
Fasi del documento
-
CheckConcurrency- Assicura che vi sia una sola esecuzione di questo runbook destinata alla stessa AWS regione. Se è in corso un'altra esecuzione, il runbook restituisce un errore e termina. -
ValidatePrerequisites- Convalida tutti i prerequisiti, tra cui lo stato del cluster, lo stato dell'istanza, la connettività di Amazon EC2 Systems Manager, le impostazioni DNS di Amazon VPC e le autorizzazioni IAM. Se la convalida dei prerequisiti fallisce, il runbook passa a.GenerateReport -
BranchOnValidation- Esecuzione dei percorsi in base ai risultati della convalida dei prerequisiti. Se tutti i prerequisiti sono validi, procede a.DeployK8sApiProxyAltrimenti, passa a.GenerateReport -
DeployK8sApiProxy- Implementa una funzione Lambda per effettuare chiamate Kubernetes API autenticate al cluster Amazon EKS eseguendo il runbook secondario.AWSSupport-SetupK8sApiProxyForEKS -
ValidateNodeInCluster- Verifica che l'istanza Amazon EC2 sia un nodo registrato nel cluster Amazon EKS tramite l'API. Kubernetes Se il nodo non viene trovato nel cluster, il runbook passa a.CleanupResources -
BranchOnNodeValidation- Esecuzione dei percorsi in base ai risultati della convalida del nodo. Se il nodo è valido, procede a.RunCNIChecksAltrimenti, passa a.CleanupResources -
RunCNIChecks- Esegue tutti i controlli diagnostici CNI, inclusi lo stato dell'addon, l'autenticazione IAM, la connettività, lo stato dei nodi, la configurazione di rete, i gruppi di sicurezza e la raccolta dei log. Passa alla fase successiva anche se i controlli rilevano errori. -
CleanupResources- Pulisce la funzione Lambda e le risorse associate distribuite durante i controlli diagnostici eseguendo il runbookAWSSupport-SetupK8sApiProxyForEKSsecondario con l'operazione.Cleanup -
GenerateReport- Genera un rapporto diagnostico con messaggi leggibili dall'uomo e consigli pratici per ogni risultato.
Output
GenerateReport.Report- Un riepilogo completo di tutti i risultati con codici di errore, messaggi e consigli utilizzabili.