Richtlinien für mehrere Netzwerke einrichten

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:

  1. Erstellen Sie einen Cluster mit GKE mit aktivierter Multi-Netzwerk-Funktion .
  2. Erstellen Sie einen Knotenpool und ein Pod-Netzwerk.
  3. Verweisen Sie auf das Pod-Netzwerk.
  4. 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 update Befehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.

Netzwerkrichtlinie erstellen

  1. 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.

  2. 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"
    
  3. Wenden Sie das sample-ingress-network-policy1.yaml-Manifest an:

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. Wenn 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-3
    
  5. 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 oder nicht, können Sie das Problem mit den folgenden Befehlen diagnostizieren und beheben:

  1. kubectl get networkpolicy: Listet alle Netzwerkrichtlinienobjekte und Informationen dazu auf.
  2. 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.
  3. cilium bpf policy get <endpoint-id>: Ruft die zulässigen IP Adressen aus der Richtlinienzuordnung jedes Endpunkts ab und listet sie auf.
  4. cilium policy selectors: Gibt die Identitäten und die zugehörigen Richtlinien aus, die sie ausgewählt haben.
  5. cilium identity list: Zeigt Zuordnungen von Identität zu IP-Adresse.

Nächste Schritte