Netzwerkkonfiguration eines Dataproc-Clusters

Überblick

Die Compute Engine-VM-Instanzen in einem Dataproc-Cluster, die aus Master- und Worker-VMs bestehen, müssen über ICMP, TCP (alle Ports) und UDP (alle Ports) miteinander kommunizieren können.

Firewallregelanforderung

Für Dataproc müssen Sie eine Firewallregel zum Zulassen von eingehendem Traffic mit den folgenden Merkmalen erstellen:

  • Die Quelle für die Regel muss die VMs des Clusters enthalten. Sie können eine Quelle mit IP-Adressbereichen definieren oder VMs mit Quelltags oder Quelldienstkonten identifizieren. Wenn Sie eine Quellspezifikation weglassen, verwendet die Firewallregel den Bereich 0.0.0.0/0 (beliebige IP-Adresse) als Quelle. Wenn Ihre Dataproc-VMs externe IP-Adressen haben, können sie Traffic von überall aus dem Internet annehmen. Folglich sollten Sie die Quelle so eingeschränkt wie möglich gestalten, um Ihre Anforderungen zu erfüllen und Ihren Cluster zu sichern.

  • Das Ziel für die Regel muss die VMs des Clusters identifizieren. Das Ziel kann alle VMs im VPC-Netzwerk sein oder Sie können bestimmte Ziel-VMs mithilfe von Zieltags oder Zieldienstkonten identifizieren.

  • Die Regel muss die folgenden Protokolle und Ports enthalten: TCP (alle Ports, 0 bis 65535), UDP (alle Ports, 0 bis 65535) und ICMP.

    gcloud compute firewall-rules create my-subnet-firewall-rule --allow tcp
    
    Es empfiehlt sich, die Firewallregel für eingehenden Traffic mit einem bestimmten Quellbereich festzulegen oder Google Cloud-VMs nach Netzwerktag oder Dienstkonto zu identifizieren. Weitere Informationen finden Sie in der Übersicht über Firewallregeln.

So legen Sie den Quell-IP-Bereich fest

Sie können den Quell-IP-Bereich festlegen, wenn Sie eine Firewallregel über die Google Cloud Console oder mit dem gcloud-Befehlszeilentool erstellen.

Console

Verwenden Sie in der Cloud Console die Seite Firewallregel erstellen, um eine Firewallregel mit einem angegebenen Quell-IP-Bereich zu erstellen.

gcloud-Befehl

Verwenden Sie den Befehl gcloud compute firewall-rules create, um eine Firewallregel mit einem angegebenen Quell-IP-Bereich zu erstellen.

gcloud compute firewall-rules create "tcp-rule" --allow tcp:80 \
    --source-ranges="10.0.0.0/22,10.0.0.0/14" \
    --description="Narrowing TCP traffic"

Standard-Netzwerkkonfiguration eines Dataproc-Clusters

Wenn Sie einen Dataproc-Cluster erstellen, können Sie das Standardnetzwerk für den Cluster übernehmen.

Standardnetzwerk

Im folgenden Snapshot der Google Cloud Console sehen Sie das auf der Dataproc-Seite Cluster erstellen ausgewählte Standardnetzwerk.

Nachdem der Cluster erstellt wurde, werden auf der Seite "VM-Instanzen" der Google Cloud Console die entsprechenden Firewallregeln für die Instanzen im Cluster angezeigt. Wenn Sie ein [Standardnetzwerk]/vpc/docs/vpc#default-network) verwenden, enthält es eine vorkonfigurierte default-allow-internal-Firewallregel, die Traffic aus dem Quellbereich 10.128.0.0/9 ermöglicht. Wenn Sie diese vorausgefüllte Firewallregel löschen oder ein anderes VPC-Netzwerk als das Standardnetzwerk verwenden, wird der eingehende Traffic durch die implizierte Regel zum Ablehnen von eingehendem Traffic blockiert. In diesen Fällen müssen Sie eine Firewallregel für eingehenden Traffic erstellen, die den Traffic zu allen TCP- und UDP-Ports von Instanzen im Cluster zulässt. Weitere Informationen erhalten Sie von Ihrem Netzwerk- oder Sicherheitsadministrator unter Übersicht über Firewallregeln.

VPC-Netzwerk erstellen

Sie können beim Erstellen eines Dataproc-Clusters Ihr eigenes Virtual Private Cloud-Netzwerk (VPC) angeben. Dazu müssen Sie zuerst ein VPC-Netzwerk mit Firewallregeln erstellen. Wenn Sie anschließend den Cluster erstellen, verknüpfen Sie Ihr Netzwerk mit dem Cluster.

VPC-Netzwerk erstellen

Ein VPC-Netzwerk lässt sich über die Cloud Console oder mithilfe des Befehlszeilentools gcloud compute networks create erstellen. Sie können ein VPC-Netzwerk im automatischen Modus oder im benutzerdefinierten Modus erstellen (nachfolgend entsprechend als "automatisches" bzw. "benutzerdefiniertes" Netzwerk bezeichnet). Ein automatisches Netzwerk wird automatisch mit Subnetzen in jeder Compute Engine-Region konfiguriert. Benutzerdefinierte Netzwerke werden nicht automatisch mit Subnetzen konfiguriert. Sie müssen ein oder mehrere Subnetze in einer oder mehreren Compute Engine-Regionen erstellen, wenn Sie das benutzerdefinierte Netzwerk erstellen. Weitere Informationen finden Sie unter VPC-Netzwerktypen.

Im Folgenden werden die Optionen erläutert, die Ihnen beim Erstellen eines automatischen oder benutzerdefinierten Netzwerks in der Cloud Console zur Verfügung stehen.

Automatisch

Im Screenshot der Cloud Console unten sehen Sie die Cloud Console-Felder, die für das automatische Erstellen von Subnetzwerken ausgefüllt sind (ein VPC-Netzwerk im automatischen Modus). Sie müssen eine oder mehrere Firewallregeln auswählen. Die Regel network-name-allow-internal, die die Ports udp:0-65535;tcp:0-65535;icmp öffnet, sollte ausgewählt werden, um uneingeschränkten internen IP-Netzwerkzugriff für VM-Instanzen im Netzwerk zu ermöglichen. Sie können auch die Regel network-name-allow-ssh auswählen, um den Standard-SSH-Port 22 zu öffnen, damit SSH-Verbindungen zum Netzwerk möglich sind.

Personalisiert

Wenn Sie beim Erstellen eines Netzwerks benutzerdefinierte Subnetzwerke auswählen (ein VPC-Netzwerk im benutzerdefinierten Modus), müssen Sie für jedes Subnetzwerk die Region und den privaten IP-Adressbereich angeben. Geben Sie einen IP-Adressbereich von 10.0.0.0/8(oder ggf. einen restriktiveren Bereich wie 10.128.0.0/16) ein, um vollständigen internen Zugriff zwischen VMs im Netzwerk zu aktivieren.

Beachten Sie, dass Sie erst nach dem Erstellen des Netzwerks Firewallregeln für benutzerdefinierte Subnetzwerke bereitstellen. Wählen Sie zum Aktivieren des uneingeschränkten Netzwerkzugriffs zwischen VMs in Ihrem Netzwerk eine Firewallregel aus oder erstellen Sie eine Firewallregel, die die Ports udp:0-65535;tcp:0-65535;icmp öffnet, wie unten im Cloud Console-Screenshot gezeigt.

Cluster erstellen, der Ihr VPC-Netzwerk verwendet

gcloud-Befehl

Sie können den Cloud SDK-Befehl gcloud dataproc clusters create mit dem Flag ‑‑network oder ‑‑subnet verwenden, um einen Cluster zu erstellen, der ein automatisches oder benutzerdefiniertes Subnetzwerk verwendet.

Flag --network:
Sie können das Flag ‑‑network verwenden, 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 my-cluster \
    --network network-name \
    --region=region \
    ... other args ...

Da beispielsweise beim Erstellen automatischer Netzwerke die zugehörigen Subnetze in jeder Region denselben Namen wie das automatische Netzwerk haben, können Sie den Namen des automatischen Netzwerks an das Flag ‑‑network (‑‑network auto-net-name) übergeben. Auf diese Weise erstellen Sie einen Cluster, der das automatische Subnetzwerk in der Region des Clusters verwendet.

Flag --subnet verwenden
Sie können das Flag ‑‑subnet verwenden, um einen Cluster zu erstellen, der ein automatisches oder benutzerdefiniertes Subnetzwerk in der Region verwendet, in der der Cluster erstellt wird. Sie müssen dem Flag ‑‑subnet den vollständigen Ressourcenpfad des Subnetzes übergeben, das der Cluster verwenden wird.

