Auf dieser Seite wird erläutert, wie Sie die Kommunikation zwischen den Pods und Services des Clusters mithilfe der Netzwerkrichtlinienerzwingung von GKE steuern.
Sie können auch den ausgehenden Traffic von Pods zu jedem Endpunkt oder Dienst außerhalb des Clusters mithilfe von FQDN-Netzwerkrichtlinien (voll qualifizierter Domainname) steuern. Weitere Informationen finden Sie unter Kommunikation zwischen Pods und Diensten mithilfe von FQDNs steuern.
Erzwingung von GKE-Netzwerkrichtlinien
Mit der Erzwingung von Netzwerkrichtlinien können Sie in Ihrem Cluster Netzwerkrichtlinien für Kubernetes erstellen. Standardmäßig können alle Pods in einem Cluster frei miteinander kommunizieren. Netzwerkrichtlinien erstellen Firewallregeln auf Pod-Ebene, die festlegen, welche Pods und Services in einem Cluster aufeinander zugreifen können.
Mithilfe von Netzwerkrichtlinien können Sie unter anderem gestaffelte Sicherheitsebenen aktivieren, wenn auf dem Cluster eine Anwendung mit mehreren Ebenen bereitgestellt wird. Sie können z. B. eine Netzwerkrichtlinie erstellen, um zu verhindern, dass ein manipulierter Front-End-Dienst in einer Anwendung direkt mit einem mehrere Ebenen tieferen Abrechnungs- oder Buchhaltungsdienst kommuniziert.
Netzwerkrichtlinien können außerdem das gleichzeitige Hosten von Daten mehrerer Nutzer in einer Anwendung vereinfachen. Sie können beispielsweise eine sichere Mehrmandantenfähigkeit bereitstellen, indem Sie ein Mandanten-pro-Namespace-Modell festlegen. In diesem Modell können Regeln von Netzwerkrichtlinien dafür sorgen, dass Pods und Dienste in einem bestimmten Namespace nicht auf andere Pods oder Dienste in einem anderen Namespace zugreifen können.
NetworkPolicy-Plug-ins in GKE
Für die Durchsetzung von Netzwerkrichtlinien ist ein Netzwerk-Plug-in erforderlich. GKE hat die folgenden sich gegenseitig ausschließenden Netzwerk-Plug-ins:
- GKE Dataplane V2, das auf Cilium basiert. GKE Dataplane V2 ist das empfohlene Netzwerk-Plug-in für alle Cluster und die Standardeinstellung für Autopilot-Cluster.
- Das Netzwerkrichtlinien-Plug-in Calico, das nur in Standardclustern verfügbar ist.
Wenn ein Cluster nicht mit einem verwalteten Netzwerk-Plug-in konfiguriert ist, ist ein selbstverwaltetes Plug-in erforderlich, um Netzwerkrichtlinien zu erzwingen. Wenn kein Netzwerk-Plug-in konfiguriert ist, werden Netzwerkrichtlinien nicht erzwungen.
Wenn Sie kein Netzwerk-Plug-in verwenden, um Netzwerkrichtlinien zu erzwingen, empfehlen wir, alle Netzwerkrichtlinien aus dem Cluster zu entfernen. Diese Netzwerkrichtlinien können zu unerwarteten Traffic-Einschränkungen führen, wenn Sie später ein Netzwerk-Plug-in installieren, das die Netzwerkrichtlinie erzwingt.
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. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
Anforderungen und Einschränkungen
Die folgenden Anforderungen und Einschränkungen gelten sowohl für Autopilot- als auch für Standard-Cluster:
- Sie müssen ausgehenden Traffic zum Metadatenserver zulassen.
- Weitere Informationen zu Einschränkungen für GKE Dataplane V2-Cluster finden Sie auf der Seite Bekannte Probleme bei GKE Dataplane V2.
Die folgenden Anforderungen und Einschränkungen gelten nur für Standard-Cluster:
- Sie müssen ausgehenden Traffic zum Metadatenserver zulassen, wenn Sie Netzwerkrichtlinien mit der Identitätsföderation von Arbeitslasten für GKE verwenden.
- Durch Aktivieren der Erzwingung von Netzwerkrichtlinien wird der Arbeitsspeicherbedarf des
kube-system-Prozesses um etwa 128 MB erhöht und es werden etwa 300 Millicore von der CPU benötigt. Wenn Sie also Netzwerkrichtlinien für einen vorhandenen Cluster aktivieren, muss unter Umständen die Clustergröße erhöht werden, um geplante Arbeitslasten weiterhin ausführen zu können. - Zur Durchsetzung von Netzwerkrichtlinien müssen Ihre Knoten neu erstellt werden. Wenn es für den Cluster ein aktives Wartungsfenster gibt, werden die Knoten erst innerhalb des nächsten Wartungsfensters automatisch neu erstellt. Sie können den Cluster jedoch jederzeit manuell aktualisieren.
- Die erforderliche Mindestclustergröße zum Ausführen der Durchsetzung von Netzwerkrichtlinien besteht aus drei Instanzen vom Typ
e2-mediumoder einer Instanz eines Maschinentyps mit mehr als einer zuweisbaren vCPU. Weitere Informationen finden Sie unter Bekannte GKE-Probleme. - Die Netzwerkrichtlinie wird für Cluster, deren Knoten
f1-micro- oderg1-small-Instanzen sind, nicht unterstützt, da die Ressourcenanforderungen zu hoch sind. - Weder GKE Dataplane V2 noch Calico erzwingen Netzwerkrichtlinien für Pods, die die Einstellung
spec.hostNetwork: trueverwenden.
Weitere Informationen zu Knotenmaschinentypen und zuweisbaren Ressourcen finden Sie unter Standardclusterarchitektur – Knoten.
Erzwingung von Netzwerkrichtlinien aktivieren
Wenn Sie GKE Dataplane V2 in Ihrem Cluster verwenden, fahren Sie mit Netzwerkrichtlinie erstellen fort.
Für diese Änderung müssen die Knoten neu erstellt werden, was zu Unterbrechungen Ihrer laufenden Arbeitslasten führen kann. Details zu dieser spezifischen Änderung finden Sie in der entsprechenden Zeile in der Tabelle Manuelle Änderungen, die die Knoten mithilfe einer Knotenupgrade-Strategie neu erstellen und Wartungsrichtlinien berücksichtigen. Weitere Informationen zu Knotenupdates finden Sie unter Unterbrechungen durch Knotenupdates planen.
Bevor Sie fortfahren: Netzwerkrichtlinien werden erzwungen, wenn Knoten neu erstellt werden.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie die folgenden Aufgaben aus, um die Durchsetzung von Netzwerkrichtlinien in Ihrem Cluster zu aktivieren:
Um das Add-on zu aktivieren, führen Sie folgenden Befehl aus:
gcloud container clusters update CLUSTER_NAME --update-addons=NetworkPolicy=ENABLEDErsetzen Sie
CLUSTER_NAMEdurch den Namen des Clusters.Mit dem unten aufgeführten Befehl aktivieren Sie die Durchsetzung von Netzwerkrichtlinien für Ihren Cluster. Dadurch werden die Knotenpools Ihres Clusters bei aktivierter Durchsetzung der Netzwerkrichtlinien neu erstellt.
gcloud container clusters update CLUSTER_NAME --enable-network-policy
Console
So aktivieren Sie die Durchsetzung von Netzwerkrichtlinien in Ihrem Cluster:
Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie unter Cluster Networking (Clusternetzwerk) im Feld Calico Kubernetes Network Policy (Calico-Kubernetes-Netzwerkrichtlinie) auf edit Edit network policy (Netzwerkrichtlinie bearbeiten).
Klicken Sie im Dialogfeld Netzwerkrichtlinie bearbeiten das Kästchen Calico-Kubernetes-Netzwerkrichtlinie für Steuerungsebene aktivieren an und klicken Sie auf Änderungen speichern.
Warten Sie, bis die Änderungen übernommen wurden. Klicken Sie oben rechts in der Konsole auf notifications Benachrichtigungen, um den Fortschritt zu verfolgen.
Klicken Sie im Feld Calico-Kubernetes-Netzwerkrichtlinie noch einmal auf edit Netzwerkrichtlinie bearbeiten.
Klicken Sie im Dialogfeld Netzwerkrichtlinie bearbeiten das Kästchen Calico-Kubernetes-Netzwerkrichtlinie für Knoten aktivieren an.
Klicken Sie auf Änderungen speichern.
API
So aktivieren Sie die Durchsetzung von Netzwerkrichtlinien:
Geben Sie das
networkPolicy-Objekt imcluster-Objekt an, das Sie für projects.zones.clusters.create oder projects.zones.clusters.update bereitstellen.Das
networkPolicy-Objekt erfordert ein Enum, in dem angegeben ist, welcher Netzwerkrichtlinienanbieter verwendet werden soll, sowie einen booleschen Wert, der festlegt, ob die Netzwerkrichtlinie aktiviert werden soll. Wenn Sie die Netzwerkrichtlinie aktivieren, aber keinen Anbieter festlegen, geben die Befehlecreateundupdateeinen Fehler zurück.
Erzwingung von Netzwerkrichtlinien in einem Standard-Cluster deaktivieren
Sie können die Durchsetzung von Netzwerkrichtlinien mit der gcloud CLI, mit der Google Cloud -Konsole oder mit der GKE API deaktivieren. Sie können die Erzwingung von Netzwerkrichtlinien in Autopilot-Clustern oder Clustern, die GKE Dataplane V2 verwenden, nicht deaktivieren.
Für diese Änderung müssen die Knoten neu erstellt werden, was zu Unterbrechungen Ihrer laufenden Arbeitslasten führen kann. Details zu dieser spezifischen Änderung finden Sie in der entsprechenden Zeile in der Tabelle Manuelle Änderungen, die die Knoten mithilfe einer Knotenupgrade-Strategie neu erstellen und Wartungsrichtlinien berücksichtigen. Weitere Informationen zu Knotenupdates finden Sie unter Unterbrechungen durch Knotenupdates planen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie die folgenden Aufgaben aus, um die Durchsetzung von Netzwerkrichtlinien zu deaktivieren:
- Deaktivieren Sie die Durchsetzung von Netzwerkrichtlinien in Ihrem Cluster:
gcloud container clusters update CLUSTER_NAME --no-enable-network-policy