Auf dieser Seite wird erläutert, wie Sie die Netzwerksicherheit und die Trafficsteuerung in Ihrem Cluster verbessern können, indem Sie Richtlinien für mehrere Netzwerke konfigurieren, die speziell für ein bestimmtes Pod-Netzwerk gelten. Diese Richtlinien für mehrere Netzwerke steuern den Traffic mithilfe von Firewallregeln auf Pod-Ebene und steuern den Trafficfluss zwischen Pods und Diensten.
Informationen zur Funktionsweise von Richtlinien für mehrere Netzwerke finden Sie unter Funktionsweise von Netzwerk Richtlinien mit Pod-Netzwerken.
Voraussetzungen
Beachten Sie die folgenden Voraussetzungen, wenn Sie Richtlinien für mehrere Netzwerke verwenden möchten:
- 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 eine FQDN-Netzwerkrichtlinie und eine CiliumClusterWide-Netzwerkrichtlinie auf einem Pod verwenden, der mit mehreren Netzwerken verbunden ist, wirken sich die Richtlinien auf alle Verbindungen des Pods aus, einschließlich Verbindungen, auf die die Richtlinien nicht angewendet werden.
Richtlinien für mehrere Netzwerke konfigurieren
So verwenden Sie Richtlinien für mehrere Netzwerke:
- Erstellen Sie einen Cluster mit GKE mit aktivierter Multi-Netzwerk-Funktion .
- Erstellen Sie einen Knotenpool und ein Pod-Netzwerk.
- Verweisen Sie auf das Pod-Netzwerk.
- Erstellen Sie eine Netzwerkrichtlinie, die erzwungen werden soll und auf dasselbe Pod-Netzwerk verweist, das von der Arbeitslast verwendet wird.
Hinweis
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 diesen Task verwenden möchten,
installieren und dann
initialisieren Sie die
gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste
Version mit dem
gcloud components updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
Netzwerkrichtlinie erstellen
Wenn Sie eine Netzwerkrichtlinie erstellen möchten, die Regeln für dasselbe Pod-Netzwerk wie Ihre Arbeitslast erzwingt, verweisen Sie in der Definition der Netzwerkrichtlinie auf das spezifische Pod-Netzwerk.
Wenn Sie die ausgewählten Regeln für eingehenden Traffic und Ziel-Pods basierend auf Labels oder anderen Selektoren definieren möchten, erstellen Sie eine Standard-Netzwerkrichtlinie.
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.yamlWenn Sie die ausgewählten Regeln für ausgehenden Traffic und Ziel-Pods basierend auf Labels oder anderen Selektoren definieren möchten, erstellen Sie eine Standard-Netzwerkrichtlinie.
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-3Wenden 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 oder nicht, 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 die zulässigen 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 zu IP-Adresse.
Nächste Schritte
- Informationen zu Richtlinien für mehrere Netzwerke
- Lesen Sie Unterstützung mehrerer Netzwerke für Pods einrichten.