Wie kann ich Amazon-EKS-Pods auf AWS Fargate beheben, die sich im Status „Ausstehend“ befinden?

Zuletzt aktualisiert: 20.12.2021

Meine Amazon-Elastic-Kubernetes-Service-Pods (Amazon EKS), die auf AWS-Fargate-Instances ausgeführt werden, stecken im Status „Ausstehend“ fest. Wie kann ich diese Pods zum Laufen bringen?

Kurzbeschreibung

Im Folgenden finden Sie einige gängige Szenarien, die verhindern, dass Pods mit AWS Fargate auf Amazon Elastic Kubernetes Service (Amazon EKS) ausgeführt werden.

  • Es liegt ein Kapazitätsfehler vor, da eine bestimmte VCPU/Speicherkombination nicht verfügbar ist.
  • Die CoreDNS-Pods wurden mit einer Standardanmerkung erstellt, die entfernt werden muss, um sie auf einem Fargate-Knoten zu planen.
  • Der Pod stimmte bei seiner Erstellung mit keinem Fargate-Profil überein und ist nicht dem Fargate-Scheduler zugewiesen. Wenn ein Pod bei der Erstellung nicht abgeglichen wird, wird er nicht automatisch auf Fargate-Knoten verschoben, auch wenn später ein passendes Profil erstellt wird. In diesem Fall wird der Pod dem Standard-Scheduler zugewiesen.
  • Wenn der Pod dem Fargate-Scheduler zugewiesen ist, sich aber im Status Ausstehend befindet, ist möglicherweise zusätzliche Fehlerbehebung erforderlich.

Beachten Sie vor der Fehlerbehebung die folgenden Pod-Regeln von Fargate:

  • Sie müssen sowohl Namespace- als auch Übereinstimmungsbeschriftungen für Ihre Pod-Selektoren konfigurieren. Der Fargate-Workflow ordnet Pods nur dann einem Fargate-Profil zu, wenn beide Bedingungen der Pod-Spezifikation entsprechen.
  • Wenn Sie mehrere Pod-Selektoren innerhalb eines einzelnen Fargate-Profils angeben, wird der Pod nach Fargate-Zeitplan geplant, wenn er mit einem der Selektoren übereinstimmt.
  • Wenn eine Pod-Spezifikation mit mehreren Fargate-Profilen übereinstimmt, wird der Pod gemäß einem zufälligen Fargate-Profil geplant. Um dies zu vermeiden, können Sie die Anmerkung eks.amazonaws.com/fargate-profile: <fp_name>innerhalb der Pod-Spezifikation verwenden.

Auflösung

Wichtig: Die folgenden Schritte gelten nur für Pods, die mit AWS Fargate gestartet wurden. Informationen zu Pods, die auf Amazon-EC2-Instances gestartet wurden, finden Sie unter Wie kann ich den Pod-Status in Amazon EKS beheben?

Finde den Status deines Pods heraus

1.    Führen Sie den folgenden Befehl aus, um Ihren Pod-Status zu überprüfen

kubectl get pods -n <namespace>

2.    Um weitere Fehlerinformationen zu Ihrem Pod zu erhalten, führen Sie den folgenden Befehl beschreiben aus:

kubectl describe pod YOUR_POD_NAME -n <namespace>

Auf der Grundlage der Ausgabe des Befehls beschreiben finden Sie die folgenden Auflösungen.

Kapazitätsfehler beheben

Wenn Ihre Pods ein Kapazitätsproblem haben, ähnelt die Ausgabe beschreiben der folgenden:

Fargate capacity is unavailable at this time. Please try again later or in a different availability zone

Um den Fehler zu beheben:

  • Versuchen Sie es nach 15-20 Minuten erneut mit dem Pod. Da der Fehler kapazitätsabhängig ist, kann die genaue Zeitspanne variieren.
  • Ändern Sie die Anforderung (CPU/Speicher) innerhalb Ihrer Pod-Spezifikation. Eine neue Kombination aus VCPU/Arbeitsspeicher wird dann vom Fargate-Workflow bereitgestellt.
    Hinweis: Sie werden basierend auf einer Ihrer Kombinationen in Rechnung gestellt. Weitere Informationen dazu, wie die Kombination basierend auf Ihrer Pod-Spezifikation finalisiert wird, finden Sie unter Pod-CPU und Arbeitsspeicher. Wenn Sie einen „kubectl describe node“ -Befehl von Ihrem Terminal/IDE aus ausführen, erhalten Sie einen viel höheren Kombinationswert für VCPU/Speicher. Fargate verfügt nicht immer über Kapazitäten, die auf Ihren Anforderungen basieren, und stellt Ressourcen aus einem Kapazitätspool nach bestem Aufwand bereit. Ihnen wird jedoch nur die Pod-Nutzung und eine entsprechende VCPU-/Speicherkombination in Rechnung gestellt.

