Auf dieser Seite wird erläutert, wie Sie lokalen SSD-Speicher in GKE-Clustern (Google Kubernetes Engine) bereitstellen und Arbeitslasten konfigurieren, um Daten aus lokalem, SSD-gestützten Speicher zu nutzen, der an Knoten in Ihrem Cluster angehängt ist.
Weitere Informationen zur Unterstützung lokaler SSDs in GKE finden Sie unter Lokaler SSD-Speicher.
Hinweise
Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:
- Aktivieren Sie die Google Kubernetes Engine API. Google Kubernetes Engine API 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 update
ab. In früheren gcloud CLI-Versionen werden die Befehle in diesem Dokument möglicherweise nicht unterstützt.
Cluster oder Knotenpool mit sitzungsspezifischem lokalen SSD-Speicher erstellen
Verwenden Sie die Google Cloud CLI, um einen Cluster oder Knotenpool mit sitzungsspezifischem lokalem SSD-Speicher zu erstellen.
Verwenden Sie die Option --ephemeral-storage-local-ssd
, um vollständig verwalteten lokalen sitzungsspezifischen Speicher, der von lokalen SSD-Volumes unterstützt wird, anzuhängen. Dieser Speicher ist an den Lebenszyklus Ihrer Pods gebunden.
Wenn Ihre Pods sitzungsspezifischen Speicher anfordern, plant GKE sie zur Ausführung auf Knoten, für die lokale SSD-Volumes als sitzungsspezifischer Speicher konfiguriert sind. Wenn Sie eine speziellere oder detailliertere Steuerung Ihrer lokalen SSDs benötigen, empfehlen wir stattdessen den lokalen SSD-gestützten Rohblockspeicher.
Wenn Cluster-Autoscaling aktiviert ist, skaliert GKE Ihre Knoten automatisch, wenn der Cluster sitzungsspezifischen Speicherplatz benötigt. Ihre Pods können über das Volume emptyDir
auf Daten auf lokalen SSD-Volumes zugreifen.
Welche gcloud-Befehlszeile Sie zum Erstellen des Clusters oder Knotenpools ausführen, hängt davon ab, welche Maschinenserie des ausgewählten Maschinentyps erstellt wird. Beispielsweise gehören N1- und N2-Maschinentypen zu einer Maschinenserie der ersten oder zweiten Generation, während C3-Maschinentypen zu einer Maschinenserie der dritten Generation gehören.
Cluster mit lokaler SSD erstellen
1. oder 2. Generation
Wenn Sie einen Maschinentyp aus einer Maschinenserie der ersten oder zweiten Generation verwenden, erstellen Sie den Cluster durch Angabe der Option --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS
. Mit dieser Option wird die angegebene Anzahl von lokalen SSD-Volumes auf jedem Knoten bereitgestellt, um sie für den sitzungsspezifischen Speicher des kubelet zu verwenden.
Diese Einstellungen gelten nur für den Standardknotenpool. Wenn nachfolgende Knotenpools eine lokale SSD benötigen, geben Sie dies während der Knotenpoolerstellung an.
Führen Sie den folgenden Befehl aus, um einen Cluster zu erstellen, der auf GKE-Version 1.25.3-gke.1800 oder höher ausgeführt wird, in dem der Standardpool lokale SSD-Volumes verwendet:
gcloud container clusters create CLUSTER_NAME \
--ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
--machine-type=MACHINE_TYPE \
--release-channel CHANNEL_NAME
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.NUMBER_OF_DISKS
ist die Anzahl der lokalen SSD-Volumes, die auf jedem Knoten bereitgestellt werden sollen. Diese Volumes werden während der Knoteneinrichtung zu einem logischen Volume zusammengefasst. Die maximale Anzahl der Volumes variiert je nach Maschinentyp und Region. Beachten Sie, dass ein Teil der lokalen SSD-Kapazität für die Systemnutzung reserviert ist.MACHINE_TYPE
ist der zu verwendende Maschinentyp. Dieses Feld ist erforderlich, da lokale SSDs nicht mit dem Standardtype2-medium
verwendet werden können.CHANNEL_NAME
: Eine Release-Version, die GKE-Versionen nach 1.25.3-gke.1800 enthält. Wenn Sie keine Release-Version verwenden möchten, können Sie statt--release-channel
auch das Flag--cluster-version
verwenden und eine gültige Version nach 1.25.3-gke.1800 angeben. Verwenden Sie den Befehlgcloud container get-server-config
, um die gültigen Versionen zu ermitteln.
3. oder 4. Generation
Wenn Sie einen Maschinentyp aus einer Maschinenserie der dritten oder vierten Generation verwenden, müssen Sie beim Erstellen eines Clusters keine lokalen SSD-Optionen angeben. Die Anzahl der Laufwerke, die an jeden Knoten angehängt sind, hängt vom Maschinentyp ab.
Führen Sie den folgenden Befehl aus, um einen Cluster zu erstellen:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--cluster-version CLUSTER_VERSION
Ersetzen Sie Folgendes:
CLUSTER_NAME
ist der Name des Clusters.MACHINE_TYPE
ist der zu verwendende Maschinentyp aus einer Maschinenserie der dritten oder vierten Generation.CLUSTER_VERSION
: Eine GKE-Clusterversion, die lokale SSDs auf Maschinentypen aus der Maschinenserie einer dritten oder vierten Generation unterstützt.
Knotenpool mit lokaler SSD erstellen
1. oder 2. Generation
Führen Sie den folgenden Befehl aus, um einen Knotenpool zu erstellen, der auf GKE-Version 1.25.3-gke.1800 oder höher ausgeführt wird und lokale SSD-Volumes verwendet:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
--machine-type=MACHINE_TYPE
Ersetzen Sie Folgendes:
POOL_NAME
ist der Name des neuen Knotenpools.CLUSTER_NAME
ist der Name des Clusters.NUMBER_OF_DISKS
ist die Anzahl der lokalen SSD-Volumes, die auf jedem Knoten bereitgestellt werden sollen. Diese Volumes werden während der Knoteneinrichtung zu einem logischen Volume zusammengefasst. Die maximale Anzahl der Volumes variiert je nach Maschinentyp und Region. Beachten Sie, dass ein Teil der lokalen SSD-Kapazität für die Systemnutzung reserviert ist.MACHINE_TYPE
ist der zu verwendende Maschinentyp. Dieses Feld ist erforderlich, da lokale SSDs nicht mit dem Standardtype2-medium
verwendet werden können.
3. oder 4. Generation
Wenn Sie einen Maschinentyp aus einer Maschinenserie der dritten oder vierten Generation verwenden, müssen Sie beim Erstellen eines Knotenpools keine lokalen SSD-Optionen angeben. Die Anzahl der Volumes, die an jeden Knoten angehängt sind, hängt vom Maschinentyp ab.
Führen Sie den folgenden Befehl aus, um einen Knotenpool zu erstellen:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--node-version NODE_VERSION
Ersetzen Sie Folgendes:
POOL_NAME
: der Name des neuen Knotenpools.CLUSTER_NAME
ist der Name des Clusters.MACHINE_TYPE
ist der zu verwendende Maschinentyp aus einer Maschinenserie der dritten oder vierten Generation.NODE_VERSION
: Eine GKE-Knotenpoolversion, die lokale SSDs auf Maschinentypen aus der Maschinenserie einer dritten oder vierten Generation unterstützt.
Knoten im Knotenpool werden mit dem Label cloud.google.com/gke-ephemeral-storage-local-ssd=true
erstellt. Sie können die Berechtigungen mit dem folgenden Befehl prüfen:
kubectl describe node NODE_NAME
Sitzungsspezifischen lokalen SSD-gestützten Speicher mit Autopilot-Clustern verwenden
Sie können lokale SSDs für sitzungsspezifischen Speicher verwenden, wenn Sie Ihre Pods auf eine der folgenden Arten konfigurieren:
- Sie wählen explizit eine Maschinenserie für die Ausführung Ihrer Pods aus und geben entweder den
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
-nodeSelector oder eine Kapazitätsreservierung mit lokalen SSDs an. Weitere Informationen zur Auswahl von Maschinenserien in Autopilot finden Sie unter Autopilot-Pod-Leistung durch Auswahl einer Maschinenserie optimieren. - Sie fordern einen GPU-Typ an, der lokale SSDs unterstützt, und geben entweder den
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
-nodeSelector oder eine Kapazitätsreservierung mit lokalen SSDs an. NVIDIA H100-GPUs (80 GB) und NVIDIA A100-GPUs (80 GB) verwenden immer lokale SSDs für sitzungsspezifischen Speicher. Sie können den Knotenselektor für diese GPUs nicht angeben. Weitere Informationen zum Anfordern von GPUs in Autopilot finden Sie unter GPUs in Containern anfordern.
Eine Liste der Maschinenserien, die lokale SSDs in Autopilot unterstützen, finden Sie unter Maschinenserien, die lokale SSDs in Autopilot unterstützen.
Lokale SSDs direkt in Arbeitslastmanifesten anfordern
Wenn Sie eine lokale SSD für sitzungsspezifischen Speicher verwenden möchten, fügen Sie Ihrem Arbeitslastmanifest den nodeSelector cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
hinzu. Im folgenden Pod-Manifest werden beispielsweise lokale SSDs als sitzungsspezifischer Speicher für GPU-Pods ausgewählt:
apiVersion: v1
kind: Pod
metadata:
name: l4-localssd-pod
spec:
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
requests:
cpu: 16
memory: 64Gi
ephemeral-storage: 800Gi
limits:
cpu: 16
memory: 64Gi
ephemeral-storage: 800Gi
nvidia.com/gpu: 8
nodeSelector:
cloud.google.com/gke-accelerator: nvidia-l4
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
Lokale SSDs mit Kapazitätsreservierungen anfordern
Wenn Sie eine Compute Engine-Kapazitätsreservierung verwenden, um Maschinen mit lokalen SSDs zu reservieren, hängt Autopilot verfügbare lokale SSDs aus der Reservierung an Ihre Knoten an. Sie müssen lokale SSDs nicht explizit im Arbeitslastmanifest auswählen. Weitere Informationen zur Verwendung von Reservierungen mit Autopilot finden Sie unter Kapazitätsreservierungen in Autopilot-Clustern aufnehmen.
Das folgende Pod-Manifest wählt beispielsweise eine bestimmte Reservierung mit lokalen SSDs aus:
apiVersion: v1
kind: Pod
metadata:
name: local-ssd-pod
spec:
nodeSelector:
cloud.google.com/machine-family: MACHINE_SERIES
cloud.google.com/reservation-name: localssd-count-reservation
cloud.google.com/reservation-affinity: "specific"
containers:
- name: my-container
image: "k8s.gcr.io/pause"
resources:
requests:
cpu: 6
memory: "25Gi"
ephemeral-storage: "100Gi"
limits:
cpu: 12
memory: "50Gi"
ephemeral-storage: "200Gi"
Ersetzen Sie MACHINE_SERIES
durch eine unterstützte Maschinenserie, die auch lokale SSDs unterstützt. Wenn die angegebene Maschinenserie keine lokalen SSDs unterstützt, schlägt die Bereitstellung mit einem Fehler fehl.
Maschinenserien, die lokale SSDs in Autopilot unterstützen
Autopilot-Cluster unterstützen die Verwendung lokaler SSDs für sitzungsspezifischen Speicher mit den folgenden Maschinenserien:
(nur mit Kapazitätsreservierung) |
(nur mit Kapazitätsreservierung) |
(nur mit Kapazitätsreservierung) |
(nur mit Kapazitätsreservierung) |
(nur mit Kapazitätsreservierung) |
(immer gebündelt) |
(nur mit Kapazitätsreservierung) |
(immer gebündelt) |
(immer gebündelt) |
Legacy-API-Parameter verwenden
Die Option --local-ssd-count
ist ein Legacy-API-Parameter, der die SCSI Local SSD unterstützt.
Die Compute Engine-Maschinenserie der dritten Generation unterstützt kein SCSI und nur NVMe. Sie sollten diese Option nur mit Windows Server-Clustern verwenden.
Wenn Sie derzeit den Legacy-API-Parameter für Linux-Cluster verwenden, empfehlen wir stattdessen die Verwendung der Option --ephemeral-storage-local-ssd
.
Lokale SSD auf Windows Server-Clustern
Bei der Verwendung lokaler SSDs mit Ihren Clustern, auf denen Windows Server-Knotenpools ausgeführt werden, müssen Sie sich beim Knoten anmelden und das Laufwerk formatieren, bevor Sie es verwenden können. Im folgenden Beispiel wird das lokale SSD-Laufwerk mit dem NTFS-Dateisystem formatiert. Sie können auch Verzeichnisse unter dem Volume erstellen. In diesem Beispiel befinden sich die Verzeichnisse unter Laufwerk D.
PS C:\> Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ntfs -Confirm:$false
PS C:\> mkdir D:\test-ssd
Auf lokale SSD-Volumes zugreifen
Das folgende Beispiel zeigt, wie Sie auf den lokalen SSD-gestützten Speicher zugreifen können.
Flüchtiger Speicher als emptyDir-Volume
Ein GKE-Knotenpool kann für die Verwendung lokaler SSDs für sitzungsspezifischen Speicher, einschließlich emptyDir
-Volumes, konfiguriert werden.
Das folgende Pod-Manifest verwendet ein emptyDir
und den Knotenselektor cloud.google.com/gke-ephemeral-storage-local-ssd
. Sie können eine ähnliche Technik für Deployment-Manifeste oder StatefulSet-Manifeste anwenden.
Berücksichtigen Sie bei der Auswahl der Anfrage für sitzungsspezifische Speicherressourcen die lokale SSD-Kapazität, die für die Systemnutzung reserviert ist.
apiVersion: v1
kind: Pod
metadata:
name: POD_NAME
spec:
containers:
- name: CONTAINER_NAME
image: "registry.k8s.io/pause"
resources:
requests:
ephemeral-storage: "200Gi"
volumeMounts:
- mountPath: /cache
name: scratch-volume
nodeSelector:
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
volumes:
- name: scratch-volume
emptyDir: {}
Fehlerbehebung
Eine Anleitung zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Speicherproblemen in GKE.