Netzwerkkonfiguration des Dataproc-Clusters

Auf dieser Seite werden die Anforderungen und Optionen für die Konfiguration von Dataproc-Clustern erläutert.

Dataproc-Konnektivitätsanforderungen

Der Dataproc-Cluster muss sich in einem VPC-Netzwerk befinden, das die Routen- und Firewallanforderungen erfüllt, um sicher auf Google APIs und andere Ressourcen zugreifen zu können.

Anforderungen an Routen

Der Dataproc-Agent, der auf Cluster-VMs ausgeführt wird, benötigt eine Route zum Internet, um auf die Dataproc Control API zuzugreifen und Jobs abzurufen und den Status zu melden. VPC-Netzwerke enthalten bei ihrer Erstellung eine vom System generierte Standardroute zum Internet. Das Löschen der Standardroute zum Internet wird nicht empfohlen. Verwenden Sie stattdessen Firewalls, um den Netzwerkzugriff zu steuern. Beachten Sie, dass Cluster nur mit internen IP-Adressen diese Standardroute zum Internet auch benötigen, um auf Dataproc Control APIs und andere Google-Dienste wie Cloud Storage zugreifen zu können. Ihr Traffic verlässt jedoch nicht die Google-Rechenzentren.

Firewallanforderungen

Virtuelle Maschinen (VMs) des Dataproc-Clusters müssen über die Protokolle ICMP, TCP (alle Ports) und UDP (alle Ports) miteinander kommunizieren können.

Die Firewallregel default-allow-internal für das VPC-Netzwerk default erfüllt die Anforderungen an die Verbindungsanforderungen von Dataproc-Clustern und lässt eingehenden Traffic aus dem Quellbereich 10.128.0.0/9 von allen VMs im VPC-Netzwerk so zu:

Regel Netzwerk Richtung Priorität Quellbereich Protokolle:Ports
default-allow-internal default Eingehend 65534 10.128.0.0/9 tcp:0-65535,udp:0-65535,icmp
  • Wenn Sie die Firewallregel default-allow-internal löschen, wird eingehender Traffic im Netzwerk default durch die implizierte Regel zum Ablehnen von eingehendem Traffic blockiert.

  • Wenn Sie die Firewallregel default-allow-internal löschen oder das VPC-Netzwerk default nicht verwenden, müssen Sie Ihre eigene Regel erstellen, die die Dataproc-Verbindungsanforderungen erfüllt, und sie dann auf das VPC-Netzwerk des Clusters anwenden.

Best Practice: Erstellen Sie eine Firewallregel für eingehenden Traffic für Ihr Cluster-VPC-Netzwerk, die eingehende Verbindungen nur zwischen Cluster-VMs zulässt. Verwenden Sie dazu einen Quell-IP-Bereich oder identifizieren Sie Cluster-VMs nach Netzwerktag oder Dienstkonto.

Firewallregel für eingehenden Traffic erstellen

Wenn Sie oder Ihr Netzwerk- oder Sicherheitsadministrator eine Firewallregel für eingehenden Traffic erstellen, die auf das VPC-Netzwerk eines Dataproc-Clusters angewendet werden soll, muss diese die folgenden Eigenschaften haben:

  • Der Parameter sources gibt die Quellen für Pakete an. Alle Dataproc-Cluster-VMs müssen miteinander kommunizieren können. Sie können die VMs im Cluster nach IP-Adressbereich, Quelltags oder Dienstkonten identifizieren, die den VMs zugeordnet sind.

  • Das Ziel für die Regel muss die Cluster-VMs identifizieren. Das Ziel kann alle VMs im VPC-Netzwerk sein oder Sie können VMs anhand des IP-Adressbereichs, des Zieltags oder des Zieldienstkontos identifizieren.

  • Die Regel muss die folgenden Protokolle und Ports enthalten:

    • TCP (alle Ports, 0 bis 65535)
    • UDP (alle Ports, 0 bis 65535)
    • ICMP

    Dataproc verwendet Dienste, die auf mehreren Ports ausgeführt werden. Wenn Sie alle Ports angeben, können die Dienste erfolgreich ausgeführt werden.

VPC-Firewallregeln diagnostizieren

