Wie kann ich Fehler in meiner Amazon-EKS-Umgebung beheben, nachdem ich einen Cluster erstellt habe?

Lesedauer: 5 Minute
0

Ich erhalte Fehler in meiner Amazon-Elastic-Kubernetes-Service-(Amazon EKS)-Umgebung, nachdem ich einen Cluster erstellt habe.

Kurzbeschreibung

Sie können den AWSPremiumSupport-TroubleshootEKSCluster-Automatisierungsworkflow verwenden, um häufig auftretende Fehler in Ihrer Amazon-EKS-Umgebung zu beheben. Der Workflow bietet einen detaillierten Bericht, in dem Fehler, Warnungen und Links zu den von Amazon Web Services (AWS) empfohlenen Best Practices aufgeführt sind.

Hinweis: Um den AWSPremiumSupport-TroubleshootEKSCluster-Automatisierungsworkflow verwenden zu können, müssen Sie einen Enterprise- oder Business-Support-Plan abonniert haben.

Sie können den AWSPremiumSupport-TroubleshootEKSCluster-Automatisierungsworkflow verwenden, wenn eines der folgenden Probleme auftritt:

  • Ihr Kubernetes-Cluster-Autoscaler funktioniert nicht.
  • Ihr interner Load Balancer wird nicht in privaten oder öffentlichen Subnetzen erstellt.
  • Sie wissen nicht, ob Ihre Worker-Knoten das neueste Amazon Machine Image (AMI) verwenden.
  • Sie erhalten Access-Denied-Fehler in Ihren aws-node-Pods.
  • Sie können keine Amazon-Elastic-Container-Registry-(Amazon ECR)-Images abrufen.
  • Ihre verwalteten Knoten stabilisieren sich nicht oder Ihre selbstverwalteten Knoten treten keinem Cluster bei.

Der AWSPremiumSupport-TroubleshootEKSCluster-Automatisierungsworkflow führt die folgenden Prüfungen durch:

  • Überprüft Auto-Scaling-Gruppen auf die Cluster-AutoScaler-Subnetz-Tags für interne und mit dem Internet verbundene Load Balancer und Worker-Sicherheitsgruppen.
    Wichtig: Wenn Ihren Worker-Knoten mehr als eine Sicherheitsgruppe zugeordnet ist, müssen Sie einer Ihrer Sicherheitsgruppen ein Tag zuweisen. Legen Sie den Schlüssel des Tags auf kubernetes.io/cluster/your-cluster-name fest. Setzen Sie den Wert auf owned. Dieses Tag ist optional, wenn Ihren Worker-Knoten nur eine Sicherheitsgruppe zugeordnet ist.
  • Überprüft die Worker-Knoten auf das neueste AMI.
  • Überprüft die Sicherheitsgruppenregeln auf minimale und empfohlene Einstellungen. Der Workflow überprüft beispielsweise den Ein- und Ausgang von der Sicherheitsgruppe des Clusters (d. h. von allen an den Cluster angeschlossenen Sicherheitsgruppen) und von der Worker-Sicherheitsgruppe.
  • Überprüft benutzerdefinierte Konfigurationen der Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL).
  • Prüft die Richtlinien des AWS Identity and Access Management (IAM) an Worker-Knoten, einschließlich der Richtlinien AmazonEKSWorkerNodePolicy und AmazonEC2ContainerRegistryReadOnly.
  • Prüft, ob Worker-Knoten eine Verbindung zum Internet herstellen können, indem die Routing-Tabellen der Subnetze überprüft werden, in denen sie sich befinden.

Lösung

Machen Sie Ihre Worker-Knoten auffindbar

Um Ihre Worker-Knoten auffindbar zu machen, verwenden Sie den AWSPremiumSupport-TroubleshootEKSCluster-Automatisierungsworkflow und Ihren Amazon-EKS-Cluster:

1.Öffnen Sie die Amazon-EC2-Konsole.

2.Wählen Sie im Navigationsbereich Instances aus.

