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

Ultimo aggiornamento: 14/07/2022

Dopo la creazione di un cluster, vengono visualizzati errori nell'ambiente Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descrizione

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

Nota: per utilizzare il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster, è necessario disporre di un piano di supporto Enterprise o Business.

Il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster può essere utilizzato se si verificano i seguenti problemi:

  • Il Cluster Autoscaler di Kubernetes non funziona.
  • Il bilanciatore 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).
  • Ricevi errori di accesso negato nei tuoi pod aws-node.
  • Non puoi estrarre le immagini di Amazon Elastic Container Registry (Amazon ECR).
  • I nodi gestiti non si stabilizzano o i nodi autogestiti non entrano a far parte di un cluster.

Il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster esegue i seguenti controlli:

  • Controlla la presenza di tag di sottorete dei gruppi con scalabilità automatica per il Cluster AutoScaler per i load balancer interni e con connessione a Internet e i gruppi di sicurezza worker.
    Importante: se ai nodi worker sono associati più gruppi di sicurezza, dovrai applicare un tag a uno dei 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 la presenza della più recente AMI sui nodi (worker).
  • Controlla che siano presenti le impostazioni minime e consigliate sulle regole del gruppo di sicurezza. 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 worker.
  • Controlla le configurazioni personalizzate della lista di controllo degli accessi alla rete.
  • Verifica le policy di AWS Identity and Access Management (IAM) sui nodi worker, incluse le policy AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly.
  • Controlla se i nodi worker possono connettersi a Internet controllando le tabelle di routing delle sottoreti in cui si trovano.

Risoluzione

Rendi individuabili i nodi (worker)

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

1.    Apri la console di Amazon EC2.

2.    Nel pannello di navigazione, scegli Instances (Istanze).

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

4.    Scegli Add/Edit Tags (Aggiungi/Modifica tag).

5.    Per Key (Chiave), inserisci kubernetes.io/cluster/your-cluster-name. Per Value (Valore), inserisci 'owned'/ 'shared'.

6.    Scegli Save (Salva).

Il flusso di lavoro di automazione AWSPremiumSupport-TroubleshootEKSCluster viene eseguito con la seguente policy. Perchè possa accedere al cluster, questa policy deve includere le autorizzazioni minime. Puoi accedere al cluster solo mediante 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 di AWS Systems Manager

1.    Apri la console di Systems Manager.

2.    Nel pannello di navigazione, scegli Automation (Automazione).

Nota: se la home page di Systems Manager si apre per prima, scegli l'icona del menu per aprire il riquadro di navigazione, quindi scegli Automation (Automazione).

3.    Scegli Esegui automazione.

4.    Nella casella di ricerca Automation document (Documento di automazione), inserisci AWSPremiumSupport-TroubleshootEKSCluster, quindi premi Invio.

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

Nota: il proprietario del documento è Amazon.

6.    Nella scheda Document description (Descrizione documento), verifica che la versione del documento sia impostata su Default version at runtime (Versione di default al runtime).

7.    Sceglш Next (Avanti).

8.    Nella sezione Execute automation document (Esegui documento di automazione), scegli Simple execution (Esecuzione semplice).

9.    Nella sezione Input parameters (Parametri di input), imposta i seguenti parametri:

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

Nota: se desideri specificare AutomationAssumeRole, crea un ruolo IAM e un bucket S3 applicabili alla policy. Quindi, carica il report sul tuo bucket S3 (BucketName) per l'automazione SSM.

10.    Scegli Execute (Esegui).

11.    Per monitorare l'avanzamento, scegli l'automazione in esecuzione, quindi seleziona la scheda Steps (Fasi).

12.    Al termine dell'esecuzione, scegli la scheda Descriptions (Descrizioni), quindi scegli View output (Visualizza output) per visualizzare i risultati.

Nota: i risultati vengono visualizzati come report che elenca tutti gli errori e gli avvisi relativi al cluster.

Esegui il flusso di lavoro di automazione da AWS CLI

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI. Crea un ruolo IAM e un bucket S3 applicabili alla policy se desideri specificare AutomationAssumeRole e carica il report nel tuo bucket S3 (S3BucketName) per l'esecuzione del flusso di lavoro di automazione.

Se desideri che il report sia in un bucket S3, emetti il seguente 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, emetti il seguente 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

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?