Für Pakete, die nicht von Firewallregeln mit höherer Priorität verarbeitet werden, können Sie zwei Firewallregeln mit niedriger Priorität (65534) ablehnen. Im Gegensatz zu den implizierten Firewallregeln können Sie das Logging von Firewallregeln für jede dieser Regeln mit niedriger Priorität aktivieren:

  1. Eine Regel zum Ablehnen von eingehendem Traffic (Quellen 0.0.0.0/0, alle Protokolle, alle Ziele im VPC-Netzwerk)

  2. Regel für Ablehnen von ausgehenden Traffic (Ziele 0.0.0.0/0, alle Protokolle, alle Ziele im VPC-Netzwerk)

  • Mit diesen Regeln mit niedriger Priorität und dem Logging von Firewallregeln können Sie Pakete protokollieren, die nicht von einer höheren Priorität und möglicherweise spezifischeren Firewallregeln verarbeitet werden. Diese beiden Regeln mit niedriger Priorität entsprechen auch den Best Practices für die Sicherheit, indem sie eine Strategie für das endgültige Verwerfen von Paketen implementieren.

  • Prüfen Sie die Firewallregellogs für diese Regeln, um festzustellen, ob Sie Regeln mit höherer Priorität erstellen oder ändern müssen, um Pakete zuzulassen. Wenn beispielsweise zwischen Dataproc-Cluster-VMs gesendete Pakete verworfen werden, kann dies ein Signal dafür sein, dass Ihre Firewallregeln angepasst werden müssen.

VPC-Netzwerk erstellen

Anstatt das VPC-Netzwerk default zu verwenden, können Sie Ihr eigenes VPC-Netzwerk im automatischen Modus oder in einem benutzerdefinierten VPC-Netzwerk erstellen. Beim Erstellen des Clusters verknüpfen Sie Ihr Netzwerk mit dem Cluster.

Assured Workloads-Umgebung: Wenn Sie für die Einhaltung gesetzlicher Vorschriften eine Assured Workloads-Umgebung verwenden, müssen der Cluster, sein VPC-Netzwerk und seine Cloud Storage-Buckets in der Assured Workloads-Umgebung enthalten sein.

Cluster erstellen, der Ihr VPC-Netzwerk verwendet

Google Cloud CLI

Verwenden Sie gcloud dataproc clusters create mit dem Flag ‑‑network oder ‑‑subnet, um einen Cluster in einem Subnetz in Ihrem Netzwerk zu erstellen. Wenn Sie das Flag ‐‐network verwenden, verwendet der Cluster ein Subnetzwerk mit demselben Namen wie das angegebene Netzwerk in der Region, in der der Cluster erstellt wird.

--network example: Da automatische Netzwerke mit Subnetzen in jeder Region erstellt werden, wobei jedem Subnetz der Netzwerkname zugewiesen wird, können Sie den Namen des VPC-Netzwerk im automatischen Modus an das Flag ‑‑network übergeben. Der Cluster verwendet das VPC-Subnetzwerk im automatischen Modus in der mit dem Flag ‐‐region angegebenen Region.

gcloud dataproc clusters create CLUSTER_NAME \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

--subnet example: Sie können mit dem Flag ‑‑subnet einen Cluster erstellen, der ein Subnetz im automatischen Modus oder in einem benutzerdefinierten VPC-Netzwerk in der Clusterregion verwendet. Geben Sie den vollständigen Ressourcenpfad des Subnetzes an.

gcloud dataproc clusters create CLUSTER_NAMEW \
    --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \
    --region=REGION \
    ... other args ...

REST API

Sie können das Feld networkUri oder subnetworkUri von GceClusterConfig im Rahmen einer clusters.create-Anfrage angeben.

Beispiel

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "PROJECT_ID",
  "clusterName": CLUSTER_NAME,
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": SUBNET_NAME,
    },
    ...

Console

Wählen Sie Ihr Netzwerk im Bereich Cluster anpassen im Abschnitt "Netzwerkkonfiguration" aus. Nachdem Sie das Netzwerk ausgewählt haben, zeigt die Auswahl Subnetzwerk die in der für den Cluster ausgewählten Region verfügbaren Subnetzwerke an.

Cluster erstellen, der ein VPC-Netzwerk in einem anderen Projekt verwendet