CoreDNS-Pods im ausstehenden Zustand auflösen

Wenn Ihre Pods CoreDNS-Pods sind, ähnelt der Name des Pods in der beschreibenden Ausgabe dem Folgenden:

NAME                                     READY   STATUS     RESTARTS      AGE
coredns-6548845887-qk9vf                 0/1     Pending    0             157m

Um dies zu beheben und die Pods dem Fargate-Scheduler neu zuzuweisen: Patchen Sie die CoreDNS-Bereitstellung, um die folgende Standardanmerkung zu entfernen: eks.amazonaws.com/compute-type: ec2.

Auflösen von Pods, die dem Standardplaner zugewiesen sind

Führen Sie den folgenden Befehl aus, um den Scheduler zu ermitteln, dem Ihre Pods zugewiesen sind:

kubectl get pods -o yaml -n <namespace> <pod-name> | grep schedulerName.

Vergewissern Sie sich in der Ausgabe, dass der SchedulerNameDefault-Scheduler ist, aktualisieren Sie die Pod-Spezifikation, und erstellen Sie dann die Pods neu.

Wenn der SchedulerNameFargate-Scheduler ist und Sie immer noch Fehler erhalten, stellen Sie sicher, dass Ihr Pod alle Regeln und Fargate-Überlegungen befolgt. Im folgenden Abschnitt finden Sie weitere Schritte zur Fehlerbehebung.

Fehlerbehebung bei Pods, die Fargate-Scheduler zugewiesen sind

Wenn Ihre Pods dem Fargate-Scheduler zugewiesen sind, sich aber im Status Ausstehend befinden, ähnelt die beschreibende Ausgabe der folgenden:

Events:
Type       Reason              Age                     From     
----       ------              ----                    ----     
Warning    FailedScheduling    2m25s (x301 over 5h3m)  fargate-scheduler

Zur Behebung dieses Problem:

  • Löschen Sie die Pods und erstellen Sie sie neu.
  • Vergewissern Sie sich, dass in der Pod-Spezifikation YAML Folgendes nicht festgelegt ist:
    Knoten-Selektor
    <>Knotenname
    Name des Zeitplaners
    Diese Spezifikationen führen dazu, dass der Fargate-Scheduler den Pod überspringt.
  • Vergewissern Sie sich, dass die in Ihrem Fargate-Profil ausgewählten Subnetze über genügend freie IP-Adressen verfügen, um neue Pods zu erstellen. Jeder Fargate-Knoten verbraucht eine IP-Adresse aus dem Subnetz.
  • Vergewissern Sie sich, dass das NAT-Gateway auf ein öffentliches Subnetz eingestellt ist und an das eine Elastic IP angeschlossen ist.
  • Vergewissern Sie sich, dass die DHCP-Optionssätze, die mit Ihrer VPC verknüpft sind, einen von Amazon bereitgestellten DNS- oder einen gültigen DNS-Server-Hostnamen für Domain-Name-Server haben.
  • Vergewissern Sie sich, dass die DNS-Hostnamen und die DNS-Auflösung für Ihre VPC aktiviert sind.
  • Wenn Sie private Subnetze für Ihre Fargate-Pods mit nur für die Dienstkommunikation konfigurierten VPC-Endpunkte verwenden, stellen Sie sicher, dass Sie über die folgenden Endpunkte mit zulässigen DNS-Namen verfügen:
    ECR – API
    ECR – DKR
    S3-Gateway-Endpunkt
  • Bestätigen Sie, dass die an den VPC-Endpunkt angehängte Sicherheitsgruppe die Kommunikation von Fargate zum und vom API-Server ermöglicht. Die VPC-Endpunktsicherheitsgruppe muss den Zugriff auf Port 443 vom Cluster-VPC-CIDR zulassen. Der private Endpunktzugriff muss auch für Ihren Cluster aktiviert sein.

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?