AWSSupport-TroubleshootEbsCsiDriversForEks - AWS Systems Manager Riferimento al runbook di automazione

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 (LambdaRoleArnparametro), l'automazione crea un ruolo denominato Automation-K8sProxy-Role-<ExecutionId> nel tuo account. Questo ruolo include le politiche gestite AWSLambdaBasicExecutionRole 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:

  1. 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" } ] }
  2. 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" } } } ] }
  3. 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

  4. Aggiungi una politica di accesso:

    • Per Ambito di accesso, selezionareCluster.

    • Per Nome della politica, selezionareAmazonEKSAdminViewPolicy.

    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

  5. Esegui l'automazione (console) AWSSupport-TroubleshootEbsCsiDriversForEks

  6. Seleziona Execute automation (Esegui automazione).

  7. 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.

  8. 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.