Auf dieser Seite wird erläutert, wie Sie die Netzwerksicherheit und die Trafficsteuerung in Ihrem Cluster verbessern können. Dazu konfigurieren Sie Multi-Netzwerk-Netzwerkrichtlinien, die speziell für ein bestimmtes Pod-Netzwerk gelten. Diese Netzwerkrichtlinien für mehrere Netzwerke steuern den Traffic mithilfe von Firewallregeln auf Pod-Ebene und den Trafficfluss zwischen Pods und Services.
Informationen zur Funktionsweise von Netzwerkrichtlinien für mehrere Netzwerke finden Sie unter Funktionsweise von Netzwerkrichtlinien mit Pod-Netzwerken.
Voraussetzungen
Wenn Sie Netzwerkrichtlinien für mehrere Netzwerke verwenden möchten, müssen die folgenden Anforderungen erfüllt sein:
- Google Cloud CLI ab Version 459
- 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, wirken sich die Richtlinien auf alle Verbindungen des Pods aus, einschließlich der Verbindungen, auf die die Richtlinien nicht angewendet werden.
Netzwerkrichtlinien für mehrere Netzwerke konfigurieren
So verwenden Sie Netzwerkrichtlinien für mehrere Netzwerke:
- Erstellen Sie einen Cluster mit GKE mit mehreren Netzwerken .
- 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 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 dem Befehl
gcloud components updateab. Ä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 im selben Pod-Netzwerk wie Ihre Arbeitslast erzwingt, verweisen Sie in der Definition der Netzwerkrichtlinie auf das entsprechende Pod-Netzwerk.
Wenn Sie die ausgewählten Regeln für eingehenden Traffic und Ziel-Pods anhand von 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 anhand von Labels oder anderen Selektoren definieren möchten, erstellen Sie eine Standardnetzwerkrichtlinie.
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 Netzwerkrichtlinien 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 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äten zu IP-Adressen an.
Nächste Schritte
- Informationen zu Netzwerkrichtlinien für mehrere Netzwerke lesen
- Lesen Sie Unterstützung mehrerer Netzwerke für Pods einrichten.