Auf dieser Seite wird gezeigt, wie Sie mehrere Schnittstellen auf Knoten und Pods in einem GKE-Cluster (Google Kubernetes Engine) aktivieren. Dazu wird die Multi-Netzwerk-Unterstützung für Pods genutzt. Die Unterstützung mehrerer Netzwerke ist nur für Projekte verfügbar, die mit GKE Enterprise aktiviert sind.
Sie sollten bereits mit allgemeinen Netzwerkkonzepten,Terminologie und Konzepten speziell für dieses Feature und Anforderungen und Beschränkungen für die Unterstützung mehrerer Netzwerke für Pods vertraut sein.
Weitere Informationen finden Sie unter Unterstützung mehrerer Netzwerke für Pods.
Anforderungen und Einschränkungen
Für die Unterstützung mehrerer Netzwerke für Pods gelten die folgenden Anforderungen und Einschränkungen:
Voraussetzungen
- GKE-Version 1.28 oder höher.
- Google Kubernetes Engine (GKE) Enterprise Edition aktivieren
- Für die Unterstützung von mehreren Netzwerken für Pods gelten die gleichen Spezifikationen auf VM-Ebene wie für mehrere NICs für Compute Engine.
- Für die Unterstützung von mehreren Netzwerken für Pods ist GKE Dataplane V2 erforderlich.
- Die Multi-Netzwerk-Unterstützung für Pods ist nur für Container-Optimized OS-Knoten verfügbar, auf denen Version m101 oder höher ausgeführt wird.
Allgemeine Beschränkungen
- Die Multinetzwerkunterstützung für Pods funktioniert nicht für Cluster, die für Dual-Stack-Netzwerke aktiviert sind.
- Eine freigegebene VPC wird nur in der GKE-Version 1.28 oder höher unterstützt.
- Multi-Pod-CIDR ist für Cluster mit aktiviertem Multi-Netzwerk nicht verfügbar.
- Pod-Netzwerke in einem einzelnen GKE-Cluster dürfen keine sich überschneidenden CIDR-Bereiche haben.
- Wenn Sie die Multi-Netzwerk-Unterstützung für Pods aktivieren, können Sie nach dem Erstellen eines Knotenpools keine Netzwerk- oder Pod-Netzwerke hinzufügen oder entfernen. Wenn Sie diese Einstellungen ändern möchten, müssen Sie den Knotenpool neu erstellen.
- Standardmäßig ist Internetzugriff nicht für zusätzliche Schnittstellen von Pod-Netzwerken innerhalb des Pods verfügbar. Sie können es jedoch manuell mit Cloud NAT aktivieren.
- Sie können das Standardgateway innerhalb eines Pods mit mehreren Schnittstellen nicht über die API ändern. Das Standardgateway muss mit dem Standard-Pod-Netzwerk verbunden sein.
- Das Standard-Pod-Netzwerk muss immer in Pods enthalten sein, auch wenn Sie zusätzliche Pod-Netzwerke oder Schnittstellen erstellen.
- Sie können das Feature für mehrere Netzwerke nicht konfigurieren, wenn Managed Hubble konfiguriert wurde.
- Zur Verwendung einer freigegebenen VPC muss auf Ihrem GKE-Cluster Version 1.28.4 oder höher ausgeführt werden.
- Bei freigegebenen VPC-Bereitstellungen müssen alle mit Knoten verbundenen Netzwerkschnittstellen (NICs) zum selben Projekt wie das Hostprojekt gehören.
Einschränkungen für das Geräte- und Datenebenen-Entwicklungskit (DPDK)
- Eine VM-NIC, die als
Device
-Typ-NIC an einen Pod übergeben wird, ist für andere Pods auf demselben Knoten nicht verfügbar. - Pods, die den DPDK-Modus verwenden, müssen für den Zugriff auf VFIO-Geräte im privilegierten Modus ausgeführt werden.
- Im DPDK-Modus wird ein Gerät als Knotenressource behandelt und ist nur mit dem ersten Container (nicht-init) im Pod verbunden. Wenn Sie mehrere DPDK-Geräte auf Container im selben Pod aufteilen möchten, müssen Sie diese Container in separaten Pods ausführen.
Skalierungseinschränkungen
GKE bietet eine flexible Netzwerkarchitektur, die es Ihnen ermöglicht, Ihren Cluster zu skalieren. Sie können Ihrem Cluster weitere Knotennetzwerke und Pod-Netzwerke hinzufügen. Sie können Ihren Cluster so skalieren:
- Sie können jedem GKE-Knotenpool bis zu sieben zusätzliche Knotennetzwerke hinzufügen. Dies ist das gleiche Skalierungslimit für Compute Engine-VMs.
- An jeden Pod müssen weniger als sieben weitere Netzwerke angehängt sein.
- Sie können bis zu 35 Pod-Netzwerke in einem einzigen Knotenpool für die acht Knotennetzwerke konfigurieren. Sie können sie in verschiedene Kombinationen unterteilen, wie z. B.:
- Sieben Knotennetzwerke mit jeweils fünf Pod-Netzwerken
- Fünf Knotennetzwerke mit jeweils sieben Pod-Netzwerken
- EIn Knotennetzwerk mit 30 Pod-Netzwerken. Das Limit für sekundäre Bereiche pro Subnetz beträgt 30.
- Sie können bis zu 50 Pod-Netzwerke pro Cluster konfigurieren.
- Sie können bis zu 32 Pods mit mehreren Netzwerken pro Knoten konfigurieren.
- Es können bis zu 3.000 Knoten mit mehreren Schnittstellen vorhanden sein.
- Sie können bis zu 100.000 zusätzliche Schnittstellen für alle Pods haben.
- Sie können bis zu 1.000 Knoten mit Netzwerken vom Typ
Device
konfigurieren. - Sie können bis zu vier Netzwerke vom Typ
Device
pro Knoten konfigurieren.
Preise
Features von Network Function Optimizer (NFO) wie Multi-Netzwerk‑ und Hochleistungsunterstützung für Pods werden nur auf Clustern unterstützt, die sich in Projekten mit GKE Enterprise befinden. Informationen zu den Gebühren, die für das Aktivieren der Google Kubernetes Engine (GKE) Enterprise Edition anfallen, finden Sie bei den GKE Enterprise-Preisen.
Pods mit mehreren Netzwerken bereitstellen
So stellen Sie Pods mit mehreren Netzwerken bereit:
- Bereiten Sie eine zusätzliche VPC, ein Subnetz (Knotennetzwerk) und sekundäre Bereiche (Pod-Netzwerk) vor.
- Erstellen Sie einen GKE-Cluster mit mehreren Netzwerken mithilfe des Befehlszeilenbefehls Google Cloud.
- Erstellen Sie einen neuen GKE-Knotenpool, der über das Google Cloud CLI-Befehl mit dem zusätzlichen Knotennetzwerk und Pod-Netzwerk verbunden ist.
- Erstellen Sie ein Pod-Netzwerk und verweisen Sie mithilfe der Kubernetes API auf die richtigen VPC-, Subnetz- und sekundären Bereiche in Multi-Netzwerkobjekten.
- Referenzieren Sie in der Arbeitslastkonfiguration das vorbereitete Netzwerkobjekt für das Kubernetes-Objekt mithilfe der Kubernetes API.
Hinweise
Führen Sie die folgenden Aufgaben aus, 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.
Sehen Sie sich die Anforderungen und Einschränkungen an.
Zusätzliche VPC vorbereiten
Google Cloud erstellt während der Clustererstellung ein Standard-Pod-Netzwerk, das dem GKE-Knotenpool zugeordnet ist, der bei der anfänglichen Erstellung des GKE-Clusters verwendet wurde. Das Standard-Pod-Netzwerk ist auf allen Clusterknoten und Pods verfügbar. Sie müssen vorhandene oder neue VPCs vorbereiten, die Netzwerke vom Typ Layer 3
und Device
unterstützen, um Funktionen mit mehreren Netzwerken innerhalb des Knotenpools zu ermöglichen.
Berücksichtigen Sie bei der Vorbereitung einer zusätzlichen VPC die folgenden Anforderungen:
Netzwerk vom Typ
Layer 3
undNetdevice
:- Erstellen Sie einen sekundären Bereich, wenn Sie Netzwerke vom Typ
Layer 3
verwenden. - Achten Sie darauf, dass die CIDR-Größe für den sekundären Bereich groß genug ist, um die gewünschte Anzahl der Knoten im Knotenpool und die Anzahl der Pods pro Knoten zu erfüllen.
- Ähnlich wie das Standard-Pod-Netzwerk verwenden die anderen Pod-Netzwerke die IP-Adressen-Überbereitstellung. Der sekundäre IP-Adressbereich muss doppelt so viele IP-Adressen pro Knoten haben wie die Anzahl der Pods pro Knoten.
- Erstellen Sie einen sekundären Bereich, wenn Sie Netzwerke vom Typ
Netzwerkanforderungen vom Typ
Device
: Erstellen Sie ein reguläres Subnetz in einer VPC. Sie benötigen kein sekundäres Subnetz.
Zum Aktivieren von Multi-Netzwerk-Funktionen im Knotenpool müssen Sie die VPCs vorbereiten, zu denen Sie zusätzliche Verbindungen herstellen möchten. Sie können eine vorhandene VPC verwenden oder speziell für den Knotenpool eine neue VPC erstellen.
VPC-Netzwerk erstellen, das ein Gerät vom Typ Layer 3
unterstützt
So erstellen Sie ein VPC-Netzwerk, das ein Gerät vom Typ Layer 3
unterstützt:
- Achten Sie darauf, dass die CIDR-Größe für den sekundären Bereich groß genug ist, um die Anzahl der Knoten im Knotenpool und die gewünschte Anzahl der Pods pro Knoten zu erfüllen.
Ähnlich wie das Standard-Pod-Netzwerk verwenden die anderen Pod-Netzwerke die IP-Adressen-Überbereitstellung. Der sekundäre IP-Adressereich muss doppelt so viele IP-Adressen pro Knoten haben wie die Anzahl der Pods pro Knoten.
gcloud
gcloud compute networks subnets create SUBNET_NAME \
--project=PROJECT_ID \
--range=SUBNET_RANGE \
--network=NETWORK_NAME \
--region=REGION \
--secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>
Ersetzen Sie Folgendes:
SUBNET_NAME
: der Name des Subnetzes.PROJECT_ID
: die ID des Projekts, das das VPC-Netzwerk enthält, in dem das Subnetz erstellt wird.SUBNET_RANGE
: der primäre IPv4-Adressbereich für das neue Subnetz in CIDR-Notation.NETWORK_NAME
: der Name des VPC-Netzwerks, das das neue Subnetz enthält.REGION
: die Google Cloud-Region, in der das neue Subnetz erstellt wird.SECONDARY_RANGE_NAME
: der Name des sekundären Bereichs.SECONDARY_IP_RANGE
: der sekundäre IPv4-Adressbereich in CIDR-Notation.
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf VPC-Netzwerk erstellen.
Geben Sie im Feld Name den Namen des Netzwerks ein. Beispiel:
l3-vpc
Wählen Sie im Drop-down-Menü Maximale Übertragungseinheit (MTU) den entsprechenden MTU-Wert aus.
Wählen Sie im Abschnitt Modus für Subnetzerstellung die Option Benutzerdefiniert aus.
Klicken Sie auf Subnetz hinzufügen.
Legen Sie im Abschnitt Neues Subnetz folgende Konfigurationsparameter für das Subnetz fest:
Geben Sie einen Namen an. Beispiel:
l3-subnet
.Wählen Sie eine Region aus.
Geben Sie einen IP-Adressbereich ein. Dies ist der primäre IPv4-Bereich für das Subnetz.
Wenn Sie einen Bereich auswählen, der keine RFC 1918-Adresse ist, prüfen Sie, ob der Bereich mit einer vorhandenen Konfiguration in Konflikt steht. Weitere Informationen finden Sie unter IPv4-Subnetzbereiche.
Klicken Sie auf Sekundären IP-Adressbereich erstellen, um einen sekundären Bereich für das Subnetz festzulegen.
Wenn Sie einen Bereich auswählen, der keine RFC 1918-Adresse ist, prüfen Sie, ob der Bereich mit einer vorhandenen Konfiguration in Konflikt steht. Weitere Informationen finden Sie unter IPv4-Subnetzbereiche.
Privater Google-Zugriff: Sie können den privaten Google-Zugriff für das Subnetz beim Erstellen aktivieren oder das Subnetz später entsprechend bearbeiten.
Flusslogs: Sie können VPC-Flusslogs für das Subnetz beim Erstellen aktivieren oder das Subnetz später entsprechend bearbeiten.
Klicken Sie auf Fertig.
Wählen Sie im Abschnitt Firewallregeln unter IPv4-Firewallregeln null oder mehr vordefinierte Firewallregeln aus.
Die Regeln berücksichtigen gängige Anwendungsfälle für die Konnektivität zu Instanzen. Sie können Ihre eigenen Firewallregeln erstellen, nachdem Sie das Netzwerk erstellt haben. Jeder vordefinierte Regelname beginnt mit dem Namen des VPC-Netzwerks, das Sie erstellen:
Klicken Sie unter IPv4-Firewallregeln auf BEARBEITEN, um die vordefinierte Firewallregel für eingehenden Traffic mit dem Namen
allow-custom
zu bearbeiten.Sie können Subnetze bearbeiten, zusätzliche IPv4-Bereiche hinzufügen und Protokolle und Ports angeben.
Die Firewallregel
allow-custom
wird nicht automatisch aktualisiert, wenn Sie später zusätzliche Subnetze hinzufügen. Wenn Sie Firewallregeln für die neuen Subnetze benötigen, müssen Sie die Firewallkonfiguration aktualisieren, um die Regeln hinzuzufügen.Im Abschnitt Modus für dynamisches Routing für das VPC-Netzwerk: Weitere Informationen finden Sie unter Modus für dynamisches Routing. Sie können später den Modus für dynamisches Routing ändern.
Klicken Sie auf Erstellen.
VPC-Netzwerk erstellen, das Geräte vom Typ Netdevice
oder DPDK
unterstützt
gcloud
gcloud compute networks subnets create SUBNET_NAME \
--project=PROJECT_ID \
--range=SUBNET_RANGE \
--network=NETWORK_NAME \
--region=REGION \
--secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>
Ersetzen Sie Folgendes:
SUBNET_NAME
: der Name des Subnetzes.PROJECT_ID
: die ID des Projekts, das das VPC-Netzwerk enthält, in dem das Subnetz erstellt wird.SUBNET_RANGE
: der primäre IPv4-Adressbereich für das neue Subnetz in CIDR-Notation.NETWORK_NAME
: der Name des VPC-Netzwerks, das das neue Subnetz enthält.REGION
: die Google Cloud-Region, in der das neue Subnetz erstellt wird.SECONDARY_RANGE_NAME
: der Name des sekundären Bereichs.SECONDARY_IP_RANGE
: der sekundäre IPv4-Adressbereich in CIDR-Notation.
Console
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Klicken Sie auf VPC-Netzwerk erstellen.
Geben Sie im Feld Name den Namen des Netzwerks ein. Beispiel:
netdevice-vpc
oderdpdk-vpc
.Wählen Sie im Drop-down-Menü Maximale Übertragungseinheit (MTU) den entsprechenden MTU-Wert aus.
Wählen Sie im Abschnitt Modus für Subnetzerstellung die Option Benutzerdefiniert aus.
Legen Sie im Abschnitt Neues Subnetz folgende Konfigurationsparameter für das Subnetz fest:
Geben Sie einen Namen an. Beispiel:
netdevice-subnet
oderdpdk-vpc
Wählen Sie eine Region aus.
Geben Sie einen IP-Adressbereich ein. Dies ist der primäre IPv4-Bereich für das Subnetz.
Wenn Sie einen Bereich auswählen, der keine RFC 1918-Adresse ist, prüfen Sie, ob der Bereich mit einer vorhandenen Konfiguration in Konflikt steht. Weitere Informationen finden Sie unter IPv4-Subnetzbereiche.
Privater Google-Zugriff: Legen Sie fest, ob der private Google-Zugriff für das Subnetz bei der Erstellung aktiviert werden soll oder ob dies später erfolgen soll.
Flusslogs: Sie können VPC-Flusslogs für das Subnetz beim Erstellen aktivieren oder das Subnetz später entsprechend bearbeiten.
Klicken Sie auf Fertig.
Wählen Sie im Abschnitt Firewallregeln unter IPv4-Firewallregeln null oder mehr vordefinierte Firewallregeln aus.
Die Regeln berücksichtigen gängige Anwendungsfälle für die Konnektivität zu Instanzen. Sie können Ihre eigenen Firewallregeln erstellen, nachdem Sie das Netzwerk erstellt haben. Jeder vordefinierte Regelname beginnt mit dem Namen des VPC-Netzwerks, das Sie erstellen:
Klicken Sie unter IPv4-Firewallregeln auf BEARBEITEN, um die vordefinierte Firewallregel für eingehenden Traffic mit dem Namen
allow-custom
zu bearbeiten.Sie können Subnetze bearbeiten, zusätzliche IPv4-Bereiche hinzufügen und Protokolle und Ports angeben.
Die Firewallregel
allow-custom
wird nicht automatisch aktualisiert, wenn Sie später zusätzliche Subnetze hinzufügen. Wenn Sie Firewallregeln für die neuen Subnetze benötigen, müssen Sie die Firewallkonfiguration aktualisieren, um die Regeln hinzuzufügen.Im Abschnitt Modus für dynamisches Routing für das VPC-Netzwerk: Weitere Informationen finden Sie unter Modus für dynamisches Routing. Sie können später den Modus für dynamisches Routing ändern.
Klicken Sie auf Erstellen.
GKE-Cluster mit Multi-Netzwerk-Funktionen erstellen
gcloud
So erstellen Sie einen GKE-Cluster mit Funktionen für mehrere Netzwerke:
gcloud container clusters create CLUSTER_NAME \
--cluster-version=CLUSTER_VERSION \
--enable-dataplane-v2 \
--enable-ip-alias \
--enable-multi-networking
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.CLUSTER_VERSION
: die Version des Clusters.
Er enthält die folgenden Flags:
--enable-multi-networking:
aktiviert benutzerdefinierte Ressourcendefinitionen (CRDs) für mehrere Netzwerke im API-Server für diesen Cluster und stellt einen Netzwerk-Controller-Manager bereit, der die Abgleich- und Lebenszyklusverwaltung für Objekte in mehreren Netzwerken enthält.--enable-dataplane-v2:
aktiviert GKE Dataplane V2. Dieses Flag ist erforderlich, um mehrere Netzwerke zu aktivieren.
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_box Erstellen.
Konfigurieren Sie den Standardcluster. Weitere Informationen finden Sie unter Zonalen Cluster erstellen oder Regionalen Cluster erstellen. Wählen Sie beim Erstellen des Clusters das entsprechende Netzwerk- und Knotensubnetz aus.
Klicken Sie im Navigationsbereich unter Cluster auf Netzwerk.
Klicken Sie auf das Kästchen Dataplane V2 aktivieren.
Wählen Sie Multi-Netzwerk aktivieren aus.
Klicken Sie auf Erstellen.
Durch Aktivieren von Multi-Netzwerk für einen Cluster werden dem API-Server für diesen Cluster die erforderlichen CustomResourceDefinitions (CRDs) hinzugefügt. Außerdem wird ein Netzwerk-Controller-Manager bereitgestellt, der für den Abgleich und die Verwaltung von Objekten mit mehreren Netzwerken zuständig ist. Sie können die Clusterkonfiguration nach dem Erstellen nicht mehr ändern.
GKE-Knotenpool erstellen, der mit zusätzlichen VPCs verbunden ist
Erstellen Sie einen Knotenpool mit Knoten, die mit dem Knoten-Netzwerk (VPC und Subnetz) und dem Pod-Netzwerk (sekundärer Bereich) verbunden sind, das unter Pod-Netzwerk erstellen erstellt wurde.
So erstellen Sie den neuen Knotenpool und verknüpfen ihn mit den zusätzlichen Netzwerken im GKE-Cluster:
gcloud
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--additional-node-network network=NETWORK_NAME,subnetwork=SUBNET_NAME \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=POD_IP_RANGE,max-pods-per-node=NUMBER_OF_PODS \
--additional-node-network network=highperformance,subnetwork=subnet-highperf
Ersetzen Sie Folgendes:
POOL_NAME
durch den Namen des neuen Knotenpools.CLUSTER_NAME
durch den Namen des vorhandenen Clusters, dem Sie den Knotenpool hinzufügen.NETWORK_NAME
durch den Namen des Netzwerks, an das die Knoten des Knotenpools angehängt werden sollen.SUBNET_NAME
durch den Namen des Subnetzes innerhalb des Netzwerks, das für die Knoten verwendet werden soll.POD_IP_RANGE
der Pod-IP-Adressbereich innerhalb des Subnetzes.NUMBER_OF_PODS
maximale Anzahl von Pods pro Knoten.
Er enthält die folgenden Flags:
--additional-node-network
: definiert Details zur zusätzlichen Netzwerkschnittstelle, zum Netzwerk und Subnetzwerk. Damit werden die Knotennetzwerke für die Verbindung mit den Knotenpoolknoten angegeben. Geben Sie diesen Parameter an, wenn Sie eine Verbindung zu einer anderen VPC herstellen möchten. Wenn Sie diesen Parameter nicht angeben, wird die mit dem Cluster verknüpfte Standard-VPC verwendet. Geben Sie für Netzwerke vom TypLayer 3
das Flagadditional-pod-network
an, das das Pod-Netzwerk definiert, das im GKE-Cluster alsNetwork
-Objekt bereitgestellt wird. Wenn Sie das Flag--additional-node-network
verwenden, müssen Sie ein Netzwerk und ein Subnetzwerk als obligatorische Parameter angeben. Trennen Sie die Netzwerk- und Subnetzwerkwerte durch ein Komma und verwenden Sie keine Leerzeichen.--additional-pod-network
: gibt die Details des sekundären Bereichs an, der für das Pod-Netzwerk verwendet werden soll. Dieser Parameter ist nicht erforderlich, wenn Sie ein Netzwerk des TypsDevice
verwenden. Dieses Argument gibt die folgenden Schlüsselwerte an:subnetwork
,pod-ipv4-range
undmax-pods-per-node
. Wenn Sie--additional-pod-network
verwenden, müssen Sie die Wertepod-ipv4-range
undmax-pods-per-node
durch Kommas und ohne Leerzeichen getrennt angeben.subnetwork
: verknüpft das Knotennetzwerk mit dem Pod-Netzwerk. Das Subnetzwerk ist optional. Wenn Sie es nicht angeben, wird das zusätzliche Pod-Netzwerk dem Standard-Subnetzwerk zugeordnet, das bei der Clustererstellung bereitgestellt wird.--max-pods-per-node
:max-pods-per-node
muss angegeben werden und muss eine Potenz von 2 sein. Der Mindestwert beträgt 4. Dermax-pods-per-node
darf nicht größer als der Wertmax-pods-per-node
im Knotenpool sein.
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie im Navigationsbereich auf Cluster.
Klicken Sie im Abschnitt Kubernetes-Cluster auf den Cluster, den Sie erstellt haben.
Klicken Sie oben auf der Seite auf add_box Knotenpool hinzufügen, um den Knotenpool zu erstellen.
Geben Sie im Bereich Knotenpooldetails Folgendes ein:
- Geben Sie einen Namen für den Knotenpool ein.
- Geben Sie die Anzahl der Knoten ein, die im Knotenpool erstellt werden sollen.
Klicken Sie im Navigationsbereich unter Knotenpools auf Knoten.
Wählen Sie in der Drop-down-Liste Image-Typ das Knoten-Image Container-Optimized OS mit „containerd“ (cos_containerd) aus.
Wenn Sie eine VM erstellen, wählen Sie einen Maschinentyp aus einer Maschinenfamilie aus, die die für diese VM verfügbaren Ressourcen bestimmt. Ein Maschinentyp wie
e2-standard-4
enthält beispielsweise 4 vCPUs und kann daher insgesamt bis zu 4 VPCs unterstützen. Sie können aus mehreren Maschinenfamilien wählen. Jede Maschinenfamilie ist weiter in Maschinenserien und vordefinierte oder benutzerdefinierte Maschinentypen in jeder Serie unterteilt. Jeder Maschinentyp wird unterschiedlich abgerechnet. Weitere Informationen finden Sie in der Preisübersicht für Maschinentypen.Wählen Sie im Navigationsbereich die Option Netzwerk aus.
Geben Sie im Abschnitt Knotennetzwerk die maximale Anzahl von Pods pro Knoten an. Im Abschnitt „Knotennetzwerke“ wird das VPC-Netzwerk angezeigt, das zum Erstellen des Clusters verwendet wurde. Es ist erforderlich, zusätzliche Knotennetzwerke festzulegen, die mit zuvor festgelegten VPC-Netzwerken und Gerätetypen korrelieren.
Erstellen Sie eine Knotenpoolverknüpfung:
- Für ein Gerät vom Typ
Layer 3
:- Klicken Sie im Abschnitt Knotennetzwerke auf Knotennetzwerk hinzufügen.
- Wählen Sie in der Drop-down-Liste "Netzwerk" die VPC aus, die Geräte des Typs "Layer 3" unterstützt.
- Wählen Sie das für die VPC
Layer 3
erstellte Subnetz aus. - Klicken Sie im Abschnitt Alias-Pod-IP-Adressbereiche auf Pod-IP-Adressbereich hinzufügen.
- Wählen Sie das Sekundäre Subnetz aus und geben Sie die maximale Anzahl von Pods pro Knoten an.
- Wählen Sie Fertig aus.
- Für Geräte vom Typ
Netdevice
undDPDK
:- Klicken Sie im Abschnitt Knotennetzwerke auf Knotennetzwerk hinzufügen.
- Wählen Sie in der Drop-down-Liste „Netzwerk“ die VPC aus, die Geräte vom Typ
Netdevice
oderDPDK
unterstützt. - Wählen Sie das Subnetz aus, das für die VPC
Netdevice
oderDPDK
erstellt wurde. - Wählen Sie Fertig aus.
- Für ein Gerät vom Typ
Klicken Sie auf Erstellen.
Hinweise:
- Wenn im selben Knotennetzwerk mehrere zusätzliche Pod-Netzwerke angegeben sind, müssen sie sich im selben Subnetz befinden.
- Sie können nicht denselben sekundären Bereich eines Subnetzes mehrmals referenzieren.
Beispiel: Im folgenden Beispiel wird ein Knotenpool mit dem Namen "pool-multi-net" erstellt, der zwei zusätzliche Netzwerke an die Knoten anhängt: datapalane (Netzwerk vom Typ Layer 3
) und highperformance (Netzwerk vom Typ "netdevice"). In diesem Beispiel wird davon ausgegangen, dass Sie bereits einen GKE-Cluster mit dem Namen cluster-1
erstellt haben:
gcloud container node-pools create pool-multi-net \
--project my-project \
--cluster cluster-1 \
--zone us-central1-c \
--additional-node-network network=dataplane,subnetwork=subnet-dp \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
--additional-node-network network=highperformance,subnetwork=subnet-highperf
Um zusätzliche Knotennetzwerk- und Pod-Netzwerkschnittstellen anzugeben, definieren Sie die Parameter --additional-node-network
und --additional-pod-network
mehrmals, wie im folgenden Beispiel gezeigt:
--additional-node-network network=dataplane,subnetwork=subnet-dp \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-green,max-pods-per-node=8 \
--additional-node-network network=managementdataplane,subnetwork=subnet-mp \
--additional-pod-network subnetwork=subnet-mp,pod-ipv4-range=sec-range-red,max-pods-per-node=4
Sie können zusätzliche Pod-Netzwerke direkt auf der primären VPC-Schnittstelle des Knotenpools angeben, wie im folgenden Beispiel gezeigt:
--additional-pod-network subnetwork=subnet-def,pod-ipv4-range=sec-range-multinet,max-pods-per-node=8
Pod-Netzwerk erstellen
Definieren Sie die Pod-Netzwerke, auf die die Pods zugreifen, indem Sie Kubernetes-Objekte definieren und sie mit den entsprechenden Compute Engine-Ressourcen wie VPCs, Subnetzen und sekundären Bereichen verknüpfen.
Zum Erstellen eines Pod-Netzwerks müssen Sie die Netzwerk-CRD-Objekte im Cluster definieren.
Layer 3
-VPC-Netzwerk konfigurieren
YAML
Erstellen Sie für die VPC Layer 3
die Objekte Network
und GKENetworkParamSet
:
Speichern Sie das folgende Beispielmanifest als
blue-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: blue-network spec: type: "L3" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "l3-vpc"
Das Manifest definiert eine
Network
-Ressource mit dem Namenblue-network
des TypsLayer 3
. DasNetwork
-Objekt verweist auf dasGKENetworkParamSet
-Objekt namensl3-vpc
, das ein Netzwerk mit Compute Engine-Ressourcen verknüpft.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f blue-network.yaml
Speichern Sie das folgende Manifest als
dataplane.yaml
:apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: "l3-vpc" spec: vpc: "l3-vpc" vpcSubnet: "subnet-dp" podIPv4Ranges: rangeNames: - "sec-range-blue"
Dieses Manifest definiert das
GKENetworkParamSet
-Objekt namensdataplane
, legt den VPC-Namen alsdataplane
fest, den Subnetznamen alssubnet-dp
und einen sekundären IPv4-Adressbereich für Pods namenssec-range-blue
.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f dataplane.yaml
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie im Navigationsbereich auf Network Function Optimizer.
Klicken Sie auf GKE Enterprise aktivieren.
Klicken Sie oben auf der Seite auf add_box Erstellen, um Ihr Pod-Netzwerk zu erstellen.
Prüfen Sie die Details im Abschnitt Vorbereitung.
Klicken Sie auf WEITER: POD-NETZWERKSTANDORT.
Wählen Sie im Abschnitt Pod-Netzwerkstandort in der Drop-down-Liste Cluster den GKE-Cluster aus, für den Multi-Netzwerk und GKE Dataplane V2 aktiviert sind.
Klicken Sie auf WEITER: VPC-NETZWERKREFERENZ.
Wählen Sie im Abschnitt VPC-Netzwerkreferenz aus dem Drop-down-Menü VPC-Netzwerkreferenz das VPC-Netzwerk aus, das für
Layer 3
-multinic-Pods verwendet wird.Klicken Sie auf WEITER: POD-NETZWERKTYP.
Wählen Sie im Abschnitt Pod-Netzwerktyp die Option L3 aus und geben Sie den Pod-Netzwerknamen ein.
Klicken Sie auf WEITER: SEKUNDÄRER BEREICH DES POD-NETZWERKS.
Geben Sie im Abschnitt Sekundärer Bereich des Pod-Netzwerks den sekundären Bereich ein.
Klicken Sie auf Weiter: POD-NETZWERKROUTEN.
Wählen Sie im Abschnitt Pod-Netzwerkrouten die Option ROUTE HINZUFÜGEN aus, um Benutzerdefinierte Routen zu definieren.
Klicken Sie auf POD-NETZWERK ERSTELLEN.
DPDK-Netzwerk konfigurieren
YAML
Erstellen Sie für die DPDK-VPC die Objekte Network
und GKENetworkParamSet
.
Speichern Sie das folgende Beispielmanifest als
dpdk-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: dpdk-network spec: type: "Device" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "dpdk"
Dieses Manifest definiert eine
Network
-Ressource mit dem Namendpdk-network
und dem TypDevice
. DieNetwork
-Ressource verweist für ihre Konfiguration auf einGKENetworkParamSet
-Objekt namensdpdk
.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f dpdk-network.yaml
Speichern Sie für das
GKENetworkParamSet
-Objekt das folgende Manifest alsdpdk.yaml
:apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: "dpdk" spec: vpc: "dpdk" vpcSubnet: "subnet-dpdk" deviceMode: "DPDK-VFIO"
Dieses Manifest definiert das
GKENetworkParamSet
-Objekt mit dem Namendpdk
, den VPC-Namen alsdpdk
, den Subnetznamen alssubnet-dpdk
und den Namen von deviceMode alsDPDK-VFIO
.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f dpdk-network.yaml
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie im Navigationsbereich auf Network Function Optimizer.
Klicken Sie oben auf der Seite auf add_box Erstellen, um Ihr Pod-Netzwerk zu erstellen.
Prüfen Sie die Details im Abschnitt Vorbereitung.
Klicken Sie auf WEITER: POD-NETZWERKSTANDORT.
Wählen Sie im Abschnitt Pod-Netzwerkstandort in der Drop-down-Liste Cluster den GKE-Cluster aus, für den Multi-Netzwerk und GKE Dataplane V2 aktiviert sind.
Klicken Sie auf WEITER: VPC-NETZWERKREFERENZ.
Wählen Sie im Abschnitt VPC-Netzwerkreferenz aus dem Drop-down-Menü VPC-Netzwerkreferenz das VPC-Netzwerk, das für dpdk-multinic-Pods verwendet wird.
Klicken Sie auf WEITER: POD-NETZWERKTYP.
Wählen Sie im Abschnitt Pod-Netzwerktyp die Option DPDK-VFIO (Gerät) aus und geben Sie den Pod-Netzwerknamen ein.
Klicken Sie auf WEITER: SEKUNDÄRER BEREICH DES POD-NETZWERKS. Der Abschnitt für den sekundären Bereich des Pod-Netzwerks ist nicht verfügbar
Klicken Sie auf Weiter: POD-NETZWERKROUTEN. Wählen Sie im Abschnitt „Pod-Netzwerkrouten“ die Option ROUTE HINZUFÜGEN aus, um benutzerdefinierte Routen zu definieren
Klicken Sie auf POD-NETZWERK ERSTELLEN.
Netzwerk des Netzwerkgeräts konfigurieren
Erstellen Sie für die VPC netdevice
die Objekte Network
und GKENetworkParamSet
.
YAML
Speichern Sie das folgende Beispielmanifest als
netdevice-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: netdevice-network spec: type: "Device" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "netdevice"
Dieses Manifest definiert eine
Network
-Ressource mit dem Namennetdevice-network
und dem TypDevice
. Sie verweist auf das ObjektGKENetworkParamSet
mit dem Namennetdevice
.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f netdevice-network.yaml
Speichern Sie das folgende Manifest als
netdevice.yaml
:apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: netdevice spec: vpc: netdevice vpcSubnet: subnet-netdevice deviceMode: NetDevice
Dieses Manifest definiert eine
GKENetworkParamSet
-Ressource mit dem Namennetdevice
, legt den VPC-Namen alsnetdevice
, den Subnetznamen alssubnet-netdevice
und den Gerätemodus alsNetDevice
fest.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f netdevice.yaml
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie im Navigationsbereich auf Network Function Optimizer.
Klicken Sie oben auf der Seite auf add_box Erstellen, um Ihr Pod-Netzwerk zu erstellen.
Prüfen Sie die Details im Abschnitt Vorbereitung.
Klicken Sie auf WEITER: POD-NETZWERKSTANDORT.
Wählen Sie im Abschnitt Pod-Netzwerkstandort in der Drop-down-Liste Cluster den GKE-Cluster aus, für den Multi-Netzwerk und GKE Dataplane V2 aktiviert sind.
Klicken Sie auf WEITER: VPC-NETZWERKREFERENZ.
Wählen Sie im Abschnitt VPC-Netzwerkreferenz aus dem Drop-down-Menü VPC-Netzwerkreferenz das VPC-Netzwerk aus, das für netdevice-multinic-Pods verwendet wird.
Klicken Sie auf WEITER: POD-NETZWERKTYP.
Wählen Sie im Abschnitt Pod-Netzwerktyp die Option NetDevice (Gerät) aus und geben Sie den Pod-Netzwerknamen ein.
Klicken Sie auf WEITER: SEKUNDÄRER BEREICH DES POD-NETZWERKS. Der Abschnitt für den sekundären Bereich des Pod-Netzwerks ist nicht verfügbar
Klicken Sie auf Weiter: POD-NETZWERKROUTEN. Wählen Sie im Abschnitt "Pod-Netzwerkrouten" die Option ROUTE HINZUFÜGEN aus, um benutzerdefinierte Routen zu definieren.
Klicken Sie auf POD-NETZWERK ERSTELLEN.
Netzwerkrouten konfigurieren
Durch das Konfigurieren der Netzwerkroute können Sie benutzerdefinierte Routen für ein bestimmtes Netzwerk definieren, die auf den Pods eingerichtet werden, um Traffic an die entsprechende Schnittstelle innerhalb des Pods weiterzuleiten.
YAML
Speichern Sie das folgende Manifest als
red-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: red-network spec: type: "L3" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "management" routes: - to: "10.0.2.0/28"
Dieses Manifest definiert eine Netzwerkressource namens
red-network
mit dem TypLayer 3
und der benutzerdefinierten Route "10.0.2.0/28" über diese Netzwerkschnittstelle.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f red-network.yaml
Console
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_box Erstellen.
Klicken Sie im Navigationsbereich auf Network Function Optimizer.
Klicken Sie im Abschnitt Kubernetes-Cluster auf den Cluster, den Sie erstellt haben.
Klicken Sie oben auf der Seite auf add_box Erstellen, um das Pod-Netzwerk zu erstellen.
Definieren Sie im Abschnitt Pod-Netzwerkrouten Benutzerdefinierte Routen.
Klicken Sie auf POD-NETZWERK ERSTELLEN.
Auf die erstellte Network
verweisen
Verweisen Sie in der Arbeitslastkonfiguration mit dem Kubernetes API auf das erstellte Kubernetes-Objekt Network
.
Pod mit bestimmten Netzwerken verbinden
Zum Verbinden von Pods mit den angegebenen Netzwerken müssen Sie die Namen der Network
-Objekte als Annotationen in die Pod-Konfiguration aufnehmen. Achten Sie darauf, dass sowohl die default
Network
als auch die ausgewählten zusätzlichen Netzwerke in den Annotationen enthalten sind, um die Verbindungen herzustellen.
Speichern Sie das folgende Beispielmanifest als
sample-l3-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: sample-l3-pod annotations: networking.gke.io/default-interface: 'eth0' networking.gke.io/interfaces: | [ {"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"l3-network"} ] spec: containers: - name: sample-l3-pod image: busybox command: ["sleep", "10m"] ports: - containerPort: 80 restartPolicy: Always
Dieses Manifest erstellt einen Pod mit dem Namen
sample-l3-pod
und zwei Netzwerkschnittstelleneth0
undeth1
, die den Netzwerkendefault
undblue-network
zugeordnet sind.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f sample-l3-pod.yaml
Pod mit mehreren Netzwerken verbinden
Speichern Sie das folgende Beispielmanifest als
sample-l3-netdevice-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: sample-l3-netdevice-pod annotations: networking.gke.io/default-interface: 'eth0' networking.gke.io/interfaces: | [ {"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"l3-network"}, {"interfaceName":"eth2","network":"netdevice-network"} ] spec: containers: - name: sample-l3-netdevice-pod image: busybox command: ["sleep", "10m"] ports: - containerPort: 80 restartPolicy: Always
Dieses Manifest erstellt einen Pod mit dem Namen
sample-l3-netdevice-pod
und drei Netzwerkschnittstelleneth0
,eth1
undeth2
, die jeweils den Netzwerkendefault
,l3-network
undnetdevice
zugeordnet sind.Wenden Sie das Manifest auf den Cluster an:
kubectl apply -f sample-l3-netdevice-pod.yaml
Sie können dieselbe Annotation in jedem ReplicaSet (Deployment oder DaemonSet) im Annotationsabschnitt der Vorlage verwenden.
Wenn Sie einen Pod mit einer Spezifikation für mehrere Netzwerke erstellen, generieren die Komponenten der Datenebene automatisch die Schnittstellenkonfiguration des Pods und speichern sie in den NetworkInterface
-CRs. Erstellen Sie eine NetworkInterface
-CR für jeden nicht standardmäßigen Network
, der in der Pod-Spezifikation angegeben ist.
Das folgende Manifest zeigt beispielsweise Details aus einem NetworkInterface
-Manifest:
apiVersion: v1
items:
- apiVersion: networking.gke.io/v1
kind: NetworkInterface
metadata:
labels:
podName: samplepod
name: "samplepod-c0b60cbe"
namespace: default
spec:
networkName: "blue-network"
status:
gateway4: 172.16.1.1
ipAddresses:
- 172.16.1.2/32
macAddress: 82:89:96:0b:92:54
podName: samplepod
Dieses Manifest enthält den Netzwerknamen, die Gateway-Adresse, die zugewiesenen IP-Adressen, die MAC-Adresse und den Pod-Namen.
Beispielkonfiguration eines Pods mit mehreren Schnittstellen:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default
link/ether 2a:92:4a:e5:da:35 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.60.45.4/24 brd 10.60.45.255 scope global eth0
valid_lft forever preferred_lft forever
10: eth1@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default qlen 1000
link/ether ba:f0:4d:eb:e8:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.16.1.2/32 scope global eth1
valid_lft forever preferred_lft forever
Überprüfung
- Achten Sie darauf, dass Cluster nur dann mit
--enable-multi-networking
erstellt werden, wenn--enable-dataplane-v2
aktiviert ist. - Prüfen Sie, ob alle Knotenpools im Cluster während der Cluster- und Knotenpoolerstellung Container-Optimized OS-Images ausführen.
- Prüfen Sie, ob Knotenpools nur mit
--additional-node-network
oder--additional-pod-network
erstellt werden, wenn Multi-Netzwerk im Cluster aktiviert ist. - Achten Sie darauf, dass dasselbe Subnetz nicht zweimal als Argument
--additional-node-network
für einen Knotenpool angegeben wird. - Prüfen Sie, ob derselbe Argumentbereich wie das Argument
--additional-pod-network
für einen Knotenpool angegeben ist. - Befolgen Sie die für Netzwerkobjekte angegebenen Skalierungslimits unter Berücksichtigung der maximalen Anzahl von Knoten, Pods und IP-Adressen.
- Prüfen Sie, ob nur ein
GKENetworkParamSet
-Objekt vorhanden ist, das auf ein bestimmtes Subnetz und einen sekundären Bereich verweist. - Prüfen Sie, ob jedes Netzwerkobjekt auf ein anderes
GKENetworkParamSet
-Objekt verweist. - Prüfen Sie, ob das Netzwerkobjekt, wenn es mit einem bestimmten Subnetz mit dem Netzwerk
Device
erstellt wird, nicht auf demselben Knoten mit einem anderen Netzwerk mit einem sekundären Bereich verwendet wird. Dies kann nur zur Laufzeit validiert werden. - Achten Sie darauf, dass die verschiedenen sekundären Bereiche, die den Knotenpools zugewiesen sind, keine überlappenden IP-Adressen haben.
Fehlerbehebung bei Parametern für mehrere Netzwerke in GKE
Wenn Sie einen Cluster und einen Knotenpool erstellen, implementiert Google Cloud bestimmte Prüfungen, um sicherzustellen, dass nur gültige Multi-Netzwerk-Parameter zulässig sind. Dadurch wird sichergestellt, dass das Netzwerk für den Cluster ordnungsgemäß eingerichtet ist.
Wenn Sie keine Arbeitslasten mit mehreren Netzwerken erstellen, können Sie den Pod-Status und die Ereignisse für weitere Informationen prüfen:
kubectl describe pods samplepod
Die Ausgabe sieht in etwa so aus:
Name: samplepod
Namespace: default
Status: Running
IP: 192.168.6.130
IPs:
IP: 192.168.6.130
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 26m default-scheduler Successfully assigned default/samplepod to node-n1-04
Warning FailedCreatePodSandBox 26m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "e16c58a443ab70d671159509e36894b57493300ea21b6c24c14bdc412b0fdbe6": Unable to create endpoint: [PUT /endpoint/{id}][400] putEndpointIdInvalid failed getting interface and network CR for pod "default/samplepod": failed creating interface CR default/samplepod-c0b60cbe: admission webhook "vnetworkinterface.networking.gke.io" denied the request: NetworkInterface.networking.gke.io "samplepod-c0b60cbe" is invalid: Spec.NetworkName: Internal error: failed to get the referenced network "sample-network": Network.networking.gke.io "sample-network" not found
...
Allgemeine Gründe für einen Fehler bei der Pod-Erstellung:
- Der Pod konnte nicht geplant werden, da die Ressourcenanforderungen für mehrere Netzwerke nicht erfüllt sind
- Die angegebenen Netzwerke konnten nicht identifiziert werden
- Netzwerkschnittstellenobjekt für Pod konnte nicht konfiguriert und erstellt werden
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Google Cloud die NetworkInterface
-Objekte auf dem API-Server erstellt hat:
kubectl get networkinterfaces.networking.gke.io -l podName=samplepod
Fehlerbehebung beim Erstellen von Kubernetes-Netzwerken
Nachdem Sie ein Netzwerk erstellt haben, sollten Knoten, die Zugriff auf das konfigurierte Netzwerk haben sollen, mit einer Netzwerkstatusannotation annotiert werden.
Führen Sie den folgenden Befehl aus, um Annotationen zu beobachten:
kubectl describe node NODE_NAME
Ersetzen Sie NODE_NAME
durch den Namen des Knotens.
Die Ausgabe sieht in etwa so aus:
networking.gke.io/network-status: [{"name":"default"},{"name":"dp-network"}]
In der Ausgabe werden alle auf dem Knoten verfügbaren Netzwerke aufgelistet. Wenn der erwartete Netzwerkstatus nicht auf dem Knoten angezeigt wird, gehen Sie so vor:
Zugriff auf das Netzwerk durch Knoten prüfen
Wenn das Netzwerk nicht in der Netzwerkstatusannotation des Knotens angezeigt wird:
- Prüfen SIe, ob der Knoten Teil eines Pools ist, der für Multi-Networking konfiguriert ist.
- Prüfen Sie die Schnittstellen des Knotens auf Schnittstellen zum Netzwerk, das Sie konfigurieren.
- Wenn ein Knoten den Netzwerkstatus nicht hat und nur eine Netzwerkschnittstelle hat, müssen Sie trotzdem einen Pool von Knoten mit aktiviertem Multi-Netzwerk erstellen.
- Wenn Ihr Knoten die Schnittstelle für das Netzwerk enthält, das Sie konfigurieren, aber in der Annotation für den Netzwerkstatus nicht angezeigt wird, prüfen Sie die Ressourcen
Network
undGKENetworkParamSet
(GNP).
Prüfen Sie die Ressourcen Network
und GKENetworkParamSet
.
Der Status von Network
- und GKENetworkParamSet
-Ressourcen (GNP) enthält ein Bedingungsfeld zum Melden von Konfigurationsfehlern. Wir empfehlen, zuerst GNP zu prüfen, da dafür keine andere Ressource erforderlich ist.
Führen Sie den folgenden Befehl aus, um das Bedingungsfeld zu prüfen:
kubectl get gkenetworkparamsets GNP_NAME -o yaml
Ersetzen Sie GNP_NAME
durch den Namen der GKENetworkParamSet
-Ressource.
Wenn die Bedingung Ready
gleich "true" ist, ist die Konfiguration gültig und die Ausgabe sieht in etwa so aus:
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
podIPv4Ranges:
rangeNames:
- sec-range-blue
vpc: dataplane
vpcSubnet: subnet-dp
status:
conditions:
- lastTransitionTime: "2023-06-26T17:38:04Z"
message: ""
reason: GNPReady
status: "True"
type: Ready
networkName: dp-network
podCIDRs:
cidrBlocks:
- 172.16.1.0/24
Wenn die Bedingung Ready
auf "false" gesetzt ist, wird in der Ausgabe der Grund angezeigt und sie sieht in etwa so aus:
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
podIPv4Ranges:
rangeNames:
- sec-range-blue
vpc: dataplane
vpcSubnet: subnet-nonexist
status:
conditions:
- lastTransitionTime: "2023-06-26T17:37:57Z"
message: 'subnet: subnet-nonexist not found in VPC: dataplane'
reason: SubnetNotFound
status: "False"
type: Ready
networkName: ""
Wenn eine ähnliche Meldung angezeigt wird, prüfen Sie, ob Ihre GNP richtig konfiguriert wurde. Wenn dies bereits der Fall ist, prüfen Sie, ob die Google Cloud-Netzwerkkonfiguration korrekt ist. Nach der Aktualisierung der Google Cloud-Netzwerkkonfiguration müssen Sie die GNP-Ressource möglicherweise neu erstellen, um eine Neusynchronisierung manuell auszulösen. Damit lassen sich unendliche Abfragen der Google Cloud API vermeiden.
Wenn die GNP bereit ist, prüfen Sie die Ressource Network
.
kubectl get networks NETWORK_NAME -o yaml
Ersetzen Sie NETWORK_NAME
durch den Namen der Network
-Ressource.
Die Ausgabe einer gültigen Konfiguration sieht in etwa so aus:
apiVersion: networking.gke.io/v1
kind: Network
...
spec:
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: dp-gnp
type: L3
status:
conditions:
- lastTransitionTime: "2023-06-07T19:31:42Z"
message: ""
reason: GNPParamsReady
status: "True"
type: ParamsReady
- lastTransitionTime: "2023-06-07T19:31:51Z"
message: ""
reason: NetworkReady
status: "True"
type: Ready
reason: NetworkReady
gibt an, dass die Netzwerkressource korrekt konfiguriert ist.reason: NetworkReady
impliziert nicht, dass die Netzwerkressource unbedingt auf einem bestimmten Knoten verfügbar ist oder aktiv verwendet wird.- Wenn eine Fehlkonfiguration oder ein Fehler auftritt, gibt das Feld
reason
in der Bedingung den genauen Grund für das Problem an. Passen Sie in diesen Fällen die Konfiguration entsprechend an. - GKE füllt das Feld ParamsReady aus, wenn das Feld "parametersRef" auf eine
GKENetworkParamSet
-Ressource festgelegt ist, die im Cluster vorhanden ist. Wenn Sie einen ParametertypGKENetworkParamSet
angegeben haben und die Bedingung nicht angezeigt wird, prüfen Sie, ob Name, Art und Gruppe mit der GNP-Ressource in Ihrem Cluster übereinstimmen.