Utiliser une ressource StorageClass personnalisée avec vos charges de travail
GKE sur Azure déploie automatiquement le pilote CSI Azure Disk et le pilote CSI Azure File.
Les versions du pilote CSI Azure Disk et du pilote CSI Azure File sont liées à une version de GKE sur Azure Kubernetes. La version du pilote est généralement la dernière disponible lors de la publication de la version de GKE. Lorsque le cluster est mis à niveau, les pilotes sont automatiquement mis à jour.
Utiliser une ressource StorageClass personnalisée
Vous pouvez créer des ressources StorageClasses supplémentaires pour les volumes ou utiliser des pilotes CSI (Container Storage Interface).
Indiquez si vous utilisez un volume de disque Azure ou un autre pilote CSI.
Volume Azure Disk
Vous pouvez créer votre propre ressource StorageClass personnalisée qui spécifie un type de volume Azure Disk, un type de système de fichiers et d'autres paramètres. Vous pouvez trouver d'autres paramètres StorageClass sur la page GitHub du pilote CSI Azure Disk de GKE sur Azure.
Pour configurer une ressource StorageClass personnalisée, copiez le fichier manifeste YAML suivant dans un fichier nommé
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
Remplacez CLASS_NAME par le nom de votre nouvelle ressource StorageClass.
Par exemple, le code YAML suivant crée une nouvelle ressource StorageClass qui provisionne des volumes dans un compte de stockage spécifique et applique un tag valant
group=dev
à chaque nouveau volume.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-class provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: storageAccount: my-storage-account tags: group=dev
Pilote CSI
Vous pouvez spécifier un autre pilote CSI dans le champ
provisioner
.Pour créer une ressource StorageClass avec un autre pilote CSI, vous pouvez utiliser l'exemple YAML ci-dessous.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Remplacez les valeurs suivantes :
- CLASS_NAME : nom de la ressource StorageClass (par exemple,
my-custom-class
). - CSI_DRIVER_NAME : nom du pilote CSI (par exemple,
csi.example.com
).
Configurez ensuite les sous-champs sous
parameters
, conformément à la documentation de votre pilote CSI.- CLASS_NAME : nom de la ressource StorageClass (par exemple,
Appliquez le code YAML à votre cluster.
kubectl apply -f my-custom-class.yaml
Créez un objet PersistentVolumeClaim avec une ressource StorageClass personnalisée.
Après avoir créé une ressource StorageClass personnalisée, vous pouvez la spécifier dans un PVC. L'exemple suivant crée un PVC nommé
my-pvc
qui fait référence à la StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Définir la ressource StorageClass par défaut
GKE sur Azure utilise une StorageClass par défaut appelée standard-rwo
, qui provisionne des disques SSD standards Azure avec LRS Vous pouvez remplacer la valeur par défaut par une autre ressource StorageClass.
Pour modifier la ressource StorageClass par défaut, procédez comme suit :
Mettez à jour l'annotation
is-default-class
de la ressource StorageClassstandard-rwo
aveckubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Créez une ressource StorageClass comportant l'annotation
storageclass.kubernetes.io/is-default-class: true
.L'exemple suivant de ressource StorageClass utilise le pilote
disk.csi.azure.com
. Pour installer un autre pilote de stockage, consultez la section Installer un pilote CSI.Copiez le fichier YAML suivant dans un fichier nommé
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME annotations: storageclass.kubernetes.io/is-default-class: true provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer parameters: skuName: VOLUME_TYPE
Remplacez l'élément suivant :
- CLASS_NAME : nom de votre nouvelle ressource StorageClass.
- VOLUME_TYPE : type de volume Azure Disk créé par la ressource StorageClass.
Par exemple, le code YAML suivant crée une nouvelle ressource StorageClass par défaut qui provisionne des volumes Azure Disk SSD premium.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-default-class annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer parameters: skuName: Premium_LRS
Appliquez la nouvelle classe personnalisée à votre cluster.
kubectl apply -f my-custom-class.yaml
Après avoir appliqué ce fichier manifeste, GKE sur Azure utilise la ressource StorageClass my-custom-default-class
pour les nouvelles requêtes de stockage.
Référencer la ressource StorageClass dans un StatefulSet
Pour utiliser votre nouvelle StorageClass, vous pouvez faire référence à cette ressource dans la spécification volumeClaimTemplates
d'un StatefulSet.
Lorsque vous référencez une ressource StorageClass dans la spécification volumeClaimTemplates
d'un StatefulSet, Kubernetes fournit un espace de stockage stable à l'aide de PersistentVolumes (PVs).
Kubernetes appelle l'approvisionneur défini dans la StorageClass pour créer un volume de stockage. Une fois le volume provisionné, Kubernetes crée automatiquement un PV.
L'objet StatefulSet suivant référence la StorageClass my-custom-class
et provisionne un volume de 1 gibioctet :
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates: # This is the specification in which you reference the StorageClass
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
storageClassName: my-custom-class # This field references the existing StorageClass
Étapes suivantes
Consultez la documentation du pilote CSI Azure Disk ou du pilote CSI Azure File.
Découvrez les volumes persistants dans GKE.
Installez les pilotes de stockage dans votre cluster GKE sur Azure.
Déployez votre première charge de travail avec le guide de démarrage rapide.