Le pilote CSI de disque persistant Compute Engine est le principal moyen d'accéder au stockage Hyperdisk avec les clusters Google Kubernetes Engine (GKE).
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
.
- Définissez votre région et votre zone par défaut sur l'une des valeurs acceptées.
Conditions requises
Pour utiliser des volumes Hyperdisk dans GKE, vos clusters doivent répondre aux exigences suivantes :
- Utilisez des clusters Linux exécutant la version 1.26 ou une version ultérieure de GKE. Si vous utilisez une version disponible, assurez-vous que le canal dispose de la version minimale de GKE requise pour ce pilote ou d'une version ultérieure.
- Assurez-vous que le pilote CSI de disque persistant Compute Engine est activé. Le pilote de disque persistant Compute Engine est activé par défaut sur les nouveaux clusters Autopilot et Standard et ne peut pas être désactivé ou modifié avec l'utilisation d'Autopilot. Si vous devez activer le pilote CSI de disque persistant Compute Engine depuis votre cluster, consultez la section Activer le pilote CSI de disque persistant Compute Engine sur un cluster existant.
Créer un volume Hyperdisk pour GKE
Cette section explique comment créer un volume Hyperdisk reposant sur le pilote CSI Compute Engine dans GKE.
Créer une StorageClass
Les champs Type
du stockage sur disque persistant suivants sont fournis par le pilote CSI de disque persistant Compute Engine pour la prise en charge d'Hyperdisk :
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
hyperdisk-ml
Pour créer une ressource StorageClass avec le niveau de débit ou d'IOPS souhaité, utilisez pd.csi.storage.gke.io
dans le champ de l'approvisionneur et spécifiez l'un des types de stockage Hyperdisk.
Chaque type de volume Hyperdisk possède des valeurs par défaut, qui déterminent les performances en fonction de la taille du disque initial provisionnée. Lors de la création de la StorageClass, vous pouvez éventuellement spécifier les paramètres suivants en fonction de votre type de volume Hyperdisk. Si vous omettez ces paramètres, GKE utilise les valeurs par défaut des types de disques basés sur la capacité.
Paramètre | Type de volume Hyperdisk | Utilisation |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk Balanced, Hyperdisk Throughput | Exprimez la valeur du débit en Mio/s à l'aide du qualificatif "Mi". Par exemple, si le débit requis est de 250 Mio/s, spécifiez "250Mi" lors de la création de la StorageClass. |
provisioned-iops-on-create |
Hyperdisk Balanced, Hyperdisk IOPS | La valeur des IOPS doit être exprimée sans qualificatif. Par exemple, si vous avez besoin de 7 000 IOPS, spécifiez "7000" lors de la création de la StorageClass. |
Pour obtenir des conseils sur les valeurs autorisées pour le débit ou les IOPS, consultez la section Planifier le niveau de performances de vos volumes Hyperdisk.
Les exemples suivants montrent comment créer une StorageClass pour chaque type de volume Hyperdisk :
Volume Hyperdisk équilibré
Enregistrez le fichier manifeste suivant dans un fichier nommé
hdb-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000"
Créez la StorageClass :
kubectl create -f hdb-example-class.yaml
Hyperdisk Throughput
Enregistrez le fichier manifeste suivant dans un fichier nommé
hdt-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: throughput-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-throughput provisioned-throughput-on-create: "50Mi"
Créez la StorageClass :
kubectl create -f hdt-example-class.yaml
Hyperdisk Extreme
Enregistrez le fichier manifeste suivant dans un fichier nommé
hdx-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: extreme-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-extreme provisioned-iops-on-create: "50000"
Créez la StorageClass :
kubectl create -f hdx-example-class.yaml
Pour trouver le nom des StorageClasses disponibles dans votre cluster, exécutez la commande suivante :
kubectl get sc
Créer une PersistentVolumeClaim
Vous pouvez créer une PersistentVolumeClaim qui fait référence à la StorageClass du pilote CSI de disque persistant Compute Engine.
Volume Hyperdisk équilibré
Dans cet exemple, vous spécifiez une capacité de stockage ciblée de 20 Gio pour le volume Hyperdisk Balanced.
Enregistrez le fichier manifeste suivant de la PersistentVolumeClaim dans un fichier nommé
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-storage resources: requests: storage: 20Gi
Appliquez la PersistentVolumeClaim qui fait référence à la StorageClass que vous avez créée à partir de l'exemple précédent :
kubectl apply -f pvc-example.yaml
Hyperdisk Throughput
Dans cet exemple, vous spécifiez une capacité de stockage ciblée de 2 Tio pour le volume Hyperdisk Throughput.
Enregistrez le fichier manifeste de PersistentVolumeClaim suivant dans un fichier nommé
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: throughput-storage resources: requests: storage: 2Ti
Appliquez la PersistentVolumeClaim qui fait référence à la StorageClass que vous avez créée à partir de l'exemple précédent :
kubectl apply -f pvc-example.yaml
Hyperdisk Extreme
Dans cet exemple, vous spécifiez une capacité de stockage minimale de 64 Gio pour le volume Hyperdisk Extreme.
Enregistrez le fichier manifeste de PersistentVolumeClaim suivant dans un fichier nommé
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: extreme-storage resources: requests: storage: 64Gi
Appliquez la PersistentVolumeClaim qui fait référence à la StorageClass que vous avez créée à partir de l'exemple précédent :
kubectl apply -f pvc-example.yaml
Créer un objet Deployment pour consommer le volume Hyperdisk
Lorsque vous utilisez des pods avec des objets PersistentVolume, nous vous recommandons d'utiliser un contrôleur de charge de travail (tel que Deployment ou StatefulSet).
L'exemple suivant crée un fichier manifeste qui configure un pod pour déployer un serveur Web Nginx à l'aide de la PersistentVolumeClaim créée dans la section précédente. Enregistrez l'exemple de fichier manifeste suivant sous le nom
hyperdisk-example-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /var/lib/www/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc readOnly: false
Pour créer un objet Deployment basé sur le fichier manifeste
hyperdisk-example-deployment.yaml
, exécutez la commande suivante :kubectl apply -f hyperdisk-example-deployment.yaml
Vérifiez que le déploiement a bien été créé :
kubectl get deployment
Le provisionnement des instances Hyperdisk peut prendre quelques minutes. Une fois le déploiement terminé, il renvoie l'état
READY
.Vous pouvez vérifier la progression en surveillant l'état de votre PersistentVolumeClaim avec la commande suivante :
kubectl get pvc
Provisionner un volume Hyperdisk à partir d'un instantané
Pour créer un volume Hyperdisk à partir d'un instantané de disque persistant existant, utilisez la console Google Cloud, Google Cloud CLI ou l'API Compute Engine. Pour savoir comment créer un instantané de disque persistant, consultez la page Créer et utiliser des instantanés de volume.
Console
Accédez à la page Disques dans la console Google Cloud.
Cliquez sur Créer un disque.
Sous Type de disque, choisissez l'une des options suivantes pour le type de disque :
- Volume Hyperdisk équilibré
- Hyperdisk Extreme
- Hyperdisk Throughput
Sous Type de source du disque, cliquez sur Instantané.
Sélectionnez le nom de l'instantané à restaurer.
Sélectionnez la taille du nouveau disque en Gio. Ce nombre doit être supérieur ou égal au disque source d'origine de l'instantané.
Définissez le débit provisionné ou les IOPS provisionnées que vous souhaitez pour le disque, si ces valeurs diffèrent des valeurs par défaut.
Cliquez sur Créer pour créer le volume Hyperdisk.
gcloud
Exécutez la commande gcloud compute disks create
pour créer le volume Hyperdisk à partir d'un instantané.
Volume Hyperdisk équilibré
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced
Remplacez les éléments suivants :
DISK_NAME
: le nom du nouveau disque.SIZE
: taille du nouveau disque, exprimée en gibioctets (Gio) ou en tébioctets (Tio). Pour prendre connaissance des limites de capacité actualisées, consultez la documentation Compute Engine.SNAPSHOT_NAME
: nom de l'instantané qui va être restauré.THROUGHPUT_LIMIT
: facultatif. Pour les disques Hyperdisk Balanced, il s'agit d'un entier représentant le débit que le disque peut gérer, mesuré en Mio/s. Pour prendre connaissance des limites actualisées, consultez la documentation Compute Engine.IOPS_LIMIT
: facultatif. Pour les disques Hyperdisk Balanced, il s'agit du nombre d'IOPS que le disque peut gérer. Pour prendre connaissance des limites de performances actualisées, consultez la documentation Compute Engine.
Hyperdisk Throughput
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--type=hyperdisk-throughput
Remplacez les éléments suivants :
DISK_NAME
: le nom du nouveau disque.SIZE
: la taille, en gibioctets (Gio ou Go) ou en tébioctets (Tio ou To), du nouveau disque. Pour prendre connaissance des limites de capacité actualisées, consultez la documentation Compute Engine.SNAPSHOT_NAME
: nom de l'instantané qui va être restauré.THROUGHPUT_LIMIT
(facultatif) : pour les disques Hyperdisk Throughput, il s'agit d'un entier représentant le débit que le disque peut gérer, mesuré en Mio/s. Pour prendre connaissance des limites de performances actualisées, consultez la documentation Compute Engine.
Hyperdisk Extreme
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-iops
Remplacez les éléments suivants :
DISK_NAME
: le nom du nouveau disque.SIZE
: la taille, en gibioctets (Gio ou Go) ou en tébioctets (Tio ou To), du nouveau disque. Pour prendre connaissance des limites de capacité actualisées, consultez la documentation Compute Engine.SNAPSHOT_NAME
: nom de l'instantané qui va être restauré.IOPS_LIMIT
: Facultatif : pour les disques Hyperdisk Extreme, il s'agit du nombre d'opérations d'E/S par seconde que le disque peut gérer. Pour prendre connaissance des limites de performances actualisées, consultez la documentation Compute Engine.
Créer un instantané pour un volume Hyperdisk
Pour créer un instantané à partir d'un volume Hyperdisk, suivez la même procédure que pour créer un instantané à partir d'un volume de disque persistant :
Mettre à jour le débit ou les IOPS provisionnés d'un volume Hyperdisk existant
Cette section explique comment modifier les performances provisionnées des volumes Hyperdisk.
Débit
La mise à jour du débit provisionné n'est acceptée que pour les volumes Hyperdisk Balanced et Hyperdisk Throughput.
Pour mettre à jour le niveau de débit provisionné pour votre volume Hyperdisk, suivez les instructions fournies pour la console Google Cloud, la gcloud CLI ou l'API Compute Engine sur la page Modifier les performances provisionnées d'un volume Hyperdisk.
Vous pouvez modifier le niveau de débit provisionné (jusqu'à une fois toutes les 4 heures) pour un volume Hyperdisk après la création du volume. La prise en compte des nouveaux niveaux de débit peut prendre jusqu'à 15 minutes. Lors de la modification des performances, les contrats de niveau de service et les SLO applicables aux performances ne sont pas effectifs. Vous pouvez modifier le niveau de débit d'un volume existant à tout moment, que le disque soit associé à une instance en cours d'exécution ou non.
Le nouveau niveau de débit que vous spécifiez doit respecter les valeurs acceptées pour les volumes Hyperdisk.
IOPS
La mise à jour des IOPS provisionnées n'est acceptée que pour les volumes Hyperdisk Balanced et Hyperdisk Extreme.
Pour mettre à jour le niveau d'IOPS provisionné pour votre volume Hyperdisk, suivez les instructions fournies pour la console Google Cloud, la gcloud CLI ou l'API Compute Engine sur la page Modifier les performances provisionnées d'un volume Hyperdisk.
Vous pouvez modifier le niveau d'IOPS provisionné (jusqu'à une fois toutes les 4 heures) pour un volume Hyperdisk IOPS après la création du volume. La prise en compte des nouveaux niveaux d'IOPS peut prendre jusqu'à 15 minutes. Lors de la modification des performances, les contrats de niveau de service et les SLO applicables aux performances ne sont pas effectifs. Vous pouvez modifier le niveau d'IOPS d'un volume existant à tout moment, que le disque soit associé à une instance en cours d'exécution ou non.
Le nouveau niveau d'IOPS que vous spécifiez doit respecter les valeurs acceptées pour les volumes Hyperdisk.
Pour mettre à jour le niveau d'IOPS provisionné pour un volume Hyperdisk, vous devez identifier le nom du disque persistant sous-jacent à vos ressources PersistentVolumeClaim et PersistentVolume :
Accédez au navigateur d'objets dans la console Google Cloud.
Recherchez l'entrée correspondant à votre objet PersistentVolumeClaim.
Cliquez sur le lien Volume.
Ouvrez l'onglet YAML du PersistentVolume associé. Recherchez la valeur CSI
volumeHandle
dans cet onglet.Notez le dernier élément de ce descripteur (il doit avoir une valeur telle que "
pvc-XXXXX
") : c'est le nom de votre PersistentVolumeClaim. Vous devez également prendre note du projet et de la zone.
Surveiller le débit ou les IOPS sur un volume Hyperdisk
Pour surveiller les performances provisionnées de votre volume Hyperdisk, consultez la section Analyser les IOPS et le débit provisionnés dans la documentation de Compute Engine.
Dépannage
Cette section fournit des conseils de dépannage pour résoudre les problèmes liés aux volumes Hyperdisk sur GKE.
Impossible de modifier les performances ou la capacité : ratio hors plage
L'erreur suivante se produit lorsque vous tentez de modifier le niveau de performances ou les capacités provisionnées, mais que les valeurs que vous avez choisies se situent en dehors de la plage acceptable pour le volume :
Requested provisioned throughput cannot be higher than <value>.
Requested provisioned throughput cannot be lower than <value>.
Requested provisioned throughput is too high for the requested disk size.
Requested provisioned throughput is too low for the requested disk size.
Requested disk size is too high for current provisioned throughput.
Le débit provisionné pour les volumes Hyperdisk Throughput doit répondre aux exigences suivantes :
- Au minimum 10 Mio/s par Tio de capacité, mais pas plus de 90 Mio/s par Tio de capacité
- Jusqu'à 600 Mio/s par volume
Pour résoudre ce problème, corrigez le débit ou la capacité demandés afin que la valeur soit comprise dans la plage autorisée, puis relancez la commande.
Impossible de modifier les performances : débit limité
L'erreur suivante se produit lorsque vous tentez de modifier le niveau de performances provisionné, mais que ce niveau a déjà été modifié au cours des quatre dernières heures :
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
Les performances provisionnées pour des volumes Hyperdisk Throughput et Hyperdisk IOPS peuvent être mises à jour une fois toutes les quatre heures. Pour résoudre ce problème, attendez que la période d'attente du volume soit écoulée, puis exécutez à nouveau la commande.
Étapes suivantes
- Découvrez comment migrer des volumes de disques persistants vers Hyperdisk.
- Découvrez comment utiliser l'expansion du volume.
- Découvrez comment utiliser des instantanés de volume.
- En savoir plus sur le pilote sur GitHub