AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie behebe ich API-Fehler, wenn ich meine Cluster-Version in Amazon EKS aktualisiere?
Ich habe einen Fehler- oder Warnstatus erhalten, der besagt, dass mein Cluster eine veraltete API verwendet, die ich vor dem nächsten Upgrade korrigieren muss.
Kurzbeschreibung
Während eines Cluster-Versions-Upgrades wird auf der Registerkarte Upgrade Insights in der Amazon EKS-Konsole der Status verschiedener Kubernetes-Komponenten angezeigt. Während des Upgrade-Vorgangs für verschiedene Komponenten werden die folgenden Status angezeigt:
- Der Status Fehler zeigt an, dass der Cluster nach dem Upgrade des Clusters Aufrufe ablehnt, die auf die spezifische API-Version verweisen.
- Der Status Warnung zeigt an, dass ein Problem vorliegt, aber es sind keine sofortigen Maßnahmen erforderlich. Dieser Status kann auftreten, wenn geplant ist, dass die Kubernetes-Ressource in einer Version entfernt wird, die mindestens 2 Versionen älter als die aktuelle Cluster-Version ist.
- Der Status Bestanden zeigt, dass die Komponente alle Upgrade-Prüfungen und Validierungen bestanden hat. Es sind keine Maßnahmen erforderlich.
- Der Status Unbekannt zeigt an, dass das Upgrade-System den Status der Komponente nicht ermitteln kann, möglicherweise aufgrund fehlender Informationen oder eines unklaren Zustands während des Vorgangs. Möglicherweise musst du Maßnahmen ergreifen.
Bevor du dein Cluster aktualisierst, überprüfe Komponenten mit dem Status Fehler oder Warnung, um alle Probleme zu verstehen und zu lösen.
Lösung
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Status der APIs überprüfen
Verwende entweder die AWS-Managementkonsole oder die AWS CLI, um den Status veralteter APIs in deinem Cluster zu überprüfen.
AWS-Managementkonsole
Führe die folgenden Schritte aus:
- Öffne die Amazon EKS-Konsole.
- Wähle deinen Cluster-Namen aus.
- Wähle unter Cluster-Informationen die Option Upgrade-Insights aus.
- Überprüfe alle veralteten API-Warnungen oder Fehlermeldungen unter Insight-Status.
AWS CLI
Führe den folgenden Befehl aus, um alle Upgrade-Insight-Details in der YAML-Datei aufzulisten:
[+] aws eks list-insights --cluster-name your-cluster-name --region your-region-name --output yaml >> insight.yaml
Hinweis: Ersetze your-cluster-name und your-region-name durch die Werte aus deinem Cluster.
Speichere die Ausgabe in deinem bevorzugten Dateiformat.
Führe den folgenden Befehl aus, um die Insights so zu filtern, dass nur Fehler angezeigt werden:
[+] aws eks list-insights --cluster-name your-cluster-name --region your-region-name --filter categories=UPGRADE_READINESS,statuses=ERROR
Hinweis: Ersetze your-cluster-name und your-region-name durch die Werte aus deinem Cluster.
Die Ausgabe wird im Textformat gespeichert.
Behebung eines veralteten API-Statusfehlers
Wenn auf der Registerkarte Upgrade-Insights der Status angezeigt wird, dass dein Cluster eine veraltete API hat, erhältst du möglicherweise eine Fehlermeldung. Wenn beispielsweise ein PDB-API-Fehler (Pod Disruption Budget) auftritt, erhältst du möglicherweise eine Meldung, die wie folgt aussieht:
"EKS using deprecated api version "/apis/policy/v1beta1/poddisruptionbudgets" and needs to replace it with "/apis/policy/v1/poddisruptionbudgets" before upgrading EKS cluster."
Gehe wie folgt vor, um diesen Fehler zu beheben:
-
Führe den folgenden Befehl aus, um die PDBs aufzulisten, die der Cluster verwendet:
kubectl get pdb -A -
Führe den folgenden Befehl aus, um die Ausgabe für PDBs anzuzeigen, die entweder die neueste API-Version oder eine veraltete Version verwenden:
kubectl get pdb your-pdb-name -n your-namespace -o yamlHinweis: Ersetze your-pdb-name durch deine PDB und ersetze your-namespace durch deinen Namespace.
-
Wenn eine deiner PDBs eine veraltete API-Version verwendet, aktualisiere sie, um die neueste API-Version in deinen YAML-Konfigurationsdateien zu verwenden. Weitere Informationen findest du auf der Kubernetes-Website unter Angeben eines Unterbrechungsbudgets für deine Anwendung.
-
Wenn du die Entität, die die veraltete API aufruft, nicht ermitteln kannst, weil es sich um einen bestimmten Benutzeragenten wie kube-apiserver, newrelic oder kube-controller-manager, überprüfe die kube-api-server-audit-Protokolldatei deines EKS-Clusters, um die Entität zu ermitteln.
Hinweis: In deinem EKS-Cluster müssen Cloudwatch-Auditprotokolle aktiviert sein, um die folgende Abfrage ausführen zu können. -
Öffne die Amazon-CloudWatch-Konsole.
-
Wähle Protokoll-Insights aus und wähle dann deine Protokollgruppe aus dem Menü aus. Zum Beispiel -/aws/eks/eksworkshop/cluster.
-
Filtere die Uhrzeit und das Datum, um die Uhrzeit der letzten Anfrage anzuzeigen.
Abfrage:fields @logStream, @timestamp, responseStatus.code, @message | filter @logStream like /^kube-apiserver-audit/ | filter requestURI like /\/apis\/autoscaling\/v2beta2\/horizontalpodautoscalers/ ### ---> Replace this with your Deprecated API's | sort @timestamp desc | limit 1000Ausgabe:
{ "kind":"Event", "apiVersion":"audit.k8s.io/v1", "level":"Request", "auditID":"bd2b2b0c-8556-4468-8b35-91e2e78759a6", "stage":"ResponseComplete", "requestURI":"/apis/autoscaling/v2beta2/horizontalpodautoscalers?allowWatchBookmarks=true\u0026resourceVersion=118801277\u0026timeout=5m51s\u0026timeoutSeconds=351\u0026watch=true", "verb":"watch", "user":{ "username":"system:serviceaccount:newrelic:newrelic-kube-state-metrics", "uid":"9b97a09a-cf70-4fe2-8fd8-6c87110ce672", "groups":[ "system:serviceaccounts", "system:serviceaccounts:newrelic", "system:authenticated" ], "extra":{ "authentication.kubernetes.io/pod-name":[ "newrelic-kube-state-metrics-5bb6ccc94d-8nj9v" ], "authentication.kubernetes.io/pod-uid":[ "5b156744-00b6-4dfb-a998-a32140409b8e" ] } }, "sourceIPs":[ "10.62.98.22" ], "userAgent":"v2.6.0", "objectRef":{ "resource":"horizontalpodautoscalers", "apiGroup":"autoscaling", "apiVersion":"v2beta2" }, "responseStatus":{ "metadata":{ }, "code":200 }, "requestReceivedTimestamp":"2024-12-13T20:13:04.438616Z", "stageTimestamp":"2024-12-13T20:18:55.441744Z", "annotations":{ "authorization.k8s.io/decision":"allow", "authorization.k8s.io/reason":"RBAC: allowed by ClusterRoleBinding \"newrelic-kube-state-metrics\" of ClusterRole \"newrelic-kube-state-metrics\" to ServiceAccount \"newrelic-kube-state-metrics/newrelic\"", "k8s.io/deprecated":"true", "k8s.io/removed-release":"1.26" } } -
Um die veraltete API mit der neuesten API zu aktualisieren, führe eine der folgenden Aktionen aus:
Wenn der Benutzername als cluster-autoscaler angezeigt wird, aktualisiere deinen Cluster-Autoscaler auf die neueste Version.
Wenn der Benutzername als newrelic-kube-state-metric angezeigt wird, aktualisiere den Cluster bei separater Installation auf die neuere kube-state-metrics-Version. Aktualisiere alternativ das New Relic-Plugin, falls kube-state-metrics gebündelt ist.
Hinweis: AWS scannt die veraltete API der letzten 30 Tage. Nachdem du cluster-autoscaler oder newrelic-kube-state-metric aktualisiert hast, kann es bis zu 30 Tage dauern, bis AWS die veraltete API scannt und den Status auf der Registerkarte Update-Insights aktualisiert.
- Themen
- Containers
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Jahren
AWS OFFICIALAktualisiert vor 4 Jahren