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 schaffen.
In diesem Dokument stellen Sie einen GKE-Cluster mit XPK bereit, erstellen eine verwaltete 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 Data & AI-Spezialisten, die sich für die Funktionen zur Kubernetes-Containerorchestrierung interessieren, die von verwalteten Lustre-Instanzen unterstützt werden. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die in 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. XPK hilft bei der Generierung vorkonfigurierter, für das Training optimierter Infrastruktur. Daher ist es eine gute Option für Proof-of-Concepts und Testumgebungen.
Sie können einen Cluster erstellen, in dem TPUs verwendet werden. Verwenden Sie dazu die Google Cloud CLI oder ein Accelerated Processing Kit (XPK).
- Verwenden Sie die gcloud CLI, um Ihre GKE-Clusterinstanz manuell zu erstellen, um vorhandene GKE-Produktionsumgebungen präzise anzupassen oder zu erweitern.
- Mit XPK können Sie schnell GKE-Cluster erstellen und Arbeitslasten für Konzeptnachweise und Tests ausführen. Weitere Informationen finden Sie in der README-Datei für XPK.
In diesem Dokument wird XPK ausschließlich zum Bereitstellen und Verwalten 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, da Sie nur für die Ressourcen zahlen, die Sie benötigen. Flex-Start wird empfohlen, wenn für Ihre Arbeitslast Ressourcen nach Bedarf für bis zu sieben Tage dynamisch bereitgestellt werden müssen und Sie kostengünstigen Zugriff benötigen.
In diesem Dokument wird „Flex-Start“ als Beispiel für eine Verbrauchsoption verwendet. Sie können aber auch andere Optionen wie Reservierungen oder Spot-Instanzen verwenden. Weitere Informationen finden Sie unter Optionen für die Nutzung von Beschleunigern für KI-/ML-Arbeitslasten in GKE.
Managed Lustre
Managed Lustre ist ein paralleles Hochleistungs-Dateisystem, das für anspruchsvolle Arbeitslasten entwickelt wurde. Mit dem Managed Lustre-CSI-Treiber können Sie Managed Lustre-Instanzen in GKE einbinden. Dazu verwenden Sie standardmäßige Kubernetes-Anforderungen an nichtflüchtige Volumes (PersistentVolumeClaims, PVCs) und nichtflüchtige Volumes (PersistentVolumes, PVs). Dieser Treiber ist besonders nützlich für KI-, ML- und HPC-Arbeitslasten, die einen persistenten, skalierbaren Speicher mit hohem Durchsatz erfordern.
Weitere Informationen finden Sie unter Informationen zum verwalteten Lustre-CSI-Treiber.
Hinweise
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, 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.
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/activateInstallieren Sie XPK gemäß der Anleitung in der Datei XPK installation. 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 GPU-, TPU- und H4D-Nutzung mit dem Bereitstellungsmodus „Flex-Start“. - CLUSTER_NAME: Name Ihres GKE-Clusters.
- VERSION: die GKE-Version. Achten Sie darauf, dass dies mindestens die Mindestversion ist, die Managed Lustre unterstü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 Firewallregel.
Mit den vorherigen Befehlen wird ein Beschleunigertyp vom Typ
v6e-16konfiguriert. Diese Konfiguration umfasst 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-16entspricht dem Maschinentypct6e-standard-4tin GKE.NUM_SLICES=1: Die Anzahl der TPU-Slice-Knotenpools, die von XPK für die ausgewählteACCELERATOR_TYPEerstellt werden.
Wenn Sie die Variablen
ACCELERATOR_TYPEundNUM_SLICESanpassen möchten, finden Sie in den folgenden Dokumenten die verfügbaren Kombinationen:- Informationen zum Ermitteln der TPU-Version, des Maschinentyps für GKE, der Topologie und der 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
VPC-Netzwerk für Ihre verwaltete Lustre-Instanz und Ihren GKE-Cluster vorbereiten
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=8896IP-Adressbereich für VPC-Peering erstellen:
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 den 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}Stellen Sie die VPC-Peering-Verbindung her.
gcloud services vpc-peerings connect \ --network=${NETWORK_NAME} \ --project=${PROJECT_ID} \ --ranges=${IP_RANGE_NAME} \ --service=servicenetworking.googleapis.com
Managed Lustre-Speicherinstanz erstellen
Managed Lustre-Speicherinstanz erstellen
Variablen für die Speicherinstanz festlegen:
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ätswerte 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 asynchronouslyDas Flag
--asyncerstellt die Instanz asynchron und stellt eine Vorgangs-ID zum Verfolgen des Status bereit.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
Mit XPK einen GKE-Cluster mit einem Knotenpool erstellen
Erstellen Sie einen GKE-Cluster.
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 verwaltete Lustre-CSI-Treiber ist aktiviert.
Speicherinstanz an den Cluster anhängen
In diesem Abschnitt wird der Befehl zum Anhängen von XPK-Speicher (xpk storage attach) mit einer Manifestdatei verwendet, um das PersistentVolume (PV) und den PersistentVolumeClaim (PVC) zu konfigurieren.
In diesem Abschnitt wird ein Beispielmanifest aus dem XPK-Quellcode verwendet.
So hängen Sie die Managed Lustre-Speicherinstanz an Ihren GKE-Cluster an:
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 verwalteten 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 Festplatten aufgelistet und eine Datei namens „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 CSI-Treiber für Google Cloud Managed Lustre
- Lustre-basierte Volumes erstellen und verwenden
- Auf vorhandene Lustre-Instanzen zugreifen