In diesem Dokument wird beschrieben, wie Sie Managed Lustre in GKE einbinden, um eine optimierte Umgebung für anspruchsvolle, datenintensive Arbeitslasten wie künstliche Intelligenz (KI), maschinelles Lernen (ML) und Hochleistungs-Computing (HPC) zu erstellen.
In diesem Dokument stellen Sie einen GKE-Cluster mit XPK bereit, erstellen eine Managed Lustre-Instanz und hängen sie an den Cluster an. Um diese Konfiguration zu testen, führen Sie eine Arbeitslast auf Knoten aus, die mit Flex-Start bereitgestellt werden.
Dieses Dokument richtet sich an ML-Entwickler und Daten- und KI-Spezialisten , die die Kubernetes-Containerorchestrierungsfunktionen mit Managed Lustre-Instanzen kennenlernen möchten. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die in den Google Cloud Inhalten verwiesen wird, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Hintergrund
In diesem Abschnitt werden die in diesem Dokument verwendeten Schlüsseltechnologien beschrieben:
XPK
XPK ist ein Tool, das die Bereitstellung und Verwaltung von GKE-Clustern und -Arbeitslasten vereinfacht, insbesondere für KI/ML-Aufgaben. Mit XPK können vorkonfigurierte, für das Training optimierte Infrastrukturen generiert werden. Daher ist es eine gute Option für Machbarkeitsstudien und Testumgebungen.
Sie können einen Cluster mit TPUs über die Google Cloud CLI oder ein Accelerated Processing Kit (XPK) erstellen.
- Verwenden Sie die gcloud CLI, um Ihre GKE-Clusterinstanz manuell zu erstellen und so vorhandene GKE-Produktionsumgebungen präzise anzupassen oder zu erweitern.
- Mit XPK können Sie schnell GKE-Cluster erstellen und Arbeitslasten für Machbarkeitsstudien und Tests ausführen. Weitere Informationen finden Sie in der XPK-README-Datei.
In diesem Dokument wird XPK ausschließlich für die Bereitstellung und Verwaltung von Ressourcen verwendet.
Weitere Informationen finden Sie in der Dokumentation zum Accelerated Processing Kit (XPK).
Flex-Start
Mit Flex-Start können Sie die TPU-Bereitstellung optimieren, indem Sie nur für die Ressourcen bezahlen, die Sie benötigen. Flex-Start wird empfohlen, wenn Ihre Arbeitslast dynamisch bereitgestellte Ressourcen nach Bedarf für bis zu sieben Tage und kostengünstigen Zugriff erfordert.
In diesem Dokument wird Flex-Start als Beispiel für eine Verbrauchsoption verwendet. Sie können aber auch andere Optionen wie Reservierungen oder Spot-VMs verwenden. Weitere Informationen finden Sie unter Optionen für den Verbrauch von Beschleunigern für KI/ML-Arbeitslasten in GKE.
Managed Lustre
Managed Lustre ist ein leistungsstarker, paralleler Dateisystemdienst, der für anspruchsvolle Arbeitslasten entwickelt wurde. Mit dem Managed Lustre CSI-Treiber können Sie Managed Lustre-Instanzen in GKE einbinden und dabei standardmäßige Kubernetes-PVCs (PersistentVolumeClaims) und PVs (PersistentVolumes) verwenden. Dieser Treiber ist besonders nützlich für KI-, ML- und HPC-Arbeitslasten, die nichtflüchtigen, skalierbaren Speicher mit hohem Durchsatz erfordern.
Weitere Informationen finden Sie unter Managed Lustre CSI-Treiber.
Hinweis
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Cloud Managed Lustre API und die Google Kubernetes Engine API. APIs 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 updateBefehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.
Umgebung vorbereiten
In diesem Abschnitt wird beschrieben, wie Sie Ihre Clusterumgebung vorbereiten.
Erstellen Sie im neuen Terminalfenster eine virtuelle Umgebung:
VENV_DIR=~/venvp4;python3 -m venv $VENV_DIR;source $VENV_DIR/bin/activateFolgen Sie der Anleitung in der XPK-Installations datei, um XPK zu installieren. Verwenden Sie
pip installanstelle des Klonens aus der Quelle.Legen Sie die Standardumgebungsvariablen fest:
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export LOCATION=LOCATION export CLUSTER_NAME=CLUSTER_NAME export GKE_VERSION=VERSION export NETWORK_NAME=NETWORK_NAME export IP_RANGE_NAME=IP_RANGE_NAME export FIREWALL_RULE_NAME=FIREWALL_RULE_NAME export ACCELERATOR_TYPE=v6e-16 export NUM_SLICES=1Ersetzen Sie die folgenden Werte:
- PROJECT_ID: Ihre Google Cloud Projekt ID.
- LOCATION: die Zone Ihres GKE
Clusters. Wählen Sie eine Zone für Flex-Start- und Managed Lustre-Instanzen aus. Beispiel:
us-west4-a. Gültige Durchsatzwerte finden Sie unter Informationen zur GPU- und TPU-Bereitstellung mit dem Bereitstellungsmodus „Flex-Start“. - CLUSTER_NAME: der Name Ihres GKE Clusters.
- VERSION: die GKE-Version. Stellen Sie sicher, dass dies mindestens die Mindestversion ist, die Managed Lustreunterstützt. Beispiel: 1.33.2-gke.1111000.
- NETWORK_NAME: der Name des Netzwerks das Sie erstellen.
- IP_RANGE_NAME: der Name des IP-Adressbereichs.
- FIREWALL_RULE_NAME: der Name der Firewall regel.
Mit den vorherigen Befehlen wird ein Beschleunigertyp
v6e-16konfiguriert. Diese Konfiguration enthält die folgenden Variablen:ACCELERATOR_TYPE=v6e-16: entspricht TPU Trillium mit einer4x4-Topologie. Diese TPU-Version weist GKE an, einen Knotenpool mit mehreren Hosts bereitzustellen.v6e-16wird in GKE dem Maschinentypct6e-standard-4tzugeordnet.NUM_SLICES=1: die Anzahl der TPU-Slice-Knotenpools, die XPK für den ausgewähltenACCELERATOR_TYPEerstellt.
Wenn Sie die Variablen
ACCELERATOR_TYPEundNUM_SLICESanpassen möchten, finden Sie in den folgenden Dokumenten die verfügbaren Kombinationen:- Informationen zur TPU-Version, zum Maschinentyp für GKE, zur Topologie und zur verfügbaren Zone, die Sie verwenden möchten, finden Sie unter TPUs in GKE planen.
- Informationen zum Zuordnen des GKE-Maschinentyps zum Beschleunigertyp in der Cloud TPU API finden Sie in der Dokumentation zu TPU Trillium (v6e).
VPC-Netzwerk vorbereiten
Bereiten Sie ein VPC-Netzwerk (Virtual Private Cloud) für Ihre Managed Lustre-Instanz und Ihren GKE-Cluster vor.
Aktivieren Sie die Service Networking API:
gcloud services enable servicenetworking.googleapis.com \ --project=${PROJECT_ID}Erstellen Sie ein VPC-Netzwerk:
gcloud compute networks create ${NETWORK_NAME} \ --subnet-mode=auto --project=${PROJECT_ID} \ --mtu=8896Erstellen Sie einen IP-Adressbereich für das VPC-Peering:
gcloud compute addresses create ${IP_RANGE_NAME} \ --global \ --purpose=VPC_PEERING \ --prefix-length=20 \ --description="Managed Lustre VPC Peering" \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID}Rufen Sie den CIDR-Bereich des IP-Adressbereichs ab:
CIDR_RANGE=$( gcloud compute addresses describe ${IP_RANGE_NAME} \ --global \ --format="value[separator=/](address, prefixLength)" \ --project=${PROJECT_ID} )Erstellen Sie eine Firewallregel, um TCP-Traffic aus dem IP-Adressbereich zuzulassen:
gcloud compute firewall-rules create ${FIREWALL_RULE_NAME} \ --allow=tcp:988,tcp:6988 \ --network=${NETWORK_NAME} \ --source-ranges=${CIDR_RANGE} \ --project=${PROJECT_ID}Verbinden Sie das VPC-Peering:
gcloud services vpc-peerings connect \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID} \ --ranges=${IP_RANGE_NAME} \ --service=servicenetworking.googleapis.com
Managed Lustre-Speicherinstanz erstellen
Erstellen Sie eine Managed Lustre-Speicherinstanz.
Legen Sie Variablen für die Speicherinstanz fest:
export STORAGE_NAME=STORAGE_NAME export STORAGE_THROUGHPUT=STORAGE_THROUGHPUT export STORAGE_CAPACITY=STORAGE_CAPACITY_GIB export STORAGE_FS=lfsErsetzen Sie die folgenden Werte:
- STORAGE_NAME: der Name Ihrer Managed Lustre-Instanz.
- STORAGE_THROUGHPUT: der Durchsatz der Managed Lustre-Instanz in MiB/s pro TiB. Gültige Durchsatzwerte finden Sie unter Neue Kapazität berechnen.
- STORAGE_CAPACITY_GIB: die Kapazität der Managed Lustre-Instanz in GiB. Gültige Kapazitäts werte finden Sie unter Zulässige Kapazitäts- und Durchsatzwerte.
Erstellen Sie die Managed Lustre-Instanz:
gcloud lustre instances create ${STORAGE_NAME} \ --per-unit-storage-throughput=${STORAGE_THROUGHPUT} \ --capacity-gib=${STORAGE_CAPACITY} \ --filesystem=${STORAGE_FS} \ --location=${LOCATION} \ --network=projects/${PROJECT_ID}/global/networks/${NETWORK_NAME} \ --project=${PROJECT_ID} \ --async # Creates the instance asynchronouslyMit dem Flag
--asyncwird die Instanz asynchron erstellt und eine Vorgangs-ID zur Nachverfolgung des Status bereitgestellt.Prüfen Sie den Status des Vorgangs:
gcloud lustre operations describe OPERATION_ID \ --location=${LOCATION} \ --project=${PROJECT_ID}Ersetzen Sie
OPERATION_IDdurch die ID aus der Ausgabe des vorherigen asynchronen Befehls. Wenn Sie die ID nicht haben, können Sie alle Vorgänge auflisten:gcloud lustre operations list \ --location=${LOCATION} \ --project=${PROJECT_ID}Die Instanz ist bereit, wenn in der Befehlsausgabe
done: trueangezeigt wird.
GKE-Cluster mit XPK erstellen
Erstellen Sie mit XPK einen GKE-Cluster mit einem Knotenpool.
GKE-Cluster erstellen:
xpk cluster create --cluster ${CLUSTER_NAME} \
--num-slices=${NUM_SLICES} \
--tpu-type=${ACCELERATOR_TYPE} \
--zone=${LOCATION} \
--project=${PROJECT_ID} \
--gke-version=${GKE_VERSION} \
--custom-cluster-arguments="--network=${NETWORK_NAME}" \
--enable-lustre-csi-driver \
--flex
Mit diesem Befehl wird ein GKE-Cluster mit XPK erstellt. Der Cluster ist für die Verwendung von Flex-Start für die Knotenbereitstellung konfiguriert und der Managed Lustre CSI-Treiber ist aktiviert.
Speicherinstanz an den Cluster anhängen
In diesem Abschnitt wird der XPK-Befehl zum Anhängen von Speicher (xpk storage attach) mit einer Manifestdatei verwendet, um das PersistentVolume (PV) und den PersistentVolumeClaim (PVC) zu konfigurieren.
In diesem Abschnitt wird eine Beispielmanifestdatei
aus dem XPK-Quellcode verwendet.
Führen Sie die folgenden Schritte aus, um die Managed Lustre-Speicherinstanz an Ihren GKE-Cluster anzuhängen:
Laden Sie die Beispielmanifestdatei in Ihr aktuelles Arbeitsverzeichnis herunter und speichern Sie sie als
lustre-manifest-attach.yaml.Aktualisieren Sie die Manifestdatei mit den Informationen Ihrer Managed Lustre-Instanz:
Ersetzen Sie im Abschnitt
PersistentVolumedie folgenden Werte:- STORAGE_SIZE: die Größe der Managed Lustre-Instanz in GiB.
- PROJECT_ID/ZONE/INSTANCE_NAME: der vollständige Ressourcenpfad Ihrer Managed Lustre-Instanz.
- IP_ADDRESS: die IP-Adresse der Managed Lustre-Instanz.
- FILE_SYSTEM: der Dateisystemtyp, der
lfsist.
Ersetzen Sie im Abschnitt
PersistentVolumeClaimdie folgenden Werte:- STORAGE_SIZE: die Größe des PersistentVolumeClaim in GiB.
Hängen Sie die Speicherinstanz an den Cluster an:
xpk storage attach ${STORAGE_NAME} \ --cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION} \ --type=lustre \ --mount-point='/lustre-data' \ --readonly=false \ --auto-mount=true \ --manifest='./lustre-manifest-attach.yaml'Prüfen Sie, ob Sie den Speicher für den Cluster angehängt haben:
xpk storage list \ --cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION}
Arbeitslast ausführen
Führen Sie eine Arbeitslast mit der angehängten Managed Lustre-Instanz aus . Mit dem folgenden Beispielbefehl werden die verfügbaren Laufwerke aufgelistet und eine Datei „hello“ im Verzeichnis der Managed Lustre-Instanz erstellt.
Arbeitslast erstellen und ausführen:
xpk workload create --workload test-lustre \
--cluster=${CLUSTER_NAME} --project=${PROJECT_ID} --zone=${LOCATION} \
--command="df -h && echo 'hello' > /lustre-data/hello.txt && cat /lustre-data/hello.txt" \
--tpu-type=${ACCELERATOR_TYPE} \
--num-slices=1 \
--flex
Bereinigen
Wenn Sie die Schritte in diesem Dokument ausgeführt haben, löschen Sie den Cluster, um unerwünschte Kosten für Ihr Konto zu vermeiden:
xpk cluster delete --cluster ${CLUSTER_NAME} \
--zone ${LOCATION} \
--project ${PROJECT_ID}
Nächste Schritte
- Weitere Informationen zum Managed Lustre CSI Treiber.
- Referenz zum Google Cloud Managed Lustre CSI-Treiber
- Informationen zum Erstellen und Verwenden eines Volumes, das von Lustre unterstützt wird
- Informationen zum Zugriff auf vorhandene Lustre-Instanzen