Auf dieser Seite wird gezeigt, wie Sie einen routenbasierten Cluster in Google Kubernetes Engine erstellen.
Übersicht
In Google Kubernetes Engine lassen sich Cluster anhand der Methode unterscheiden, mit der sie Traffic von einem Pod zu einem anderen weiterleiten. Ein Cluster, der Google Cloud-Routen verwendet, wird als routenbasierter Cluster bezeichnet. Ein Cluster, der auf Alias-IP-Adressen zurückgreift, wird als VPC-nativer Cluster bezeichnet.
VPC nativ ist der empfohlene Typ und wird standardmäßig für neue Cluster verwendet. Sie müssen die VPC-native Option explizit deaktivieren, um einen routenbasierten Cluster zu erstellen.
Vorbereitung
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Achten Sie darauf, dass die Google Kubernetes Engine API aktiviert ist. Aktivieren Sie Google Kubernetes Engine API
- Prüfen Sie, ob das Cloud SDK installiert ist.
Mit den folgenden Methoden können Sie die gcloud
-Einstellungen festlegen:
- Verwenden Sie
gcloud init
, wenn Sie die Standardeinstellungen ansehen möchten. - Verwenden Sie
gcloud config
, um Ihre Projekt-ID, Zone und Region individuell festzulegen.
gcloud init verwenden
Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify
location
erhalten, führen Sie diesen Abschnitt aus.
-
Führen Sie
gcloud init
aus und folgen Sie der Anleitung:gcloud init
Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag
--console-only
verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:gcloud init --console-only
- Folgen Sie der Anleitung, um
gcloud
zur Verwendung Ihres Google Cloud-Kontos zu autorisieren. - Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
- Wählen Sie ein Google Cloud-Projekt aus.
- Wählen Sie eine Compute Engine-Standardzone aus.
gcloud config verwenden
- Legen Sie Ihre standardmäßige Projekt-ID fest:
gcloud config set project project-id
- Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Compute-Standardzone fest:
gcloud config set compute/zone compute-zone
- Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Standardregion für Compute Engine fest:
gcloud config set compute/region compute-region
- Aktualisieren Sie
gcloud
auf die neueste Version:gcloud components update
Routenbasierten Cluster erstellen
Sie können einen routenbasierten Cluster mit dem gcloud
-Tool oder der Google Cloud Console erstellen.
gcloud
Zum Erstellen eines routenbasierten Clusters fügen Sie im Befehl zur Clustererstellung das Flag --no-enable-ip-alias
hinzu:
gcloud container clusters create [CLUSTER_NAME] --no-enable-ip-alias
Dabei ist [CLUSTER_NAME]
der Name, den Sie für Ihren Cluster auswählen.
Console
Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.
Klicken Sie auf Cluster erstellen.
Geben Sie einen Namen für den Cluster ein.
Klicken Sie im Navigationsbereich unter Cluster auf Netzwerke.
Entfernen Sie unter Erweiterte Netzwerkoptionen das Häkchen aus dem Kästchen VPC-natives Traffic-Routing aktivieren (verwendet Alias-IP-Adresse).
Klicken Sie auf Erstellen.
Prüfen, ob der Cluster Routen verwendet
gcloud
Listen Sie die Clusterknoten auf:
kubectl get nodes
Die Ausgabe zeigt die Namen der Knoten:
NAME STATUS ... AGE VERSION gke-xxx-default-pool-83e239a7-kcg8 Ready ... 42m v1.9.7-gke.6 gke-xxx-default-pool-83e239a7-qm6b Ready ... 42m v1.9.7-gke.6 gke-xxx-default-pool-83e239a7-wnrq Ready ... 42m 1.9.7-gke.6
Listen Sie die Routen auf:
gcloud compute routes list
Suchen Sie in der Ausgabe unter der Spalte NEXT_HOP nach dem Namen eines Ihrer Clusterknoten:
NAME NETWORK DEST_RANGE NEXT_HOP ... [ROUTE_NAME] default 10.24.0.0/24 [YOUR_NODE_NAME] ...
In der Ausgabe sehen Sie, dass die Route einen nächsten Hop für jedes Paket bereitstellt, das für einen bestimmten Pod-Adressbereich bestimmt ist.
Console
Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.
Klicken Sie auf den Namen Ihres Clusters, um eine Seite mit Details zum Cluster zu öffnen.
Suchen Sie unter Knotenpools den Eintrag Instanzgruppen und klicken Sie auf den Namen Ihrer Instanzgruppe. Die Seite Instanzgruppen wird mit einer Liste der Clusterknoten geöffnet. Notieren Sie sich die Knotennamen.
Rufen Sie in der GCP Console die Seite "Routen" auf.
Suchen Sie in der Liste der Routen in der Spalte Nächster Hop nach dem Namen eines Ihrer Clusterknoten. Klicken Sie auf den Routennamen in dieser Zeile.
Auf der daraufhin geöffneten Seite Routendetails sehen Sie, dass die Route einen nächsten Hop für jedes Paket bereitstellt, das für einen bestimmten Pod-Adressbereich bestimmt ist.
Pods pro Knoten
In einem routenbasierten Cluster wird jedem Knoten ein /24-Bereich von IP-Adressen für Pods zugewiesen. Ein /24-Bereich umfasst 256 Adressen, allerdings liegt die maximale Anzahl von Pods pro Knoten bei 110. Im Verhältnis zu den möglichen Pods sind also etwa doppelt so viele IP-Adressen verfügbar. Die Wiederverwendung von IP-Adressen lässt sich dadurch in Kubernetes reduzieren, wenn Pods einem Knoten hinzugefügt und daraus entfernt werden.
Pod-Adressbereich
Ein routenbasierter Cluster hat einen Bereich von IP-Adressen, die für Pods und Dienste verwendet werden. Obwohl der Bereich sowohl für Pods als auch für Dienste zum Einsatz kommt, wird er Pod-Adressbereich genannt. Der letzte /20-Bereich des Pod-Adressbereichs wird für Dienste verwendet. Ein /20-Bereich hat 212 = 4.096 Adressen. Somit werden 4.096 Adressen für Dienste und der Rest des Bereichs für Pods verwendet.
In der Befehlsausgabe heißt der Pod-Adressbereich clusterIpv4Cidr
und der für Dienste verwendete Adressbereich servicesIpv4Cidr
. Beispielsweise sieht die Ausgabe von gcloud container clusters describe
in etwa so aus:
clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20
Ab GKE-Version 1.7 kann der Pod-Adressbereich aus einem beliebigen RFC 1918-Block stammen: 10.0.0.0/8, 172.16.0.0/12 oder 192.168.0.0/16. Bei früheren Versionen muss der Pod-Adressbereich aus 10.0.0.0/8 stammen.
Durch Angabe eines CIDR-Bereichs lässt sich der Pod-Adressbereich anpassen. Beispielsweise könnten Sie den Bereich 10.96.0.0/16
angeben.
gcloud
gcloud container clusters create [CLUSTER_NAME] --no-enable-ip-alias \
--cluster-ipv4-cidr 10.96.0.0/16
Dabei ist [CLUSTER_NAME] der Name, den Sie für den Cluster auswählen.
Console
Rufen Sie in der Cloud Console das Kubernetes Engine-Menü auf.
Klicken Sie auf Cluster erstellen.
Geben Sie einen Namen für den Cluster ein.
Klicken Sie im Navigationsbereich unter Cluster auf Netzwerke.
Geben Sie unter Erweiterte Netzwerkoptionen für das Feld Pod-Adressbereich den Wert
10.96.0.0/16
ein.Klicken Sie auf Erstellen.
Hinweise zur Größenanpassung bei Clustern
Die maximale Anzahl von Knoten und Diensten für einen bestimmten GKE-Cluster wird durch die Größe des Clustersubnetzes und die Größe des Pod-Adressbereichs bestimmt. Nach dem Erstellen eines Clusters können Sie die Größe des Pod-Adressbereichs nicht mehr ändern. Sorgen Sie beim Erstellen eines Clusters deshalb dafür, dass Sie einen Pod-Adressbereich auswählen, der groß genug ist, um das erwartete Wachstum des Clusters aufzufangen.
In der folgenden Tabelle wird erläutert, wie Sie Adressbereiche auswählen, die für einen Cluster mit 900 Knoten ausreichen:
Bereich | Hinweise |
---|---|
Knoten |
Knoten-IP-Adressen werden aus dem primären Bereich des Clustersubnetzes zugewiesen. Ihr Clustersubnetz muss groß genug sein, um die Gesamtzahl der Knoten in Ihrem Cluster unterzubringen. Wenn Sie beispielsweise einen Cluster mit 900 Knoten erstellen möchten, muss das mit dem Cluster verwendete Subnetz mindestens eine Größe von /22 haben. Ein /22-Bereich hat 210 = 1.024 Adressen. Wenn Sie die vier reservierten IP-Adressen abziehen, erhalten Sie 1.020 Adressen, was für die 900 Knoten ausreicht. |
Pod-Adressbereich |
Jeder Knoten hat einen /24-IP-Adressbereich für Pods. Ein /24-Bereich hat 28 = 256 Adressen. Wie bereits erwähnt, werden 4.096 Adressen im Pod-Adressbereich für Dienste verwendet. Der verbleibende Teil des Pod-Adressbereichs wird für Pods verwendet und muss groß genug sein, um die Anzahl der Knoten x 256 Adressen unterzubringen. Angenommen, Sie möchten einen Cluster mit 900 Knoten erstellen. In diesem Fall benötigen Sie 900 x 256 = 230.400 Adressen für Pods. Außerdem haben Sie einen /14-Pod-Adressbereich. Ein /14-Bereich hat 218 = 262.144 Adressen. Wenn Sie jetzt die für Dienste verwendeten 4.096 Adressen abziehen, erhalten Sie 258.048 Adressen, was für 900 Knoten ausreicht. |
Standardeinstellungen und Limits für Bereichsgrößen
In der folgenden Tabelle sind die Mindest-, Maximal- und Standardgrößen für das Clustersubnetz und den Pod-Adressbereich aufgeführt.
Bereich | Standardgröße | Mindestgröße | Maximalgröße |
---|---|---|---|
Knoten | /20, was 212 = 4.096 Adressen sind. Wenn Sie vier reservierte Adressen abziehen, erhalten Sie 4.092 Adressen für Knoten. |
/29, was 23 = 8 Adressen sind. Wenn Sie vier reservierte Adressen abziehen, erhalten Sie vier Adressen für Knoten. |
/7, was 225 Adressen sind. Dies ergibt ungefähr 33 Millionen Adressen für Knoten. |
Pod-Adressbereich | /14, was 218 = 262.144 Adressen sind. |
/19, was 213 = 8.192 Adressen sind. |
/9, was 223 = 8.388.608 Adressen sind. |
Beschränkungen
- Sie können einen VPC-nativen Cluster nicht zu einem routenbasierten Cluster migrieren.
- Sie können einen routenbasierten Cluster nicht zu einem VPC-nativen Cluster migrieren.
- Routenbasierte Cluster können für private IP-Adressen nur Adressen im Bereich RFC 1918 verwenden. VPC-native Cluster haben einen größeren Bereich verwendbarer Adressen.