Auf dieser Seite wird erläutert, wie Sie eine IP-Rotation für die Steuerungsebene in Google Kubernetes Engine-Clustern (GKE) durchführen.
Übersicht
Mit einer IP-Rotation können Sie die IP-Adresse ändern, die Ihre Steuerungsebene verwendet, um Anfragen von der Kubernetes API zu verarbeiten. Die IP-Adresse der Steuerungsebene ist statisch und ändert sich nur, wenn Sie eine IP-Rotation ausführen.
Durch die IP-Rotation werden das SSL-Zertifikat und die Cluster-Zertifizierungsstelle (CA) geändert. Dadurch kann die vorherige Adresse nur schwer mit der neuen Adresse in Verbindung gebracht werden.
Die IP-Rotation erfolgt ebenfalls im Rahmen der Rotation von Anmeldedaten.
Vorbereitung
Führen Sie die folgenden Schritte durch, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API aktivieren
- Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit
gcloud components update
ab.
IP-Rotation durchführen
Eine IP-Rotation ist ein Vorgang, der aus mehreren Schritten besteht.
- Wenn Sie eine IP-Rotation einleiten, verwendet Ihre Steuerungsebene neben der ursprünglichen IP-Adresse noch eine neue IP-Adresse.
- GKE erstellt Ihre Knotenpools neu, um die neue IP-Adresse zu verwenden. Sie können Ihre Knotenpools auch manuell neu erstellen. Dazu führen Sie ein Upgrade der Knotenpoolversion auf dieselbe GKE-Version durch, die die Knoten bereits ausführen.
- Nachdem Sie eine Rotation eingeleitet haben, müssen Sie die API-Clients Ihres Clusters aktualisieren (z. B. Entwicklungsmaschinen mit der
kubectl
-Befehlszeile), um mit der Steuerungsebene über die neue IP-Adresse kommunizieren zu können. - Nach Abschluss der Rotation beendet die Steuerungsebene die Bereitstellung von Traffic über die vorherige IP-Adresse.
Wenn Sie eine Rotation von IP-Adressen starten, erstellt GKE die Knoten für Sie neu. Bei größeren Ereignissen wie der Google Cloud Next können wir jedoch die automatische Neuerstellung von Knoten pausieren, damit es zu keinen Unterbrechungen kommt. Wenn Sie eine Rotation von IP-Adressen nicht innerhalb von sieben Tagen nach Beginn durchführen, versucht GKE, die Rotation für Sie abzuschließen. Wenn Knoten in Ihrem Cluster noch die vorherige IP-Adresse verwenden, schlägt der automatische Abschluss fehl. Sie sollten die Rotation von IP-Adressen nach Beginn der Rotation manuell verfolgen und abschließen. Verlassen Sie sich nicht auf die automatische Vervollständigung. Diese ist eine Best-Effort-Maßnahme.
Rotation einleiten
Führen Sie den folgenden Befehl aus, um eine IP-Rotation einzuleiten:
gcloud container clusters update CLUSTER_NAME \ --start-ip-rotation
Ersetzen Sie
CLUSTER_NAME
durch den Namen des Clusters.Die entsprechende Ausgabe sieht etwa so aus:
This will start an IP Rotation on cluster CLUSTER_NAME. The master will be updated to serve on a new IP address in addition to the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes to point to the new IP address. If maintenance window is used, nodes are not recreated until a maintenance window occurs. See documentation on how to manually update nodes. This operation is long-running and will block other operations on the cluster (including delete) until it has run to completion. Do you want to continue (Y/n)?
Mit diesem Befehl wird die Steuerungsebene so konfiguriert, dass sie zwei IP-Adressen verwendet, die ursprüngliche Adresse und eine neue Adresse.
Bestätigen Sie die Rotation und lassen Sie die Shell geöffnet, um den Vorgang abzuschließen.
Knoten neu erstellen
Nach der Neukonfiguration des API-Servers für die Bereitstellung einer neuen IP-Adresse aktualisiert GKE automatisch Ihre Knoten auf die neue IP-Adresse. GKE aktualisiert alle Ihre Knoten auf die nächste unterstützte Knotenversion, wodurch die Knoten neu erstellt werden. Weitere Informationen finden Sie unter Knotenpool-Upgrades.
Standardmäßig schließt GKE die Rotation von IP-Adressen sieben Tage nach dem Start automatisch ab. Wenn ein aktives Wartungsfenster oder ein aktiver Ausschluss in Ihrem Cluster verhindert, dass GKE während dieses Zeitraums bestimmte Knoten neu erstellt, kann die IP-Adressen-Rotation nicht abgeschlossen werden.
Wenn Sie Wartungsausschlüsse oder Wartungsfenster verwenden, die zu einem Fehlschlagen der Rotation führen können, führen Sie ein manuelles Upgrade des Clusters durch, um die Neuerstellung des Knotens zu erzwingen:
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION
Ersetzen Sie
VERSION
durch die GKE-Version, die der Cluster bereits verwendet.Weitere Informationen finden Sie unter Hinweise für Wartungsfenster.
Fortschritt der Neuerstellung des Knotenpools prüfen
Führen Sie zur Überwachung des Rotationsvorgangs den folgenden Befehl aus:
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
Dieser Befehl gibt die Vorgangs-ID des Knotenupgrades zurück.
Um den Vorgang abzufragen, übergeben Sie die Vorgangs-ID an den folgenden Befehl:
gcloud container operations wait OPERATION_ID
Knotenpools werden jeweils einzeln neu erstellt und jeder Knotenpool hat einen eigenen Vorgang. Wenn Sie mehrere Knotenpools nutzen, verwenden Sie diese Anweisungen, um alle einzelnen Vorgänge abzufragen.
API-Clients aktualisieren
Nachdem Sie die IP-Rotation eingeleitet haben, müssen Sie alle API-Clients außerhalb des Clusters (z. B. kubectl
auf Entwicklermaschinen) so aktualisieren, dass sie auf die neue IP-Adresse verweisen.
Führen Sie den folgenden Befehl für jeden API-Client aus, um Ihre API-Clients zu aktualisieren:
gcloud container clusters get-credentials CLUSTER_NAME
Hartcodierte IP-Adressen und Firewallregeln aktualisieren
Wenn Sie die IP-Adresse der Steuerungsebene in Ihrer Umgebung hartcodiert haben oder Firewallregeln haben, die auf die IP-Adresse der Steuerungsebene abzielen, aktualisieren Sie die Adressen auf die neue IP-Adresse. Wenn Sie die Rotation abschließen, ohne die IP-Adressen in Anwendungen und Firewallregeln zu aktualisieren, können diese Ressourcen unterbrochen werden, wenn GKE nicht mehr unter der vorherigen IP-Adresse der Steuerungsebene bereitgestellt wird.
Rotation abschließen
Nachdem Sie API-Clients außerhalb des Clusters aktualisiert haben, schließen Sie die Rotation ab, um die Steuerungsebene so zu konfigurieren, dass sie nur die neue IP-Adresse verwendet.
Führen Sie den folgenden Befehl aus, um die Rotation abzuschließen:
gcloud container clusters update CLUSTER_NAME \
--complete-ip-rotation
Die Ausgabe sieht in etwa so aus:
This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.
Wenn die Rotation der IP-Adresse nicht abgeschlossen wird und eine Fehlermeldung ähnlich der folgenden zurückgegeben wird, lesen Sie die Informationen unter Fehlerbehebung:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
Nächste Schritte
- Mehr über Alias-IPs erfahren
- Mehr über den IP-Masquerade-Agent erfahren
- Autorisierte Netzwerke für Masterzugriff erstellen