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-TroubleshootEbsCsiDriversForEks
Descrizione
Il AWSSupport-TroubleshootEbsCsiDriversForEks
runbook aiuta a risolvere i problemi relativi ai montaggi di volumi Amazon Elastic Block Store nei driver Amazon Elastic Kubernetes Service (Amazon EKS) e Amazon EBS Container Storage Interface (CSI)
Importante
Attualmente il driver Amazon EBS CSI su cui è in esecuzione non AWS Fargate è supportato.
Come funziona?
Il runbook AWSSupport-TroubleshootEbsCsiDriversForEks
esegue i seguenti passaggi di alto livello:
-
Verifica se il cluster Amazon EKS di destinazione esiste ed è in stato attivo.
-
Implementa le risorse di autenticazione necessarie per effettuare chiamate all'API Kubernetes a seconda che l'addon sia gestito da Amazon EKS o autogestito.
-
Esegue controlli e diagnostiche dello stato del controller Amazon EBS CSI.
-
Esegue controlli delle autorizzazioni IAM sui ruoli dei nodi e sui ruoli degli account di servizio.
-
Diagnostica i problemi persistenti di creazione di volumi per il pod dell'applicazione specificato.
-
Controlla la node-to-pod pianificazione ed esamina gli eventi del pod.
-
Raccoglie i log pertinenti di Kubernetes e delle applicazioni, caricandoli nel bucket Amazon S3 specificato.
-
Esegue controlli dello stato dei nodi e verifica la connettività con gli EC2 endpoint Amazon.
-
Verifica lo stato di montaggio e gli allegati dei dispositivi a blocchi di volume persistenti.
-
Pulisce l'infrastruttura di autenticazione creata durante la risoluzione dei problemi.
-
Genera un rapporto completo sulla risoluzione dei problemi che combina tutti i risultati diagnostici.
Nota
-
La modalità di autenticazione del cluster Amazon EKS deve essere impostata su
API
oAPI_AND_CONFIG_MAP
. Ti consigliamo di utilizzare Amazon EKS Access entry. Il runbook richiede le autorizzazioni RBAC (Kubernetes Role-based Access Control) per eseguire le chiamate API necessarie. -
Se non specifichi un ruolo IAM per la funzione Lambda (
LambdaRoleArn
parametro), l'automazione crea un ruolo denominatoAutomation-K8sProxy-Role-<ExecutionId>
nel tuo account. Questo ruolo include le politiche gestiteAWSLambdaBasicExecutionRole
eAWSLambdaVPCAccessExecutionRole
. -
Alcuni passaggi diagnostici richiedono che i nodi di lavoro di Amazon EKS siano istanze gestite da Systems Manager. Se i nodi non sono istanze gestite da Systems Manager, i passaggi che richiedono l'accesso a Systems Manager vengono ignorati, ma gli altri controlli continuano.
-
L'automazione include una fase di pulizia che rimuove le risorse dell'infrastruttura di autenticazione. Questa fase di pulizia viene eseguita anche quando i passaggi precedenti falliscono, il che aiuta a evitare che le risorse rimangano orfane nell'account. 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.
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
Istruzioni
Segui questi passaggi per configurare l'automazione:
-
Crea un ruolo di automazione SSM
TroubleshootEbsCsiDriversForEks-SSM-Role
nel tuo account. Verifica 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 al ruolo IAM per concedere le autorizzazioni necessarie per eseguire le azioni specificate sulle risorse specificate.
-
Se prevedi di caricare i log di esecuzione e delle risorse nel bucket Amazon S3 nella AWS stessa regione,
arn:{partition}:s3:::BUCKET_NAME/*
sostituiscili con i tuoi.OptionalRestrictPutObjects
Il bucket Amazon S3 dovrebbe puntare al bucket Amazon S3 corretto se si seleziona l'esecuzione SSM.
S3BucketName
Questa autorizzazione è facoltativa se non lo specifichi
S3BucketName
Il bucket Amazon S3 deve essere privato e nella stessa AWS regione in cui si esegue l'automazione 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" } } } ] }
-
-
Concedi le autorizzazioni richieste per il cluster Amazon EKS RBAC (Role-Based Access Control). L'approccio consigliato consiste nel creare un Access Entry nel cluster Amazon EKS.
Nella console Amazon EKS, accedi al tuo cluster. Per le voci di accesso ad Amazon EKS, verifica che la configurazione di accesso sia impostata su
API_AND_CONFIG_MAP
oAPI
. Per i passaggi per configurare la modalità di autenticazione per le voci di accesso, consulta Configurazione delle voci di accesso.Seleziona Crea voce di accesso.
Per l'ARN principale IAM, seleziona il ruolo IAM che hai creato per l'automazione SSM nel passaggio precedente.
Per Tipo, seleziona.
Standard
-
Aggiungi una politica di accesso:
Per Ambito di accesso, selezionare
Cluster
.Per Nome della politica, selezionare
AmazonEKSAdminViewPolicy
.
Scegli Aggiungi policy.
Se non utilizzi le voci di accesso per gestire le autorizzazioni dell'API Kubernetes, devi aggiornare
aws-auth
ConfigMap e creare un'associazione di ruolo tra l'utente o il ruolo IAM. Assicurati che la tua entità IAM disponga delle seguenti autorizzazioni API Kubernetes di sola lettura: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
-
Esegui l'automazione (console) AWSSupport-TroubleshootEbsCsiDriversForEks
-
Seleziona Execute automation (Esegui automazione).
-
Per i parametri di input, inserisci quanto segue:
-
AutomationAssumeRole (Facoltativo):
Descrizione: (Facoltativo) L'Amazon Resource Name (ARN) del ruolo AWS Identity and Access Management (IAM) che consente a SSM Automation di eseguire le azioni per tuo conto. Il ruolo deve essere aggiunto alla voce di accesso al cluster Amazon EKS o all'autorizzazione RBAC per consentire le chiamate API Kubernetes.
Tipo:
AWS::IAM::Role::Arn
Esempio:
TroubleshootEbsCsiDriversForEks-SSM-Role
-
EksClusterName:
Descrizione: il nome del cluster Amazon Elastic Kubernetes Service (Amazon EKS) di destinazione.
Tipo:
String
-
ApplicationPodName:
Descrizione: il nome del pod dell'applicazione Kubernetes che presenta problemi con il driver CSI di Amazon EBS.
Tipo:
String
-
ApplicationNamespace:
Descrizione: lo spazio dei nomi Kubernetes per il pod dell'applicazione presenta problemi con il driver CSI di Amazon EBS.
Tipo:
String
-
EbsCsiControllerDeploymentName (Facoltativo):
Descrizione: (Facoltativo) Il nome di distribuzione per il pod controller CSI di Amazon EBS.
Tipo:
String
Impostazione predefinita:
ebs-csi-controller
-
EbsCsiControllerNamespace (Facoltativo):
Descrizione: (Facoltativo) Lo spazio dei nomi Kubernetes per il controller pod Amazon EBS CSI.
Tipo:
String
Impostazione predefinita:
kube-system
-
BucketName S3 (opzionale):
Descrizione: (Facoltativo) Il nome del bucket Amazon S3 di destinazione in cui verranno caricati i log di risoluzione dei problemi.
Tipo:
AWS::S3::Bucket::Name
-
LambdaRoleArn (Facoltativo):
Descrizione: (Facoltativo) L'ARN del ruolo IAM che consente alla AWS Lambda funzione di accedere ai AWS servizi e alle risorse richiesti.
Tipo:
AWS::IAM::Role::Arn
Seleziona Esegui.
-
-
Al termine, consulta la sezione Output per i risultati dettagliati dell'esecuzione.
Riferimenti
Systems Manager Automation
Per ulteriori informazioni su Amazon EBS CSI Driver, consulta Amazon EBS CSI Driver.