Auf dieser Seite wird erläutert, wie Sie den Trafficfluss zwischen Pods und Services auf Pod-Ebene steuern. Dazu konfigurieren Sie Netzwerkrichtlinien für mehrere Netzwerke, die speziell für ein bestimmtes Pod-Netzwerk gelten.
Als Clusteradministrator können Sie Richtlinien für mehrere Netzwerke konfigurieren, um den Trafficfluss zwischen Pods und Services mithilfe von Firewallregeln auf Pod-Ebene zu steuern. Sie können die Netzwerksicherheit und die Trafficsteuerung in Ihrem Cluster verbessern.
Informationen zur Funktionsweise von Multi-Netzwerk-Netzwerkrichtlinien finden Sie unter Funktionsweise von Netzwerkrichtlinien mit Pod-Netzwerken.
Voraussetzungen
Beachten Sie die folgenden Anforderungen, um Richtlinien für mehrere Netzwerke für mehrere Netzwerke zu verwenden:
- Google Cloud CLI ab Version 459
- Sie benötigen einen GKE-Cluster, auf dem eine der folgenden Versionen ausgeführt wird:
- 1.28.5-gke.1293000 oder höher
- 1.29.0-gke.1484000 oder höher
- Ihr Cluster muss GKE Dataplane V2 verwenden.
Beschränkungen
FQDN-Netzwerkrichtlinie und CiliumClusterWide-Netzwerkrichtlinie werden nicht unterstützt: Wenn Sie die FQDN-Netzwerkrichtlinie und die CiliumClusterWide-Netzwerkrichtlinie auf einem Pod verwenden, der mit mehreren Netzwerken verbunden ist, wirkt sich die Richtlinie auf alle Verbindungen des Pods aus, nicht nur die, auf die die Richtlinien angewendet werden.
Preise
Die folgenden NFO-Funktionen (Network Function Optimizer) werden nur in Clustern unterstützt, die sich in Projekten mit GKE Enterprise befinden:
- Unterstützung mehrerer Netzwerke für Pods
- Unterstützung für nichtflüchtige IP-Adressen für Pods (Vorabversion)
- Richtlinien für mehrere Netzwerke (Vorschau)
- Unterstützung der Dienststeuerung für Pods (Vorschau)
Informationen zu den Gebühren, die für das Aktivieren der Google Kubernetes Engine (GKE) Enterprise-Version anfallen, finden Sie bei den GKE Enterprise-Preisen.
Richtlinien für mehrere Netzwerke konfigurieren
So verwenden Sie Netzwerkrichtlinien für mehrere Netzwerke:
- Cluster mit für mehrere Netzwerke aktivierter GKE erstellen
- Erstellen Sie einen Knotenpool und ein Pod-Netzwerk.
- Verweisen Sie auf das Pod-Netzwerk.
- Erstellen Sie eine Netzwerkrichtlinie, die erzwungen werden soll, die auf dasselbe Pod-Netzwerk verweist, das von der Arbeitslast verwendet wird.
Hinweise
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.
Netzwerkrichtlinie erstellen
Verweisen Sie in der Definition der Netzwerkrichtlinie auf das jeweilige Pod-Netzwerk, um eine Netzwerkrichtlinie zu erstellen, die Regeln im selben Pod-Netzwerk wie Ihre Arbeitslast erzwingt.
Erstellen Sie eine Standard-Netzwerkrichtlinie, um die ausgewählten Regeln für eingehenden Traffic und Ziel-Pods anhand von Labels oder anderen Selektoren zu definieren.
Speichern Sie das folgende Beispielmanifest als
sample-ingress-network-policy1.yaml
:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: sample-network-policy namespace: default annotations: networking.gke.io/network: blue-pod-network # GKE-specific annotation for network selection spec: podSelector: matchLabels: app: test-app-2 # Selects pods with the label "app: test-app-2" policyTypes: - Ingress # Specifies the policy applies only to incoming traffic ingress: - from: # Allow incoming traffic only from... - podSelector: matchLabels: app: test-app-1 # ...pods with the label "app: test-app-1"
Wenden Sie das
sample-ingress-network-policy1.yaml
-Manifest an:kubectl apply -f sample-ingress-network-policy1.yaml
Erstellen Sie eine Standardnetzwerkrichtlinie, um die ausgewählten Regeln für ausgehenden Traffic und Ziel-Pods anhand von Labels oder anderen Selektoren zu definieren.
Speichern Sie das folgende Beispielmanifest als
sample-egress-network-policy2.yaml
:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: sample-network-policy-2 namespace: default annotations: networking.gke.io/network: blue-pod-network # GKE-specific annotation (optional) spec: podSelector: matchLabels: app: test-app-2 policyTypes: - Egress # Only applies to outgoing traffic egress: - to: - podSelector: matchLabels: app: test-app-3
Wenden Sie das
sample-egress-network-policy2.yaml
-Manifest an:kubectl apply -f sample-egress-network-policy2.yaml
Fehlerbehebung bei Richtlinien für mehrere Netzwerke
Wenn Probleme mit Netzwerkrichtlinien auftreten, unabhängig davon, ob sie auf bestimmte Pod-Netzwerke angewendet werden, können Sie das Problem mit den folgenden Befehlen diagnostizieren und beheben:
kubectl get networkpolicy
: listet alle Netzwerkrichtlinienobjekte und Informationen dazu auf.iptables-save
: Ruft alle IP-Adresstabellenketten für einen bestimmten Knoten ab und listet sie auf. Sie müssen diesen Befehl auf dem Knoten als Root ausführen.cilium bpf policy get <endpoint-id>
: ruft zulässige IP-Adressen aus der Richtlinienzuordnung jedes Endpunkts ab und listet sie auf.cilium policy selectors
: gibt die Identitäten und die zugehörigen Richtlinien aus, die sie ausgewählt haben.cilium identity list
: Zeigt Zuordnungen von Identität zur IP-Adresse an.
Nächste Schritte
- Lesen Sie Richtlinien für mehrere Netzwerke.
- Lesen Sie Unterstützung mehrerer Netzwerke für Pods einrichten.