Cluster-Autoscaler debuggen
Informieren Sie sich über die Optionen, die Ihnen für das Debuggen Ihres Cluster-Autoscalers und zum Eingrenzen der jeweiligen Fehlerquelle zur Verfügung stehen.
Vorbereitende Schritte: Greifen Sie auf Ihren Red Hat OpenShift-Cluster zu.
Schritt 1: Version überprüfen
- Stellen Sie sicher, dass das Add-on „Cluster Autoscaler“ installiert und einsatzbereit ist.
Beispielausgabeibmcloud oc cluster addon ls --cluster CLUSTER_NAMEName Version Health State Health Status cluster-autoscaler 1.0.4 normal Addon Ready - Vergleichen Sie die Version, die in Ihrem Cluster ausgeführt wird, mit der neuesten Version im Änderungsprotokoll des Cluster-Autoscaler-Add-ons.
- Wenn Ihre Version veraltet ist, stellen Sie die neueste Version des Cluster-Autoscalers in Ihrem Cluster bereit.
Schritt 2: Konfiguration überprüfen
Stellen Sie sicher, dass der Cluster-Autoscaler korrekt konfiguriert ist.
-
Rufen Sie die YAML-Konfigurationsdatei der Konfigurationszuordnung des Cluster-Autoscalers ab.
oc get cm iks-ca-configmap -n kube-system -o yaml > iks-ca-configmap.yaml -
Stellen Sie im Feld
data.workerPoolsConfig.jsonsicher, dass die richtigen Worker-Pools mit der Mindestgröße und der maximalen Größe pro Worker-Pool aktiviert sind."name": "<worker_pool_name>": Der Name des Worker-Pools in der ConfigMap muss exakt mit dem Namen des Worker-Pools in Ihrem Cluster übereinstimmen. Mehrere Worker-Pools müssen durch Kommas getrennt werden. Führen Sieibmcloud oc worker-pool ls -c <cluster_name_or_ID>aus, um den Namen der Cluster-Worker-Pools zu überprüfen."minSize": 2: Im Allgemeinen mussminSizeden Wert2haben oder größer sein."maxSize": 3: Der Wert fürmaxSizemuss größer oder gleich dem Wert fürminSizesein."enabled": true: Legen Sie den Werttruefest, um die automatische Skalierung des Worker-Pools zu aktivieren.
data: workerPoolsConfig.json: | [{"name": "default", "minSize": 2, "maxSize": 3, "enabled": true }] -
Prüfen Sie, ob im Feld
metadata.annotations.workerPoolsConfigStatusdie Fehlernachricht FAILED CODE enthalten ist. Führen Sie alle Fehlerbehebungsmaßnahmen aus, die in der Fehlernachricht aufgeführt sind. Beispiel: Sie erhalten möglicherweise eine Nachricht ähnlich der folgenden. Dabei müssen Sie über die richtigen Berechtigungen für die Ressourcengruppe verfügen, in der sich der Cluster befindet.annotations: workerPoolsConfigStatus: '{"1:3:default":"FAILED CODE: 400 ... \"description\":\"Unable to validate the request with resource group manager.\",\"type\":\"Authentication\\"recoveryCLI\":\"To list available resource groups, run ''ibmcloud resource groups''. Make sure that your cluster and the other IBM Cloud resources that you are trying to use are in the same resource group. Verify that you have permissions to work with the resource group. If you think that the resource group is set up correctly and you still can't use it, contact IBM Cloud support.\"}"}'
Schritt 3: Status des Cluster-Autoscalers überprüfen
Überprüfen Sie den Status des Cluster-Autoscalers.
oc describe cm -n kube-system cluster-autoscaler-status
status: Prüfen Sie die Statusnachricht auf weitere Fehlerbehebungsinformationen (falls vorhanden).Health: Überprüfen Sie den Gesamtzustand des Cluster-Autoscaler hinsichtlich Fehler oder Störungen.ScaleUp: Überprüfen Sie den Stand der Skalierungsmaßnahmen. Im Allgemeinen gilt: Wenn die Anzahl der bereiten und registrierten Worker-Knoten übereinstimmt, ist die Skalierung nach oben „NoActivity“, da Ihr Worker-Pool über genügend Worker-Knoten verfügt.ScaleDown: Überprüfen Sie den Stand der Maßnahmen zur Verkleinerung. Wenn der Cluster-AutoscalerNoCandidatesangibt, wird Ihr Worker-Pool nicht herunterskaliert, weil keiner der Workerknoten entfernt werden kann, ohne die für Ihre Workloads erforderlichen Ressourcen zu mindern.Events: Prüfen Sie die Ereignisse auf weitere Fehlerbehebungsinformationen (falls vorhanden).
Beispiel für einen einwandfreien Status des Cluster-Autoscalers
Data
====
status:
----
Cluster-autoscaler status at 2020-02-04 19:51:50.326683568 +0000 UTC:
Cluster-wide:
Health: Healthy (ready=2 unready=0 notStarted=0 longNotStarted=0 registered=2longUnregistered=0)
LastProbeTime: 2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleUp: NoActivity (ready=2 registered=2)
LastProbeTime: 2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleDown: NoCandidates (candidates=0)
LastProbeTime: 2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
Events: none
Schritt 4: Cluster-Autoscaler-Pod überprüfen
Prüfen Sie den Zustand des Cluster-Autoscaler-Pods.
-
Rufen Sie den Cluster-Autoscaler-Pod ab. Wenn der Status nicht Running ist, beschreiben Sie den Pod.
oc get pods -n kube-system | grep ibm-iks-cluster-autoscaler -
Beschreiben Sie den Cluster-Autoscaler-Pod. Prüfen Sie den Abschnitt Events auf weitere Fehlerbehebungsinformationen.
oc describe pod -n kube-system <pod_name> -
Prüfen Sie im Abschnitt Command, ob die angepasste Cluster-Autoscaler-Konfiguration mit den von Ihnen erwarteten Werten übereinstimmt, z. B.
scale-down-delay-after-add.Command: ./cluster-autoscaler --v=4 --balance-similar-node-groups=true --alsologtostderr=true --stderrthreshold=info --cloud-provider=IKS --skip-nodes-with-local-storage=true --skip-nodes-with-system-pods=true --scale-down-unneeded-time=10m --scale-down-delay-after-add=10m --scale-down-delay-after-delete=10m --scale-down-utilization-threshold=0.5 --scan-interval=1m --expander=random --leader-elect=false --max-node-provision-time=120m
Schritt 5: Podprotokolle durchsuchen
Durchsuchen Sie die Protokolle des Cluster-Autoscaler-Pods nach relevanten Meldungen, beispielsweise Fehlermeldungen wie „ lastScaleDownFailTime “, „ Final scale-up plan “ oder Ereignissen des Cluster-Autoscalers.
Falls Ihr Cluster-Autoscaler-Pod nicht ordnungsgemäß funktioniert und keine Protokolle übertragen kann, überprüfen Sie Ihre „ IBM Cloud Logs “-Instanz auf die Protokolle des Pods. Möglicherweise stehen keine Protokolle zur Überprüfung zur Verfügung, wenn Ihr Clusteradministrator IBM Cloud Logs nicht für Ihren Cluster aktiviert hat.
oc logs -n kube-system <pod_name> -c ibm-iks-cluster-autoscaler > logs.txt
Schritt 6: Starten Sie den Pod neu
Wenn Sie keine Fehler oder Fehlernachrichten finden und die Protokollierung bereits aktiviert ist, starten Sie den Cluster-Autoscaler-Pod erneut. Bei der Bereitstellung wird der Pod erneut erstellt.
oc delete pod -n kube-system <pod_name>
Schritt 6: Inaktivieren und erneut aktivieren
Optional: Wenn Sie die Debugschritte ausgeführt haben und Ihr Cluster immer noch nicht skaliert wird, können Sie den Autoscaler inaktivieren und erneut aktivieren, indem Sie die Konfigurationszuordnung bearbeiten.
-
Bearbeiten Sie die Konfigurationszuordnung
iks-ca-configmap.oc edit cm iks-ca-configmap -n kube-systemBeispielausgabe:
apiVersion: v1 data: workerPoolsConfig.json: | [{"name": "default", "minSize": 2, "maxSize": 5, "enabled": true }] kind: ConfigMap metadata: annotations: workerPoolsConfigStatus: '{"2:5:default":"SUCCESS"}' creationTimestamp: "2020-03-24T17:44:35Z" name: iks-ca-configmap namespace: kube-system resourceVersion: "40964517" selfLink: /api/v1/namespaces/kube-system/configmaps/iks-ca-configmap uid: 11a1111a-aaaa-1a11-aaa1-aa1aaaa11111 -
Legen Sie den Parameter
enabledauffalsefest und speichern Sie Ihre Änderungen. -
Bearbeiten Sie die Datei
iks-ca-configmaperneut. Setzen Sie den Parameter "enabled" auftrueund speichern Sie Ihre Änderungen.oc edit cm iks-ca-configmap -n kube-system -
Wenn Ihr Cluster nach dem Inaktivieren und erneuten Aktivieren des Cluster-Autoscalers weiterhin nicht skaliert wird, können Sie die Parameter
minSizeodermaxSizeiniks-ca-configmapbearbeiten. Manchmal wird der Cluster-Autoscaler durch das Bearbeiten der WorkerparameterminSizeundmaxSizeerfolgreich erneut gestartet.oc edit cm iks-ca-configmap -n kube-system -
Bearbeiten Sie die Parameter
minSizeodermaxSizeund speichern Sie Ihre Änderungen.
Schritt 7: Überprüfen Sie, ob das Problem behoben ist
Überwachen Sie die Cluster-Autoscaler-Aktivitäten in Ihrem Cluster, um festzustellen, ob das Problem behoben ist. Wenn weiterhin Fehler auftreten, finden Sie weitere Informationen unter Feedback, Fragen und Unterstützung.