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

Letzte Aktualisierung: 24.08.2021

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

Kurzbeschreibung

Sie können denAWSPremiumSupport-TroubleshootEKSCluster Automatisierungs-Workflow verwenden, um häufige Fehler in Ihrer Amazon-EKS-Umgebung zu beheben. Der Workflow bietet einen detaillierten Bericht, der Fehler, Warnungen und Links zu den von AWS empfohlenen bewährten Praktiken auflistet.

Sie können den AWSPremiumSupport-TroubleshootEKSClusterAutomatisierungs-Workflow verwenden, wenn folgende Probleme auftreten:

  • 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 Zugriff verweigert Fehler in Ihren AWS-Knoten-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 AWS PremiumSupport-TroubleshooteKSCluster- Automatisierungs-Workflow führt die folgenden Überprüfungen aus:

  • Überprüft Auto-Scaling-Gruppen auf Cluster-AutoScaler-Subnet-Tags für interne und internetorientierte Load-Balancer und Worker-Sicherheitsgruppen.
    Wichtig: Wenn Ihren Worker-Knoten mehr als eine Sicherheitsgruppe zugeordnet ist, müssen Sie ein Tag auf eine Ihrer Sicherheitsgruppen anwenden.  Setzen Sie den Schlüssel des Tags auf kubernetes.io/cluster/dein-cluster-name. Setzen Sie den Wert auf owned. Dieses Tag ist optional, wenn nur eine Sicherheitsgruppe Ihren Worker-Knoten zugeordnet ist.
  • Überprüft Worker-Knoten auf das neueste AMI.
  • Überprüft Sicherheitsgruppenregeln auf Mindest- und empfohlene Einstellungen. Beispielsweise prüft der Workflow auf Ein- und Ausstieg aus der Sicherheitsgruppe des Clusters (d. h. alle an den Cluster angehängten Sicherheitsgruppen) und von der Worker-Sicherheitsgruppe.
  • Überprüft Konfigurationen der benutzerdefinierten Netzwerkzugriffssteuerungsliste (Netzwerk-ACL).
  • Prüft AWS Identity-and-Access-Management (IAM) -Richtlinien auf Worker-Knoten, einschließlich der AmazoneksWorkerNodePolicy und AmazonEC2ContainerRegistryReadOnly Richtlinien.
  • Prüft, ob Worker-Knoten eine Verbindung zum Internet herstellen können, indem sie die Routentabellen der Subnetze überprüfen, in denen sie sich befinden.

Lösung

Machen Sie Ihre Worker-Knoten auffindbar

Um Ihre Arbeitsknoten auffindbar zu machen, verwenden Sie den AWsPremiumSupport-Troubleshootekscluster Automatisierungs-Workflow und Ihren Amazon-EKS-Cluster:

1.    Öffnen Sie dieAmazon-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 aus, und wählen Sie dann die Registerkarte Tags.

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

5.    Geben Sie für Key kubernetes.io/cluster/your-cluster-name ein. Geben Sie für Wert „im Besitz“/„geteilt“ ein.

6.    Wählen Sie Speichern aus.

Der AWS PremiumSupport-TroubleshooteKSCluster Automatisierungs-Workflow wird mit der folgenden Richtlinie ausgeführt. Diese Richtlinie muss Mindestberechtigungen für den Zugriff auf den Cluster enthalten. Auf den Cluster kann entweder durch AutomationAssumeRole oder durch den Benutzer zugegriffen werden, der die Automatisierung ausführt.

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

Führen Sie den Automatisierungs-Workflow von der AWS-Systems-Manager-Konsole aus.

1.    Öffnen Sie die Systems Manager-Konsole.

2.    Wählen Sie Automatisierung im Navigationsbereich aus.

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

3.    Wählen Sie Automatisierung ausführen.

4.    Geben Sie im Suchfeld Automatisierungsdokument AWSPremiumSupport-TroubleshooteKSCluster ein, und drücken Sie dann die Eingabetaste.

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

Hinweis: Der Eigentümer des Dokuments ist Amazon.

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

7.    Wählen Sie Weiteraus.

8.    Wählen Sie für AbschnittAutomatisierungsdokument ausführen die Option Einfache Ausführung.

9.    Stellen 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.
Stellen Sie AutomationAssumeRole auf die IAM-Rolle ein, die Sie für den Workflow verwenden möchten.
(Optional) Stellen Sie BucketName bei Bedarf auf den Amazon-Simple-Storage-Service (Amazon S3) -Bucket ein, in den Sie den Bericht hochladen möchten.

10.    Wählen Sie Ausführen.

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

12.    Wenn die Ausführung abgeschlossen ist, wählen Sie die Registerkarte Beschreibungen und dann Ausgabe anzeigen, um die Ergebnisse anzuzeigen.

Hinweis: Die Ergebnisse liegen in Form eines detaillierten Berichts vor, der alle Fehler und Warnungen für Ihren Cluster auflistet.

Führen Sie den Automatisierungs-Workflow von der AWS CLI aus

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.

Wenn der Bericht in einem S3-Bucket sein soll, führen Sie den folgenden 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 den folgenden 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

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?