Cette page explique comment utiliser du matériel de stockage externe, tel que des disques persistants Compute Engine, en tant que volumes éphémères dans vos charges de travail Google Kubernetes Engine (GKE). Vous devez déjà connaître les Volumes et les StorageClass de Kubernetes.
Quand utiliser le stockage éphémère dans Kubernetes
Le stockage éphémère est utile dans toutes les situations où vos charges de travail n'ont besoin que des données pendant le cycle de vie de l'application, par exemple pour les pipelines de traitement de données, les jobs de machine learning, le traitement par lot, la mise en cache locale ou les analyses. Par défaut, une partie du disque de démarrage des nœuds GKE est disponible pour le stockage éphémère dans vos pods. Cette approche nécessite souvent une planification minutieuse des espaces.
Les volumes éphémères génériques Kubernetes vous permettent de demander explicitement un stockage éphémère pour vos pods à l'aide de PersistentVolumeClaims. GKE provisionne les disques persistants Compute Engine de manière dynamique, puis les associe à vos nœuds. Ce type de stockage éphémère est utile dans les situations suivantes:
- Vos charges de travail comportent des exigences de performances élevées. Vous devez donc contrôler le matériel de stockage.
- Vous avez besoin d'un espace de stockage éphémère à court terme et spécifique aux conteneurs.
- Vous souhaitez éviter d'utiliser
emptyDir
pour provisionner le stockage éphémère. Les volumesemptyDir
sont toujours utiles lorsque vous souhaitez que plusieurs conteneurs partagent les données dans l'espace de stockage éphémère. - Vous souhaitez bénéficier d'une capacité de stockage éphémère supérieure aux valeurs par défaut intégrées de GKE.
- Vous souhaitez éviter de devoir planifier à l'avance la taille et le type de votre disque de démarrage des nœuds pour les clusters GKE en mode standard.
Types de stockage éphémère dans GKE
En général, vous pouvez utiliser la capacité de stockage sur disque de démarrage ou les disques persistants dédiés comme espace de stockage éphémère dans vos pods et conteneurs. Le tableau suivant décrit les différences :
Type de stockage | Comment l'utiliser ? | Description |
---|---|---|
Disque de démarrage – Disques persistants | Installez un volume à l'aide de Pour obtenir des instructions, consultez la page Créer des volumes. |
Le stockage éphémère demandé est extrait d'une partie réservée du disque de démarrage des nœuds. Il s'agit de la valeur par défaut dans les clusters Autopilot et Standard. À utiliser lorsque les pods ont de petites demandes de stockage éphémère ou lorsque vous souhaitez partager les données éphémères entre plusieurs conteneurs du pod. Autopilot
Standard Aucune limite de taille, mais nécessite une planification minutieuse de la taille du disque de démarrage des nœuds et du type de matériel de stockage. Pour plus d'informations sur la manière dont GKE calcule la réservation de stockage éphémère dans le disque de démarrage des nœuds, consultez la page Réservation de stockage éphémère locale. |
Disques SSD locaux |
Pour obtenir des instructions, consultez la section Provisionner un stockage éphémère avec des disques SSD locaux. |
Les disques SSD locaux utilisent des incréments fixes de 375 Go compatibles avec les clusters GKE en mode standard et dans les nœuds Autopilot exécutant des GPU A100 (80 Go).
À utiliser lorsque vous avez besoin d'un espace de stockage éphémère à haut débit. Pour en savoir plus, consultez la page À propos des disques SSD locaux pour GKE. |
Disques persistants dédiés |
Ce document explique comment demander ce type de stockage éphémère. |
Google Cloud provisionne dynamiquement le matériel externe demandé, l'associe à vos nœuds et installe le volume demandé dans votre pod. À utiliser lorsque les pods comportent des requêtes de stockage éphémère volumineuses ou lorsque vous souhaitez contrôler le type de disque persistant sous-jacent. Ces volumes ont les propriétés suivantes:
Pour en savoir plus sur ce type de volume éphémère, consultez la section Volumes éphémères génériques. |
Tarifs
Le stockage que vous provisionnez via des volumes éphémères génériques tels que décrits dans ce guide est facturé en fonction des tarifs des disques Compute Engine.
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
.
- Assurez-vous de disposer d'un cluster GKE Autopilot ou standard exécutant la version 1.23 ou ultérieure.
- Assurez-vous de disposer d'un quota suffisant dans votre projet Google Cloud pour le matériel de stockage. Pour gérer votre quota, consultez la section Afficher les quotas de votre projet.
Créer un objet StorageClass
Créer une StorageClass Kubernetes personnalisée vous permet de spécifier le type de stockage à provisionner en fonction de vos exigences en termes de prix et de performances. Bien que facultative, cette étape est recommandée. Si vous souhaitez utiliser la ressource StorageClass par défaut de GKE, qui est de type disque persistant pd-balanced
, ignorez cette étape.
Enregistrez le manifeste suivant sous le nom
ephemeral-pd-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ephemeral-ssd provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: STORAGE_TYPE
Remplacez
STORAGE_TYPE
par le nom du type de disque persistant souhaité, tel quepd-ssd
. Pour obtenir la liste des types compatibles, consultez la section Types de disques persistants dans la documentation Compute Engine.Créez la StorageClass :
kubectl create -f ephemeral-pd-class.yaml
Demander une capacité de stockage éphémère dans un pod
Pour provisionner, associer et utiliser du matériel externe en tant qu'espace de stockage éphémère, ajoutez le volume correspondant à votre fichier manifeste de pod et ajoutez l'installation d'un volume à la spécification du conteneur.
Enregistrez le manifeste suivant sous le nom
ephemeral-ssd-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: ephemeral-deployment spec: replicas: 1 selector: matchLabels: storage: ephemeral template: metadata: labels: storage: ephemeral spec: containers: - name: ephemeral-container image: nginx resources: requests: cpu: 500m memory: 2Gi ephemeral-storage: 2Gi volumeMounts: - mountPath: "/short-term" name: ephemeral-volume volumes: - name: ephemeral-volume ephemeral: volumeClaimTemplate: metadata: labels: type: ephemeral spec: accessModes: ["ReadWriteOnce"] storageClassName: "ephemeral-ssd" resources: requests: storage: 1Ti
Ce fichier manifeste crée un objet PersistentVolumeClaim Kubernetes qui demande un nouvel objet PersistentVolume nommé
ephemeral-volume
avec les propriétés suivantes:spec.volumes.ephemeral
: type de volumeephemeral
..spec.accessModes
: mode d'accès au volume, qui détermine l'accès en lecture-écriture à partir des pods et le partage de volume entre les nœuds. Cet exemple utiliseReadWriteOnce
, qui installe le PersistentVolume sur un seul nœud pour accéder à un ou plusieurs pods du nœud. Pour plus d'informations, consultez la section Modes d'accès..spec.storageClassName
: (facultatif) nom de la StorageClass que vous avez créée. Si vous omettez de renseigner ce champ, GKE utilise la ressource StorageClass par défaut et provisionne un disque persistantpd-balanced
..spec.resources.requests.storage
: la capacité de stockage souhaitée.
Créez le déploiement :
kubectl create -f ephemeral-ssd-deployment.yaml
GKE provisionne un disque Compute Engine répondant aux exigences de l'objet PersistentVolumeClaim et associe le disque au nœud. GKE installe le volume dans le pod et fournit la capacité demandée au conteneur.
Vérifier que GKE a installé un volume éphémère
Ouvrez une session shell dans le pod :
kubectl exec -it deploy/ephemeral-deployment -- bash
Vérifiez les volumes installés:
df -h
Le résultat ressemble à ce qui suit :
Filesystem Size Used Available Use% Mounted on ... /dev/sdb 1006.9G 28.0K 1006.8G 0% /short-term /dev/sda1 94.3G 3.6G 90.6G 4% /etc/hosts /dev/sda1 94.3G 3.6G 90.6G 4% /dev/termination-log /dev/sda1 94.3G 3.6G 90.6G 4% /etc/hostname /dev/sda1 94.3G 3.6G 90.6G 4% /etc/resolv.conf ...
Quittez la session shell :
exit