Dataproc-Cluster können ein freigegebenes VPC-Netzwerk verwenden, das in einem Hostprojekt definiert ist. Das Projekt, in dem der Dataproc-Cluster erstellt wird, wird als Dienstprojekt bezeichnet.

  1. Ermitteln Sie die Projektnummer des Dataproc-Clusters:

    1. Öffnen Sie in der Google Cloud Console die Seite IAM & Verwaltung Einstellungen. Wählen Sie das Projekt aus, in dem Sie den Dataproc-Cluster erstellen möchten. Kopieren Sie die Projekt-ID.
  2. Ein Hauptkonto mit der Rolle "Administrator für freigegebene VPC" muss die folgenden Schritte ausführen. Weitere Informationen finden Sie in der Anleitung unter Freigegebene VPC einrichten.

    1. Das freigegebene VPC-Hostprojekt muss aktiviert sein.

    2. Verknüpfen Sie das Projekt mit dem Dataproc-Cluster mit dem Hostprojekt.

    3. Konfigurieren Sie die beiden folgenden Dienstkonten so, dass sie die Rolle Netzwerknutzer für das Hostprojekt haben:

      1. Öffnen Sie in der Google Cloud Console die Seite IAM & Verwaltung.

      2. Verwenden Sie die Projektauswahl, um das neue Hostprojekt auszuwählen.

      3. Klicken Sie auf Zugriff erlauben.

      4. Füllen Sie das Formular „Zugriff gewähren“ aus. Wiederholen Sie diese Schritte, um beide Dienstkonten hinzuzufügen:

        1. Hauptkonten hinzufügen: Geben Sie das Dienstkonto ein.

        2. Rollen zuweisen: Fügen Sie „Compute Network“ in das Filterfeld ein und wählen Sie dann die Rolle Compute Network User aus.

        3. Klicken Sie auf Speichern.

  3. Nachdem beide Dienstkonten die Rolle Network User für das Hostprojekt haben, erstellen Sie einen Cluster, der das freigegebene VPC-Netzwerk verwendet.

Cluster erstellen, der ein VPC-Subnetzwerk in einem anderen Projekt verwendet

Ein Dataproc-Cluster kann ein freigegebenes VPC-Subnetzwerk verwenden, das in einem Hostprojekt definiert ist. Das Projekt, in dem der Dataproc-Cluster erstellt wird, wird als Dienstprojekt bezeichnet.

  1. Ermitteln Sie die Projektnummer des Dataproc-Clusters:

    1. Öffnen Sie in der Google Cloud Console die Seite IAM & Verwaltung Einstellungen. Wählen Sie das Projekt aus, in dem Sie den Dataproc-Cluster erstellen möchten. Kopieren Sie die Projekt-ID.
  2. Ein Hauptkonto mit der Rolle "Administrator für freigegebene VPC" muss die folgenden Schritte ausführen. Weitere Informationen finden Sie in der Anleitung unter Freigegebene VPC einrichten.

    1. Das freigegebene VPC-Hostprojekt muss aktiviert sein.

    2. Verknüpfen Sie das Projekt mit dem Dataproc-Cluster mit dem Hostprojekt.

    3. Folgen Sie der Anleitung in diesem Schritt, um die beiden folgenden Dienstkonten so zu konfigurieren, dass sie die Rolle Netzwerknutzer für das Hostprojekt haben:

      1. Öffnen Sie in der Google Cloud Console die Seite VPC-Netzwerke.

      2. Verwenden Sie die Projektauswahl, um das Hostprojekt auszuwählen.

      3. Klicken Sie auf das Netzwerk mit dem Subnetzwerk, das Ihr Dataproc-Cluster verwenden wird.

      4. Klicken Sie auf der Seite VPC-Netzwerkdetails auf das Kästchen neben dem Namen des Subnetzwerks, das Ihr Cluster verwenden wird.

      5. Wenn das Infofeld nicht geöffnet ist, klicken Sie auf Infofeld anzeigen.

      6. Führe für jedes Dienstkonto die folgenden Schritte aus:

        1. Klicken Sie im Infofeld auf Hauptkonto hinzufügen.

        2. Füllen Sie das Formular „Zugriff gewähren“ aus:

          1. Hauptkonten hinzufügen: Geben Sie das Dienstkonto ein.

          2. Rollen zuweisen: Fügen Sie „Compute Network“ in das Filterfeld ein und wählen Sie dann die Rolle Compute Network User aus.

          3. Klicken Sie auf Speichern.

  3. Nachdem beide Dienstkonten die Rolle Network User für das Hostprojekt haben, erstellen Sie einen Cluster, der das freigegebene VPC-Subnetzwerk verwendet.

Dataproc-Cluster nur mit internen IP-Adressen erstellen

Sie können einen Dataproc-Cluster erstellen, der vom öffentlichen Internet isoliert ist und dessen VM-Instanzen über ein privates IP-Subnetzwerk kommunizieren (Cluster-VMs erhalten keine öffentlichen IP-Adressen). Dazu muss im Subnetzwerk der private Google-Zugriff aktiviert sein, damit Clusterknoten über interne IP-Adressen auf Google APIs und Google-Dienste wie Cloud Storage zugreifen können.

gcloud-CLI

Wenn Sie einen Dataproc-Cluster nur mit internen IP-Adressen erstellen möchten, verwenden Sie den Befehl gcloud dataproc clusters create mit dem Flag ‑‑no-address.

Flags ‐‐no-address und ‐‐network verwenden: Verwenden Sie das Flag ‑‑no-address mit dem Flag ‑‑network, um einen Cluster zu erstellen, der ein Subnetzwerk mit demselben Namen wie das Netzwerk in der Region verwendet, in der der Cluster erstellt wird.

gcloud dataproc clusters create CLUSTER_NAME \
    --no-address \
    --network NETWORK_NAME \
    --region=REGION \
    ... other args ...

Da automatische Netzwerke beispielsweise mit Subnetzen in jeder Region erstellt werden, die denselben Namen wie das automatische Netzwerk haben, können Sie den Namen des automatischen Netzwerks an den ‑‑network flag übergeben, um einen Cluster zu erstellen, der das automatische Subnetzwerk in der Region des Clusters verwendet.

Flags ‐‐no-address und ‐‐subnet verwenden: Verwenden Sie das Flag ‑‑no-address mit den ‑‑subnet-Flags, um einen Cluster zu erstellen, der ein automatisches oder benutzerdefiniertes Subnetzwerk in der Region verwendet, in der der Cluster erstellt wird. Übergeben Sie dem Flag ‑‑subnet den vollständigen Ressourcenpfad des Subnetzes.

gcloud dataproc clusters create cluster-name \
    --no-address \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \
    --region=region \
    ... other args ...

REST API

Sie können das Feld GceClusterConfig internalIpOnly im Rahmen einer clusters.create-Anfrage auf true festlegen, um nur interne IP-Adressen zu aktivieren.

Example:

POST /v1/projects/my-project-id/regions/us-central1/clusters/
{
  "projectId": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b",
      "internalIpOnly": true
    },
    ...

Console

Sie können einen Dataproc-Cluster mit aktiviertem privater Google-Zugriff über die Dataproc-Seite Cluster erstellen in der Google Cloud Console erstellen. Klicken Sie im Bereich Cluster anpassen auf Nur interne IP, um dieses Feature für Ihren Cluster zu aktivieren.

Da reine interne IP-Cluster standardmäßig keinen Zugriff auf das Internet haben, schlagen Jobs, die Abhängigkeiten aus dem Internet herunterladen, fehl, z. B. Jobs, die Spark-Abhängigkeitspakete von Maven Central herunterladen. Es gibt mehrere Problemumgehungen, um das Problem zu vermeiden:

  1. Verwenden Sie Cloud NAT, um den Clusterzugriff auf das Internet zu ermöglichen.

  2. Erstellen Sie ein benutzerdefiniertes Image, das die Abhängigkeiten enthält (z. B. Spark-Abhängigkeitspakete in /usr/lib/spark/jars/).

  3. Laden Sie die Abhängigkeiten in einen Cloud Storage-Bucket hoch und verwenden Sie dann eine Initialisierungsaktion, um die Abhängigkeiten während der Clustererstellung aus dem Bucket herunterzuladen.

Dataproc- und VPC Service Controls-Netzwerke

Mit VPC Service Controls können Administratoren einen Sicherheitsbereich für Ressourcen aus von Google verwalteten Diensten festlegen, um die Kommunikation mit und zwischen diesen Diensten zu steuern.

Beachten Sie die folgenden Einschränkungen und Strategien, wenn Sie VPC Service Controls-Netzwerke mit Dataproc-Clustern verwenden: