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:
Ö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.
Fügen Sie beliebig viele zusätzliche statische IP-Blöcke hinzu. Ein IP-Block besteht aus den Feldern
gateway
,hostname
,ip
undnetmask
.
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:
Prüfen Sie den MachineDeployment-Status des Clusters, um festzustellen, ob Ereignisse oder Fehlermeldungen vorliegen:
kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME]
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:
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
Ö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