3.Wählen Sie die Amazon-Elastic-Compute-Cloud-(Amazon EC2)-Instances für Ihre Worker-Knoten und anschließend die Registerkarte Tags aus.

4.Wählen Sie Tags hinzufügen/bearbeiten aus.

5.Geben Sie als Schlüssel kubernetes.io/cluster/your-cluster-name ein. Geben Sie als Wert 'owned'/ 'shared' ein.

6.Wählen Sie Speichern aus.

Der AWSPremiumSupport-TroubleshootEKSCluster-Automatisierungsworkflow wird mit der folgenden Richtlinie ausgeführt. Diese Richtlinie muss Mindestberechtigungen für den Zugriff auf den Cluster beinhalten. Auf den Cluster kann nur von AutomationAssumeRole zugegriffen werden.

{
  "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-*"
      ]
    }
  ]
}

Führen Sie den Automatisierungsworkflow über die AWS-Systems Manager-Konsole aus

1.Öffnen Sie die Systems-Manager-Konsole.

2.Wählen Sie im Navigationsbereich Automatisierung aus.

Hinweis: Wenn zuerst die Systems-Manager-Homepage geöffnet wird, wählen Sie das Menüsymbol, um den Navigationsbereich zu öffnen, und anschließend Automatisierung aus.

3.Wählen Sie Automatisierung ausführen aus.

4.Geben Sie in das Suchfeld Automatisierungsdokument, AWSPremiumSupport-TroubleshootEKSCluster ein und drücken Sie dann die Eingabetaste.

5.Wählen Sie in den Suchergebnissen AWSPremiumSupport-TroubleshootEKSCluster aus.

Hinweis: Der Besitzer des Dokuments ist Amazon.

6.Stellen Sie auf der Registerkarte Dokumentbeschreibung sicher, dass die Dokumentversion zur Standardversion bei Laufzeit gesetzt ist.

7.Wählen Sie Weiter aus.

8.Wählen Sie im Abschnitt Automatisierungsdokument ausführen die Option Einfache Ausführung aus.

9.Geben Sie im Abschnitt Eingabeparameter die folgenden Parameter ein:

Setzen Sie ClusterName auf den Namen des Clusters. Dieser Cluster muss in Ihrem AWS-Konto ausgeführt werden.
Legen Sie AutomationAssumeRole auf die IAM-Rolle fest, die Sie für den Workflow verwenden möchten.
(Optional) Legen Sie bei Bedarf BucketName auf den Amazon0-Simple-Storage-Service-(Amazon S3) -Bucket fest, in den Sie den Bericht hochladen möchten.

Hinweis: Wenn Sie die AutomationAssumeRole festlegen möchten, erstellen Sie eine IAM-Rolle und einen S3-Bucket, die für die Richtlinie gelten. Laden Sie dann den Bericht für die SSM-Automatisierung in Ihren eigenen S3-Bucket (BucketName) hoch.

10.Wählen Sie Ausführen aus.

11.Um den Fortschritt zu überwachen, wählen Sie die laufende Automatisierung und dann die Registerkarte Schritte aus.

12.Wenn der Vorgang abgeschlossen ist, wählen Sie die Registerkarte Beschreibungen und dann Ausgabe anzeigen aus, um die Ergebnisse anzuzeigen.

Hinweis: Die Ergebnisse werden als Bericht angezeigt, der alle Fehler und Warnungen für Ihren Cluster auflistet.

Den Automatisierungsworkflow über die AWS-CLI ausführen

Hinweis: Wenn Sie beim Ausführen von AWS-Command-Line-Interface-(AWS-CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden. Erstellen Sie eine IAM-Rolle und einen S3-Bucket, die für die Richtlinie gelten, wenn Sie AutomationAssumeRole angeben und einen Bericht in Ihren eigenen S3-Bucket (S3BucketName) hochladen möchten, um den Automatisierungsworkflow auszuführen.

Wenn Sie den Bericht in einem S3-Bucket vorliegen haben möchten, führen Sie diesen Befehl aus:

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

Wenn Sie den Bericht nicht in einen S3-Bucket hochladen möchten, führen Sie diesen Befehl aus:

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