Come posso risolvere gli errori nel mio ambiente Amazon EKS dopo aver creato un cluster?

5 minuti di lettura
0

Ricevo errori nel mio ambiente Amazon Elastic Kubernetes Service (Amazon EKS) dopo aver creato un cluster.

Breve descrizione

Puoi utilizzare il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster per risolvere gli errori più comuni del tuo ambiente Amazon EKS. Il flusso di lavoro fornisce un rapporto dettagliato che elenca errori, avvisi e link alle best practice consigliate da Amazon Web Services (AWS).

**Nota:**Per utilizzare il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster, devi essere abbonato a un piano di supporto Enterprise o Business.

Puoi utilizzare il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster se riscontri uno di questi problemi:

  • Il tuo Kubernetes Cluster Autoscaler non funziona.
  • Il tuo sistema di bilanciamento del carico interno non viene creato in sottoreti private o pubbliche.
  • Non sai se i tuoi nodi worker utilizzano la versione più recente di Amazon Machine Image (AMI).
  • Ottieni errori di accesso negato nei tuoi pod aws-node.
  • Non puoi estrarre immagini di Amazon Elastic Container Registry (Amazon ECR).
  • I tuoi nodi gestiti non si stabilizzano o i tuoi nodi autogestiti non si uniscono a un cluster.

Il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster esegue questi controlli:

  • Controlla i gruppi con dimensionamento automatico per i tag di sottorete Cluster AutoScaler per i sistemi di bilanciamento del carico interni e connessi a Internet e i gruppi di sicurezza dei nodi worker.
    Importante: Se hai più di un gruppo di sicurezza associato ai tuoi nodi worker, devi applicare un tag a uno dei tuoi gruppi di sicurezza. Imposta la chiave del tag su kubernetes.io/cluster/your-cluster-name. Imposta il valore su owned. Questo tag è facoltativo se ai nodi worker è associato un solo gruppo di sicurezza.
  • Controlla i nodi worker per l'AMI più recente.
  • Verifica le regole dei gruppi di sicurezza per le impostazioni minime e consigliate. Ad esempio, il flusso di lavoro verifica l'ingresso e l'uscita dal gruppo di sicurezza del cluster (ovvero tutti i gruppi di sicurezza collegati al cluster) e dal gruppo di sicurezza del nodo worker.
  • Controlla le configurazioni dell'elenco di controllo degli accessi alla rete (ACL di rete).
  • Verifica le policy di AWS Identity and Access Management (IAM) sui nodi worker, incluse le policy AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly .
  • Verifica se i nodi worker possono connettersi a Internet controllando le tabelle di routing delle sottoreti in cui si trovano.

Soluzione

Rendi visibili i tuoi nodi worker

Per rendere individuabili i tuoi nodi worker, utilizza il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster e il tuo cluster Amazon EKS:

1.    Apri la console Amazon EC2.

2.    Nel riquadro di navigazione, scegli Istanze.

3.    Seleziona le istanze Amazon Elastic Compute Cloud (Amazon EC2) per i tuoi nodi worker, quindi scegli la scheda Tag.

4.    Scegli Aggiungi/modifica tag.

5.    In Chiave, inserisci kubernetes.io/cluster/your-cluster-name. In Valore, inserisci 'posseduto'/ 'condiviso'.

6.    Seleziona Salva.

Il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster viene eseguito con la seguente policy. Questa policy deve includere autorizzazioni minime per accedere al cluster. È possibile accedere al cluster solo da AutomationAssumeRole.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSPremiumSupportTroubleshootEKSCluster",
      "Effect": "Allow",
      "Action": [
        "eks:ListNodegroups",
        "eks:DescribeCluster",
        "eks:DescribeNodegroup",
        "iam:GetInstanceProfile",
        "iam:ListInstanceProfiles",
        "iam:ListAttachedRolePolicies",
        "autoscaling:DescribeAutoScalingGroups",
        "ec2:DescribeInstanceTypes",
        "ec2:DescribeInstances",
        "ec2:DescribeNatGateways",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeRouteTables"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GetPublicSSMParams",
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": [
        "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2/recommended/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Core-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-2019-English-Full-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/ami-windows-latest/Windows_Server-1909-English-Core-EKS_Optimized-*/image_id",
        "arn:aws:ssm:*:*:parameter/aws/service/eks/optimized-ami/*/amazon-linux-2-gpu/recommended/image_id"
      ]
    },
    {
      "Sid": "UploadObjectToS3",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketPolicyStatus",
        "s3:GetBucketAcl",
        "s3:PutObject"
      ],
      "Resource": [
        "<BUCKET_ARN>",
        "<BUCKET_ARN>/AWSPremiumSupport-TroubleshootEKSCluster-*"
      ]
    }
  ]
}

Esegui il flusso di lavoro di automazione dalla console AWS Systems Manager

1.    Apri la console di Systems Manager.

2.    Nel riquadro di navigazione, scegli Automazione.

Nota: Se la homepage di Systems Manager si apre per prima, scegli l'icona del menu per aprire il riquadro di navigazione, quindi scegli Automazione.

3.    Scegli Esegui automazione.

4.    Nella casella di ricerca dei documenti di automazione, inserisci AWSPremiumSupport-TroubleshootEKSCluster, quindi premi Invio.

5.    Dai risultati della ricerca, seleziona AWSPremiumSupport-TroubleshootEKSCluster.

Nota: Il titolare del documento è Amazon.

6.    Nella scheda Descrizione del documento, verifica che la versione del documento sia impostata su Versione predefinita durante il runtime.

7.    Scegli Avanti.

8.    Nella sezione Esegui documento di automazione, scegli Esecuzione semplice.

9.    Nella sezione Parametri di input, inserisci i seguenti parametri:

Imposta ClusterName sul nome del cluster. Questo cluster deve essere eseguito nel tuo account AWS.
Imposta AutomationAssumeRole sul ruolo IAM che vuoi utilizzare per il flusso di lavoro.
(Facoltativo) Se necessario, imposta BucketName sul bucket Amazon Simple Storage Service (Amazon S3) in cui vuoi caricare il report.

Nota: Se desideri specificare AutomationAssumeRole, crea un ruolo IAM e un bucket S3 che si applicano alla policy. Quindi, carica il report nel tuo bucket S3 ( BucketName) per l'automazione SSM.

10.    Scegli Esegui.

11.    Per monitorare l'avanzamento, scegli l'Automazione in esecuzione, quindi scegli la scheda Fasi.

12.    Al termine del processo, scegli la scheda Descrizioni, quindi scegli Visualizza risultato per visualizzare i risultati.

Nota: I risultati vengono visualizzati in un report che elenca tutti gli errori e gli avvisi relativi al cluster.

Esegui il flusso di lavoro di automazione dall'interfaccia a riga di comando di AWS

Nota: Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente dell'interfaccia a riga di comando di AWS. Crea un ruolo IAM e un bucket S3 che si applicano alla policy se vuoi specificare AutomationAssumeRole e caricare il report nel tuo bucket S3 ( S3BucketName) per eseguire il flusso di lavoro di automazione.

Se vuoi che il report sia contenuto in un bucket S3, esegui questo comando:

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"],"S3BucketName":["your_bucket"]}' --region your_region

Se non vuoi caricare il report su un bucket S3, esegui questo comando:

aws ssm start-automation-execution --document-name "AWSPremiumSupport-TroubleshootEKSCluster" --document-version "\$DEFAULT" --parameters '{"ClusterName":["your-eks-cluster"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/eks-troubleshooter-role"]}' --region your_region