Provisionner et utiliser un stockage éphémère basé sur disque SSD local


Cette page explique comment provisionner le stockage SSD local sur les clusters Google Kubernetes Engine (GKE) et comment configurer les charges de travail pour qu'elles utilisent les données du stockage éphémère basé sur disque SSD local dans votre cluster.

Pour en savoir plus sur la compatibilité des disques SSD locaux avec GKE, consultez la page À propos du stockage SSD local.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Créer un cluster ou un pool de nœuds avec un stockage éphémère basé sur un disque SSD local

Utilisez Google Cloud CLI pour créer un cluster ou un pool de nœuds doté d'un espace de stockage éphémère basé sur SSD local.

Utilisez l'option --ephemeral-storage-local-ssd pour associer un stockage éphémère local entièrement géré basé sur des volumes SSD locaux. Cet espace de stockage est lié au cycle de vie de vos pods. Lorsque vos pods demandent un stockage éphémère, GKE les programme pour qu'ils s'exécutent sur des nœuds sur lesquels des volumes SSD locaux sont configurés en tant que stockage éphémère. Si vous souhaitez exercer un contrôle plus spécialisé ou précis sur vos disques SSD locaux, nous vous recommandons plutôt d'utiliser le stockage de blocs bruts sauvegardé sur disque SSD local.

Si l'autoscaling de cluster est activé, GKE effectue l'autoscaling de vos nœuds lorsque le cluster nécessite davantage d'espace de stockage éphémère. Vos pods peuvent accéder aux données des volumes SSD locaux via le volume emptyDir.

La commande gcloud CLI que vous exécutez pour créer le cluster ou le pool de nœuds dépend de la génération de séries de machines du type de machine sélectionné. Par exemple, les types de machines N1 et N2 appartiennent respectivement aux séries de machines de première et deuxième génération, tandis que les types de machines C3 appartiennent à la série de machines de troisième génération.

Créer un cluster avec un disque SSD local

1re ou 2e génération

Si vous utilisez un type de machine appartenant aux séries de machines de première ou deuxième génération, créez votre cluster en spécifiant l'option --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS. Cette option provisionne le nombre spécifié de volumes SSD locaux sur chaque nœud à utiliser pour le stockage éphémère du kubelet.

Ces paramètres ne s'appliquent qu'au pool de nœuds par défaut. Si les pools de nœuds suivants nécessitent un disque SSD local, spécifiez-le lors de la création du pool de nœuds.

Pour créer un cluster exécutant GKE en version 1.25.3-gke.1800 ou ultérieure dans lequel le pool par défaut utilise des volumes SSD locaux, exécutez la commande suivante :

gcloud container clusters create CLUSTER_NAME \
    --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
    --machine-type=MACHINE_TYPE \
    --release-channel CHANNEL_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • NUMBER_OF_DISKS : nombre de volumes SSD locaux à provisionner sur chaque nœud. Ces volumes sont combinés en un seul volume logique lors de la configuration du nœud. Le nombre maximal de volumes varie selon le type de machine et la région. Notez qu'une certaine capacité des disques SSD locaux est réservée à un usage système.
  • MACHINE_TYPE : type de machine à utiliser. Ce champ est obligatoire, car le disque SSD local ne peut pas être utilisé avec le type e2-medium par défaut.
  • CHANNEL_NAME : canal de publication incluant les versions de GKE ultérieures à la version 1.25.3-gke.1800. Si vous préférez ne pas utiliser de canal de publication, vous pouvez également utiliser l'option --cluster-version au lieu de --release-channel, en spécifiant une version valide ultérieure à la version 1.25.3-gke.1800. Pour déterminer les versions valides, exécutez la commande gcloud container get-server-config.

3e génération

Si vous utilisez un type de machine d'une série de machines de troisième génération, vous n'avez pas besoin de spécifier d'options de SSD locaux lors de la création d'un cluster. Le nombre de disques associés à chaque nœud dépend du type de machine.

Pour créer un cluster, exécutez la commande suivante :

gcloud container clusters create CLUSTER_NAME \
  --machine-type=MACHINE_TYPE \
  --cluster-version CLUSTER_VERSION

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • MACHINE_TYPE : type de machine à utiliser depuis une série de machines de troisième génération.
  • CLUSTER_VERSION : version de cluster GKE compatible avec les disques SSD locaux sur les types de machines de troisième génération.

Créer un pool de nœuds avec un disque SSD local

1re ou 2e génération

Pour créer un pool de nœuds s'exécutant sur GKE 1.25.3-gke.1800 ou une version ultérieure et utilisant des volumes SSD locaux, exécutez la commande suivante :

gcloud container node-pools create POOL_NAME \
    --cluster=CLUSTER_NAME \
    --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
    --machine-type=MACHINE_TYPE

Remplacez les éléments suivants :

  • POOL_NAME : nom de votre nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster.
  • NUMBER_OF_DISKS : nombre de volumes SSD locaux à provisionner sur chaque nœud. Ces volumes sont combinés en un seul volume logique lors de la configuration du nœud. Le nombre maximal de volumes varie selon le type de machine et la région. Notez qu'une certaine capacité des disques SSD locaux est réservée à un usage système.
  • MACHINE_TYPE : type de machine à utiliser. Ce champ est obligatoire, car le disque SSD local ne peut pas être utilisé avec le type e2-medium par défaut.

3e génération

Si vous utilisez un type de machine appartenant à la série de machines de troisième génération, vous n'avez pas besoin de spécifier d'options de SSD local lors de la création d'un pool de nœuds. Le nombre de volumes associés à chaque nœud dépend du type de machine.

Pour créer un pool de nœuds, exécutez la commande suivante :

gcloud container node-pools create POOL_NAME \
  --cluster=CLUSTER_NAME \
  --machine-type=MACHINE_TYPE \
  --node-version NODE_VERSION

Remplacez les éléments suivants :

  • POOL_NAME : nom du nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster.
  • MACHINE_TYPE : type de machine à utiliser depuis une série de machines de troisième génération.
  • NODE_VERSION : version de pool de nœuds GKE compatible avec les disques SSD locaux sur les types de machines de troisième génération.

Les nœuds du pool de nœuds sont créés avec le libellé cloud.google.com/gke-ephemeral-storage-local-ssd=true. Vous pouvez vérifier les étiquettes en exécutant la commande suivante :

kubectl describe node NODE_NAME

Utiliser le stockage éphémère basé sur un disque SSD local avec des clusters Autopilot

Vous pouvez utiliser le disque SSD local dans les classes de calcul Autopilot suivantes :

  • Performance
  • Accelerator

Pour la classe Performance, suivez les instructions permettant d'utiliser des disques SSD locaux dans les pods de la classe Performance.

Pour la classe de calcul Accelerator, vous pouvez utiliser le disque SSD local pour le stockage éphémère si vous utilisez des GPU NVIDIA L4 et que vous exécutez les versions de correctif 1.28.6-gke.1369000 et ultérieures ou 1.29.1-gke de GKE.1575000 et versions ultérieures. Les GPU NVIDIA H100 (80 Go) et les GPU NVIDIA A100 (80 Go) utilisent toujours des disques SSD locaux pour le stockage éphémère. Vous ne pouvez pas spécifier le sélecteur de nœuds suivant pour ces GPU.

Pour utiliser le disque SSD local comme stockage éphémère, ajoutez le sélecteur de nœuds cloud.google.com/gke-ephemeral-storage-local-ssd: "true" au fichier manifeste de votre charge de travail. La spécification de votre pod doit ressembler à l'exemple suivant :

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"

Utiliser l'ancien paramètre d'API

L'option --local-ssd-count est un ancien paramètre d'API compatible avec les SSD locaux SCSI. La série de machines de troisième génération Compute Engine n'est pas compatible avec SCSI et ne prend en charge que le NVMe. Vous ne devez utiliser cette option qu'avec les clusters Windows Server. Si vous utilisez actuellement l'ancien paramètre d'API sur des clusters Linux, nous vous recommandons d'utiliser plutôt l'option --ephemeral-storage-local-ssd.

SSD locaux sur des clusters Windows Server

Lorsque vous utilisez des disques SSD locaux avec vos clusters exécutant des pools de nœuds Windows Server, vous devez vous connecter au nœud et formater le volume avant de l'utiliser. Dans l'exemple suivant, le volume SSD local est formaté avec le système de fichiers NTFS. Vous pouvez également créer des répertoires sous le volume. Dans cet exemple, les répertoires se trouvent sous le disque 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

Accéder aux volumes SSD locaux

L'exemple suivant montre comment accéder à l'espace de stockage éphémère basé sur disque SSD local.

Stockage éphémère en tant que volume emptyDir

Un pool de nœuds GKE peut être configuré pour utiliser un disque SSD local comme stockage éphémère, y compris des volumes emptyDir.

Le fichier manifeste de pod suivant utilise un emptyDir et un sélecteur de nœud de cloud.google.com/gke-ephemeral-storage-local-ssd. Vous pouvez appliquer une technique semblable pour les fichiers manifestes de déploiement ou les fichiers manifestes StatefulSet.

Lorsque vous choisissez la demande de ressources de stockage éphémère, tenez compte de la capacité SSD locale réservée pour un usage système.

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: {}

Dépannage

Pour obtenir des instructions de dépannage, consultez la page Résoudre les problèmes de stockage dans GKE.

Étapes suivantes