Größe eines Nutzerclusters anpassen

Auf dieser Seite wird beschrieben, wie Sie die Größe eines GKE On-Prem-Nutzerclusters anpassen. Die Größenanpassung eines Nutzerclusters bedeutet das Hinzufügen oder Entfernen von Knoten aus diesem Cluster. Wenn Sie Knoten aus einem Cluster entfernen, sollten Sie die IP-Adressen dieses Clusters freigeben, damit sie von anderen Knoten verwendet werden können. Für das Hinzufügen von Knoten müssen IP-Adressen für diese Knoten verfügbar sein.

Sie passen die Größe eines Nutzerclusters an, indem Sie die replicas-Felder der MachineDeployment-Konfiguration des Clusters ändern. Mit kubectl patch können Sie die Konfiguration über die Befehlszeile aktualisieren.

Informationen zu Maximal- und Minimallimits für Nutzercluster finden Sie unter Kontingente und Limits.

Prüfen, ob genügend IP-Adressen verfügbar sind

Wenn Sie einem Cluster weitere Knoten hinzufügen, achten Sie darauf, dass der Cluster genügend IP-Adressen hat. Das Prüfen der Verfügbarkeit von genügend IP-Adressen hängt davon ab, ob der Cluster einen DHCP-Server oder statische IP-Adressen verwendet.

DHCP

Wenn der Cluster DHCP verwendet, prüfen Sie, ob der DHCP-Server in dem Netzwerk, in dem die Knoten erstellt werden, über genügend IP-Adressen verfügt. Es sollten mehr IP-Adressen vorhanden sein, als Knoten im Nutzercluster ausgeführt werden.

Statische IP-Adressen

Wenn der Cluster statische IP-Adressen verwendet, prüfen Sie, ob Sie ihm genügend IP-Adressen zugewiesen haben:

kubectl get cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \
-n [USER_CLUSTER_NAME] [USER_CLUSTER_NAME] -o yaml

Dabei gilt:

  • [ADMIN_CLUSTER_KUBECONFIG] weist kubectl an, die kubeconfig-Datei des Administratorclusters zu verwenden, mit der Nutzerclusterkonfigurationen aufgerufen und/oder geändert werden.
  • -n [USER_CLUSTER_NAME] weist kubectl an, in einem Namespace zu suchen, der nach dem Nutzercluster benannt ist.
  • [USER_CLUSTER_NAME] -o yaml teilt kubectl mit, für welchen Nutzercluster Sie den Befehl ausführen. -o yaml zeigt die Konfiguration des Nutzerclusters an.

Suchen Sie in der Ausgabe des Befehls nach dem Feld reservedAddresses. Das Feld sollte mehr IP-Adressen enthalten, als Knoten im Nutzercluster ausgeführt werden.

Wenn Sie dem Feld reservedAddresses weitere Adressen hinzufügen möchten, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie die Clusterressource des Nutzerclusters zum Bearbeiten:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] edit cluster [USER_CLUSTER_NAME] \
    -n [USER_CLUSTER_NAME]
    

    Die Clusterkonfiguration wird im Standardeditor Ihrer Shell geöffnet.

  2. Fügen Sie beliebig viele zusätzliche statische IP-Blöcke hinzu. Ein IP-Block besteht aus den Feldern gateway, hostname, ip und netmask.

Unten sehen Sie ein Beispiel für ein reservedAddresses-Feld mit vier hervorgehobenen statischen IP-Blöcken:

...
networkSpec:
  dns:
  - 172.x.x.x
  ntp: 129.x.x.x
  reservedAddresses:
  - gateway: 100.x.x.x
    hostname: host-1
    ip: 100.x.x.x
    netmask: x
  - gateway: 100.x.x.x
    hostname: host-2
    ip: 100.x.x.x
    netmask: x
  - gateway: 100.x.x.x
    hostname: host-3
    ip: 100.x.x.x
    netmask: x
  - gateway: 100.x.x.x
    hostname: host-4
    ip: 100.x.x.x
    netmask: x
...

Hinweis

Exportieren Sie eine Umgebungsvariable KUBECONFIG, die auf die kubeconfig-Datei des Nutzerclusters verweist, dessen Größe Sie anpassen möchten:

export KUBECONFIG=[USER_CLUSTER_KUBECONFIG]

Größe eines Nutzerclusters anpassen

Sie passen die Größe eines Clusters an, indem Sie die MachineDeployment-Ressource des Nutzerclusters bearbeiten. Führen Sie den folgenden Befehl aus, um den Namen der MachineDeployment-Ressource des Nutzerclusters zu ermitteln:

kubectl get machinedeployments

Das MachineDeployment des Nutzerclusters enthält den Namen des Nutzerclusters.

Um die Größe des Nutzerclusters zu ändern, müssen Sie die MachineDeployment-Konfiguration des Clusters patchen. Sie ändern den Wert im Feld replicas der Konfiguration, der angibt, wie viele Knoten der Cluster ausführen soll:

kubectl patch machinedeployment [MACHINE_DEPLOYMENT_NAME] -p "{\"spec\": {\"replicas\": [INT] }}" --type=merge

Dabei ist [INT] die Anzahl der Knoten, die der Nutzercluster ausführen soll.

Größenanpassung prüfen

Führen Sie folgenden Befehl aus, um zu prüfen, ob die Größenanpassung erfolgreich war:

kubectl get nodes
kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME] | grep Replicas

Die Anzahl der ausgewählten Knoten sollte in der Ausgabe dieser Befehle angegeben werden.

Problembehebung

Weitere Informationen finden Sie unter Fehlerbehebung.

Anpassen der Größe eines Nutzerclusters schlägt fehl

Symptome

Ein Vorgang zum Anpassen der Größe eines Nutzerclusters schlägt fehl.

Mögliche Ursachen

Mehrere Faktoren können dazu führen, dass die Größenanpassung fehlschlägt.

Lösung

Wenn die Größenanpassung fehlschlägt, führen Sie die folgenden Schritte aus:

  1. Prüfen Sie den MachineDeployment-Status des Clusters, um festzustellen, ob Ereignisse oder Fehlermeldungen vorliegen:

    kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME]
  2. Prüfen Sie, ob auf den neu erstellten Maschinen Fehler vorliegen:

    kubectl describe machine [MACHINE_NAME]

Fehler: "no addresses can be allocated"

Symptome

Nach der Anpassung der Größe eines Nutzerclusters zeigt kubectl describe machine [MACHINE_NAME] den folgenden Fehler an:

Events:
   Type     Reason  Age                From                    Message
   ----     ------  ----               ----                    -------
   Warning  Failed  9s (x13 over 56s)  machineipam-controller  ipam: no addresses can be allocated
   
Mögliche Ursachen

Für den Nutzercluster sind nicht genügend IP-Adressen verfügbar.

Lösung

Weisen Sie weitere IP-Adressen für den Cluster zu. Löschen Sie dann die betroffene Maschine:

kubectl delete machine [MACHINE_NAME]

Wenn der Cluster richtig konfiguriert ist, wird eine Ersatzmaschine mit einer IP-Adresse erstellt.

Ausreichende Anzahl von zugewiesenen IP-Adressen, aber Maschine kann sich nicht beim Cluster registrieren

Symptome

Dem Netzwerk wurden genügend Adressen zugewiesen, aber die Maschine kann sich trotzdem nicht beim Nutzercluster registrieren.

Mögliche Ursachen:

Möglicherweise liegt ein IP-Adresskonflikt vor. Die IP-Adresse wird eventuell bereits von einer anderen Maschine oder Ihrem Load-Balancer verwendet.

Lösung

Prüfen Sie, ob die IP-Adresse der betroffenen Maschine nicht schon verwendet wird. Wenn es einen Konflikt gibt, müssen Sie den Konflikt in Ihrer Umgebung lösen.

Neue Knoten erstellt, aber nicht fehlerfrei

Symptome

Neue Knoten registrieren sich nicht auf der Steuerungsebene des Nutzerclusters, wenn Sie den manuellen Load-Balancing-Modus verwenden.

Mögliche Ursachen

Die Ingress-Validierung im Knoten, die den Startvorgang der Knoten blockiert, kann aktiviert sein.

Lösung

Führen Sie Folgendes aus, um die Prüfung zu deaktivieren:

kubectl patch machinedeployment [MACHINE_DEPLOYMENT_NAME] -p '{"spec":{"template":{"spec":{"providerSpec":{"value":{"machineVariables":{"net_validation_ports": null}}}}}}}' --type=merge

Clusterprobleme mit gkectl diagnostizieren

Verwenden Sie gkectl diagnose-Befehle, um Clusterprobleme zu identifizieren und Clusterinformationen an Google zu senden. Siehe Clusterprobleme diagnostizieren.

gkectl-Befehle umfassend ausführen

-v5

gkectl-Fehler in stderr protokollieren

--alsologtostderr

gkectl-Logs auf der Administratorworkstation suchen

Auch wenn Sie nicht die Debugging-Flags übergeben, können Sie gkectl-Logs im folgenden Verzeichnis der Administrator-Workstation aufrufen:

/home/ubuntu/.config/gke-on-prem/logs

Cluster-API-Logs im Administratorcluster suchen

Wenn eine VM nach dem Start der Administrator-Steuerungsebene nicht gestartet wird, versuchen Sie, dies durch Untersuchen der Logs der Cluster-API-Controller im Administratorcluster zu beheben:

  1. Suchen Sie im Namespace kube-system den Namen des Cluster-API-Controller-Pods, wobei [ADMIN_CLUSTER_KUBECONFIG] der Pfad zur kubeconfig-Datei des Administratorclusters ist:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
  2. Öffnen Sie die Logs des Pods, wobei [POD_NAME] der Name des Pods ist. Verwenden Sie optional für die Fehlersuche grep oder ein ähnliches Tool:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager