Konfigurieren eines Google Kubernetes Engine-Clusters für AI Platform Pipelines

AI Platform Pipelines erleichtert den Einstieg in Kubeflow Pipelines mit TensorFlow Extended in Google Kubernetes Engine und nimmt Ihnen die schwierigen Aufgaben ab:

  • Erstellen von GKE-Clustern
  • Bereitstellen von Kubeflow Pipelines in GKE-Clustern
  • Erstellen eines Cloud Storage-Buckets zum Speichern von Pipeline-Artefakten

Wenn Sie möchten, können Sie Kubeflow Pipelines mithilfe von AI Platform Pipelines auf einem vorhandenen Cluster bereitstellen, auf dem Kubeflow Pipelines noch nicht installiert ist. Mit dieser Anleitung gehen Sie sicher, dass Ihr Cluster korrekt konfiguriert ist, um Kubeflow Pipelines bereitzustellen und auszuführen.

Darauf achten, dass der GKE-Cluster genügend Ressourcen für AI Platform Pipelines hat

Damit Sie Kubeflow Pipelines mit Google Cloud Marketplace in einem GKE-Cluster bereitstellen können, müssen folgende Bedingungen erfüllt sein:

  • Ihr Cluster muss mindestens drei Knoten haben. Jeder Knoten muss mindestens zwei CPUs und 4 GB Arbeitsspeicher haben.
  • Der Zugriffsbereich des Clusters muss vollständigen Zugriff auf alle Cloud APIs gewähren oder Ihr Cluster muss ein benutzerdefiniertes Dienstkonto verwenden.
  • Auf dem Cluster darf Kubeflow Pipelines noch nicht installiert sein.

Prüfen Sie anhand der folgenden Anleitung, ob der Cluster ausreichend Ressourcen zur Installation von AI Platform Pipelines hat.

  1. Öffnen Sie AI Platform Pipelines in der Google Cloud Console.

    Zu AI Platform Pipelines

  2. Klicken Sie in der Symbolleiste von AI Platform Pipelines auf Neue Instanz. Kubeflow Pipelines wird in Google Cloud Marketplace geöffnet.

  3. Klicken Sie auf Konfigurieren. Das Formular Kubeflow Pipelines bereitstellen wird geöffnet.

  4. Klicken Sie auf Cluster, um die Liste zu maximieren. GKE-Cluster, die nicht genügend Ressourcen oder Berechtigungen haben, werden als unzulässige Cluster aufgeführt. Jeder unzulässige Cluster enthält eine Beschreibung, warum Kubeflow Pipelines nicht installiert werden kann. Beispiele:

GKE-Cluster mehr Ressourcen zuweisen

Wenn Sie Kubeflow Pipelines von Google Cloud Marketplace auf einem vorhandenen GKE-Cluster installieren möchten, muss der Cluster mindestens 3 Knoten mit 2 CPUs und 4 GB Arbeitsspeicher haben.

Folgen Sie der nachstehenden Anleitung, um den Knotenpool im Cluster durch einen mit ausreichend CPU- und Arbeitsspeicherressourcen für AI Platform Pipelines zu ersetzen.

  1. Öffnen Sie Google Kubernetes Engine-Cluster in der Google Cloud Console.

    Zu GKE-Clustern

  2. Klicken Sie auf den Clusternamen. Die Details zum Cluster werden angezeigt.

  3. Klicken Sie in der GKE-Symbolleiste auf Knotenpool hinzufügen. Das Formular Neuen Knotenpool hinzufügen wird geöffnet.

  4. Geben Sie im Formular Neuen Knotenpool hinzufügen die folgenden Informationen ein.

    • Anzahl der Knoten: Geben Sie die Anzahl der Knoten im Knotenpool an. Der Cluster muss mindestens 3 Knoten haben, damit Kubeflow Pipelines mit Google Cloud Marketplace installiert werden kann.
    • Maschinentyp: Geben Sie den Compute Engine-Maschinentyp an, der für Instanzen im Knotenpool verwendet werden soll. Wählen Sie einen Maschinentyp mit mindestens 2 CPUs und 4 GB Arbeitsspeicher aus, z. B. n1-standard-2.

    • Zugriffsbereiche: Klicken Sie unter Zugriffsbereiche auf Uneingeschränkten Zugriff auf alle Cloud APIs zulassen.

    Konfigurieren Sie den Knotenpool ansonsten wie gewünscht. Weitere Informationen zum Hinzufügen von Knotenpools zu einem Cluster.

  5. Klicken Sie auf Knotenpool erstellen. Das Erstellen des Knotenpools dauert einige Minuten.

  6. Klicken Sie im Abschnitt Knotenpools für jeden Knotenpool, mit Ausnahme des im vorherigen Schritt erstellten Knotenpools, auf Löschen. Das Dialogfeld Knotenpool löschen wird angezeigt. Bestätigen Sie dort, dass Sie den Knotenpool löschen möchten.

  7. Klicken Sie auf Löschen. Das Löschen des Knotenpools dauert einige Minuten.

  8. Nachdem Sie die alten Knotenpools gelöscht haben, prüfen Sie, ob der Cluster ausreichende Ressourcen und Zugriffsrechte hat, um Kubeflow Pipelines aus Google Cloud Marketplace zu installieren.

GKE-Cluster Zugriff auf Google Cloud-Ressourcen und APIs gewähren

Es gibt drei Möglichkeiten, um ML-Pipelines Zugriff auf Google Cloud-Ressourcen und APIs zu gewähren:

Wenn Sie AI Platform Pipelines bereitstellen, müssen Sie Ihrem GKE-Cluster vollständigen Zugriff auf Google Cloud-Ressourcen und APIs oder über ein Dienstkonto Zugriff auf Google Cloud gewähren.

GKE-Cluster mit vollständigem Zugriff auf Google Cloud APIs konfigurieren

Damit Ihre ML-Pipelines und anderen GKE-Clusterarbeitslasten leichter auf die Google Cloud-Ressourcen Ihres Projekts zugreifen können, konfigurieren Sie den Cluster für den Zugriffsbereich https://www.googleapis.com/auth/cloud-platform. Dieser Zugriffsbereich bietet vollständigen Zugriff auf die Google Cloud-Ressourcen und APIs, die Sie in Ihrem Projekt aktiviert haben. Wird mit diesem Zugriffsbereich zu umfangreicher Zugriff auf Google Cloud gewährt, konfigurieren Sie einen detaillierten Zugriff mithilfe eines Dienstkontos.

Folgen Sie der nachstehenden Anleitung, um den Knotenpool Ihres Clusters durch einen zu ersetzen, mit dem alle Arbeitslasten in diesem Cluster auf alle Google Cloud APIs zugreifen können, die in Ihrem Projekt aktiviert sind. Besprechen Sie diese Änderungen mit Ihrem GKE-Administrator, bevor Sie den GKE-Cluster ändern.

  1. Öffnen Sie Google Kubernetes Engine-Cluster in der Google Cloud Console.

    Zu GKE-Clustern

  2. Klicken Sie auf den Clusternamen. Die Details zum Cluster werden angezeigt.

  3. Klicken Sie in der GKE-Symbolleiste auf Knotenpool hinzufügen. Das Formular Neuen Knotenpool hinzufügen wird geöffnet.

  4. Geben Sie im Formular Neuen Knotenpool hinzufügen die folgenden Informationen ein.

    • Anzahl der Knoten: Geben Sie die Anzahl der Knoten im Knotenpool an. Der Cluster muss mindestens 3 Knoten haben, damit Kubeflow Pipelines mit Google Cloud Marketplace installiert werden kann.
    • Maschinentyp: Geben Sie den Compute Engine-Maschinentyp an, der für Instanzen im Knotenpool verwendet werden soll. Wählen Sie einen Maschinentyp mit mindestens 2 CPUs und 4 GB Arbeitsspeicher aus, z. B. n1-standard-2.

    • Zugriffsbereiche: Klicken Sie unter Zugriffsbereiche auf Uneingeschränkten Zugriff auf alle Cloud APIs zulassen.

    Konfigurieren Sie den Knotenpool ansonsten wie gewünscht. Weitere Informationen zum Hinzufügen von Knotenpools zu einem Cluster.

  5. Klicken Sie auf Knotenpool erstellen. Das Erstellen des Knotenpools dauert einige Minuten.

  6. Klicken Sie im Abschnitt Knotenpools für jeden Knotenpool, mit Ausnahme des im vorherigen Schritt erstellten Knotenpools, auf Löschen. Das Dialogfeld Knotenpool löschen wird angezeigt. Bestätigen Sie dort, dass Sie den Knotenpool löschen möchten.

  7. Klicken Sie auf Löschen. Das Löschen des Knotenpools dauert einige Minuten.

  8. Nachdem Sie die alten Knotenpools gelöscht haben, prüfen Sie, ob der Cluster ausreichende Ressourcen und Zugriffsrechte hat, um Kubeflow Pipelines aus Google Cloud Marketplace zu installieren.

GKE-Cluster mit detailliertem Zugriff auf Google Cloud APIs konfigurieren

Folgen Sie der nachstehenden Anleitung, um ein Dienstkonto für Ihren GKE-Cluster zu konfigurieren und den Knotenpool des Clusters durch einen zu ersetzen, der Ihr Dienstkonto verwendet. Durch das Erstellen eines Dienstkontos können Sie detailliert verwalten, auf welche Google Cloud-Ressourcen die Arbeitslasten in Ihrem Cluster zugreifen können. Besprechen Sie diese Änderungen mit Ihrem GKE-Administrator, bevor Sie den GKE-Cluster ändern.

  1. Öffnen Sie eine Cloud Shell-Sitzung.

    Cloud Shell öffnen

    Cloud Shell wird im unteren Bereich der Google Cloud Console in einem Frame geöffnet.

  2. Führen Sie in Cloud Shell die folgenden Befehle aus, um Ihr Dienstkonto zu erstellen und diesem ausreichenden Zugriff für das Ausführen von AI Platform Pipelines zu gewähren. Weitere Informationen zu den Rollen, die zum Ausführen von AI Platform Pipelines mit einem nutzerverwalteten Dienstkonto erforderlich sind

    export PROJECT=PROJECT_ID
    export SERVICE_ACCOUNT=SERVICE_ACCOUNT_NAME
    gcloud iam service-accounts create $SERVICE_ACCOUNT \
      --display-name=$SERVICE_ACCOUNT \
      --project=$PROJECT
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/logging.logWriter
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/monitoring.metricWriter
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/monitoring.viewer
    gcloud projects add-iam-policy-binding $PROJECT \
      --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com" \
      --role=roles/storage.objectViewer

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: Name des zu erstellenden Dienstkontos.
    • PROJECT_ID: Google Cloud-Projekt, in dem das Dienstkonto erstellt wird.
  3. Gewähren Sie Ihrem Dienstkonto Zugriff auf alle Google Cloud-Ressourcen oder APIs, die für Ihre ML-Pipelines erforderlich sind. Weitere Informationen zu IAM-Rollen (Identitäts- und Zugriffsverwaltung) und zum Verwalten von Dienstkonten

  4. Weisen Sie Ihrem Nutzerkonto die Rolle "Dienstkontonutzer" (iam.serviceAccountUser) für das Dienstkonto zu.

    gcloud iam service-accounts add-iam-policy-binding \
      "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --member=user:USERNAME \
      --role=roles/iam.serviceAccountUser
    

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: Name Ihres Dienstkontos.
    • PROJECT_ID: Ihr Google Cloud-Projekt.
    • USERNAME: Ihr Nutzername in Google Cloud.
  5. Öffnen Sie Google Kubernetes Engine-Cluster in der Google Cloud Console.

    Zu GKE-Clustern

  6. Klicken Sie auf den Clusternamen. Die Details zum Cluster werden angezeigt.

  7. Klicken Sie in der GKE-Symbolleiste auf Knotenpool hinzufügen. Das Formular Neuen Knotenpool hinzufügen wird geöffnet.

  8. Geben Sie im Formular Neuen Knotenpool hinzufügen die folgenden Informationen ein.

    • Anzahl der Knoten: Geben Sie die Anzahl der Knoten im Knotenpool an. Der Cluster muss mindestens 3 Knoten haben, damit Kubeflow Pipelines mit Google Cloud Marketplace installiert werden kann.
    • Maschinentyp: Geben Sie den Compute Engine-Maschinentyp an, der für Instanzen im Knotenpool verwendet werden soll. Wählen Sie einen Maschinentyp mit mindestens 2 CPUs und 4 GB Arbeitsspeicher aus, z. B. n1-standard-2.

    • Dienstkonto: Wählen Sie das Dienstkonto aus, das Sie in einem früheren Schritt erstellt haben.

    Konfigurieren Sie den Knotenpool ansonsten wie gewünscht. Weitere Informationen zum Hinzufügen von Knotenpools zu einem Cluster.

  9. Klicken Sie auf Knotenpool erstellen. Das Erstellen des Knotenpools dauert einige Minuten.

  10. Klicken Sie im Abschnitt Knotenpools für jeden Knotenpool, mit Ausnahme des im vorherigen Schritt erstellten Knotenpools, auf Löschen. Das Dialogfeld Knotenpool löschen wird angezeigt. Bestätigen Sie dort, dass Sie den Knotenpool löschen möchten.

  11. Klicken Sie auf Löschen. Das Löschen des Knotenpools dauert einige Minuten.

  12. Nachdem Sie die alten Knotenpools gelöscht haben, prüfen Sie, ob der Cluster ausreichende Ressourcen und Zugriffsrechte hat, um Kubeflow Pipelines aus Google Cloud Marketplace zu installieren.

Mit einem Kubernetes-Secret Clustern Zugriff auf Google Cloud-Ressourcen und APIs gewähren

Pipelines, die mithilfe des use_gcp_secret-Operators im Kubeflow Pipelines SDK entwickelt wurden, authentifizieren sich mit einem Kubernetes-Secret bei Google Cloud-Ressourcen.

Folgen Sie dieser Anleitung, um ein Dienstkonto zu erstellen, dem Konto Zugriff auf die von Ihren Pipelines verwendeten Ressourcen zu gewähren und das Dienstkonto dann Ihrem Cluster als Kubernetes-Secret hinzuzufügen.

  1. Öffnen Sie Google Kubernetes Engine-Cluster in der Google Cloud Console.

    Zu GKE-Clustern

  2. Suchen Sie in der Zeile Ihres Clusters den Clusternamen und die Zone.

  3. Öffnen Sie eine Cloud Shell-Sitzung.

    Cloud Shell öffnen

    Cloud Shell wird im unteren Bereich der Google Cloud Console in einem Frame geöffnet. Verwenden Sie Cloud Shell, um den Rest dieses Vorgangs abzuschließen.

  4. Legen Sie die folgenden Umgebungsvariablen fest.

    export PROJECT_ID=PROJECT_ID
    export ZONE=ZONE
    export CLUSTER=CLUSTER_NAME
    export NAMESPACE=NAMESPACE
    export SA_NAME=SERVICE_ACCOUNT_NAME
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Google Cloud-Projekt, in dem Ihr GKE-Cluster erstellt wurde.
    • ZONE: Google Cloud-Zone, in der Ihr GKE-Cluster erstellt wurde.
    • CLUSTER_NAME: Name Ihres GKE-Clusters.
    • NAMESPACE: Namespace in Ihrem GKE-Cluster, in dem Kubeflow Pipelines installiert ist.

      Mithilfe von Namespaces werden Ressourcen in großen Kubernetes-Clustern verwaltet. Wenn der Cluster keine Namespaces verwendet, geben Sie default als kubernetes-namespace ein.

    • SERVICE_ACCOUNT_NAME: Name des Dienstkontos, das für den Zugriff des Kubeflow Pipelines-Clusters auf Google Cloud-Ressourcen und APIs erstellt werden soll.

  5. Erstellen Sie ein Dienstkonto für Ihr Projekt.

    gcloud iam service-accounts create $SA_NAME \
      --display-name $SA_NAME --project "$PROJECT_ID"
    
  6. Um Ihrem Dienstkonto Zugriff auf Google Cloud-Ressourcen zu gewähren, binden Sie die Rollen der Identitäts- und Zugriffsverwaltung an das Dienstkonto. Verwenden Sie die folgende Anleitung, um Ihrem Dienstkonto IAM-Rollen zuzuweisen. Rufen Sie diesen Befehl einmal für jede Rolle auf, die Sie dem Dienstkonto zuweisen möchten.

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member=serviceAccount:$SA_NAME@$PROJECT_ID.iam.gserviceaccount.com \
      --role=iam-role
    
    • iam-role: Die IAM-Rolle, die Ihrem Dienstkonto zugewiesen werden soll. Beispiel: roles/storage.admin gewährt vollständige Kontrolle über Cloud Storage-Buckets und -Objekte in Ihrem Projekt.

      Weitere Informationen zu IAM-Rollen finden Sie in der Anleitung Informationen zu IAM-Rollen.

  7. Erstellen Sie im aktuellen Verzeichnis einen privaten Schlüssel für Ihr Dienstkonto.

    gcloud iam service-accounts keys create ./service-account-key.json \
    --iam-account $SA_NAME@$PROJECT_ID.iam.gserviceaccount.com
    
  8. Konfigurieren Sie kubectl, um eine Verbindung zum Cluster herzustellen, erstellen Sie dann das Kubernetes-Secret user-gcp-sa.

    gcloud container clusters get-credentials "$CLUSTER" --zone "$ZONE" \
      --project "$PROJECT_ID"
    
    kubectl create secret generic user-gcp-sa \
      --from-file=user-gcp-sa.json=./service-account-key.json \
      -n $NAMESPACE --dry-run -o yaml  |  kubectl apply -f -
    
  9. Entfernen Sie den privaten Schlüssel des Dienstkontos.

    rm ./service-account-key.json