gcloud dataproc clusters create cluster-name \
    --subnet projects/project-id/regions/region/subnetworks/subnetwork-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": "my-project-id",
  "clusterName": "example-cluster",
  "config": {
    "configBucket": "",
    "gceClusterConfig": {
      "subnetworkUri": "custom-subnet-1",
      "zoneUri": "us-central1-b"
    },
    ...

Console

Nachdem Sie ein VPC-Netzwerk mit Firewallregeln erstellt haben, die VMs uneingeschränkten Zugriff auf den privaten IP-Adressbereich des Netzwerks ermöglichen, erstellen Sie einen Cluster über die Seite Cloud Console → Create cluster (Cluster erstellen). Wählen Sie dann Ihr Netzwerk über die Netzwerkauswahl aus. Maximieren Sie dazu die Überschrift Preemptible workers, bucket, network, version, initialization, & access options (Worker auf Abruf, Bucket, Netzwerk, Version, Initialisierung und Zugriffsoptionen), um auf die Auswahlfelder zuzugreifen.

Nachdem Sie das Netzwerk ausgewählt haben, zeigt die Subnetzwerk-Auswahl die Subnetze an, die in der Region verfügbar sind, die Sie für die Erstellung des Clusters ausgewählt haben. Wenn ein Subnetzwerk in der Region nicht verfügbar ist, wird "No subnetworks in this region" (Keine Subnetzwerke in dieser Region) in der Subnetzwerk-Auswahl angezeigt.

Im Folgenden sehen Sie einen Screenshot mit Auswahlfeldern für Netzwerk und Subnetzwerk auf der Dataproc-Seite Cluster erstellen der Cloud Console. Es wurde hier ein benutzerdefiniertes Subnetzwerk in einem benutzerdefinierten Netzwerk ausgewählt.

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

Ein Dataproc-Cluster kann durch die Teilnahme als Dienstprojekt ein freigegebenes VPC-Netzwerk verwenden. Mit der Option "Freigegebene VPC" wird das freigegebene VPC-Netzwerk in einem anderen Projekt definiert, das als Hostprojekt bezeichnet wird. Das Hostprojekt wird für IAM-Mitglieder in verknüpften Dienstprojekten zur Verfügung gestellt. Weitere Informationen finden Sie unter Freigegebene VPC – Übersicht.

Sie erstellen den Dataproc-Cluster in einem Projekt. Im Szenario eines freigegebenen VPC-Netzwerks ist dieses Projekt ein Dienstprojekt. Sie müssen auf die Projektnummer dieses Projekts verweisen. Sie können die Projektnummer beispielsweise so ermitteln:

  1. Wechseln Sie auf der Seite "IAM & admin" (IAM & Verwaltung) zum Tab Settings (Einstellungen).

  2. Wählen Sie in der Drop-down-Liste für Projekte oben auf der Seite das Projekt aus, das Sie zum Erstellen des Dataproc-Clusters verwenden.

  3. Notieren Sie die Projektnummer.

Ein IAM-Mitglied muss als Administrator für freigegebene VPCs 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 Dataproc-Projekt mit dem Hostprojekt.

  3. Konfigurieren Sie eines oder beide der folgenden Dienstkonten so, dass sie die Rolle Netzwerknutzer für das Hostprojekt haben. Dataproc versucht, das erste Dienstkonto zu verwenden und greift bei Bedarf auf das Google APIs-Dienstkonto zurück.

    • service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
    • Google APIs-Dienstkonto [project-number]@cloudservices.gserviceaccount.com
  4. Gehen Sie auf der Seite "IAM & admin" (IAM & Verwaltung) zum Tab "IAM".

  5. Wählen Sie oben auf der Seite in der Drop-down-Liste das gewünschte Projekt aus.

  6. Klicken Sie auf Hinzufügen. Wiederholen Sie diese Schritte, um beide Dienstkonten hinzuzufügen:

    1. Fügen Sie das Dienstkonto dem Feld Members (Mitglieder) hinzu.

    2. Wählen Sie im Menü Roles (Rollen) die Option Compute Engine > Compute Network User (Compute-Netzwerknutzer) aus.

    3. Klicken Sie auf Hinzufügen.

Nachdem beide Dienstkonten über die Netzwerknutzer-Rolle für das Hostprojekt verfügen, können Sie einen Cluster erstellen, der Ihr VPC-Netzwerk nutzt.

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. Die VM-Instanzen haben keine öffentlichen IP-Adressen. Dazu muss für das Subnetzwerk des Clusters 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-Befehl

Sie können einen Dataproc-Cluster mit ausschließlich internen IP-Adressen über den Befehl gcloud dataproc clusters create mit dem Flag ‑‑no-address erstellen.

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 dem gleichen Namen wie das Netzwerk in der Region verwendet, in der der Cluster erstellt wird.

gcloud dataproc clusters create my-cluster \
    --no-address \
    --network network-name \
    --region=region \
    ... other args ...

Da beispielsweise beim Erstellen automatischer Netzwerke die zugehörigen Subnetze in jeder Region denselben Namen wie das automatische Netzwerk haben, können Sie den Namen des automatischen Netzwerks an das Flag ‑‑network (‑‑network auto-net-name) übergeben. Auf diese Weise erstellen Sie einen Cluster, der das automatische Subnetzwerk in der Region des Clusters verwendet.

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

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 internalIpOnly-Feld von GceClusterConfig im Rahmen einer clusters.create-Anfrage auf "true" setzen, um nur interne IP-Adressen zu aktivieren.

Beispiel

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 privatem Google-Zugriff über die Dataproc-Seite Cluster erstellen der Cloud Console erstellen. Maximieren Sie unten auf der Seite den Link Preemptible workers, bucket, network, version, initialization, & access option (Worker auf Abruf, Bucket, Netzwerk, Version, Initialisierung und Zugriffsoptionen). Klicken Sie dann auf Internal IP only (Nur interne IP), um diese Funktion für Ihren Cluster zu aktivieren.

Dataproc und VPC-SC-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 bei Verwendung von VPC-SC-Netzwerken mit Dataproc-Clustern: