Utilizzo di una classe StorageClass personalizzata con i workload
Per definire comportamenti di archiviazione specifici per i workload containerizzati su Google Kubernetes Engine (GKE) su Azure, crea e utilizza StorageClass personalizzate. Personalizzando le StorageClass, puoi ottimizzare le prestazioni e i costi di archiviazione per le tue applicazioni selezionando diversi tipi di dischi Azure, tipi di file system e altri parametri per i volumi permanenti. Questa funzionalità ti aiuta a eseguire servizi efficienti adattando l'archiviazione alle esigenze esatte del tuo workload.
GKE su Azure esegue automaticamente il deployment e gestisce il driver CSI per dischi Azure e il driver CSI per file Azure, che sono essenziali per la gestione del provisioning dell'archiviazione. Le versioni di questi driver sono collegate alla versione di Kubernetes di GKE su Azure e vengono aggiornate automaticamente con gli upgrade del cluster, garantendo una compatibilità perfetta per le StorageClass personalizzate.
Utilizzo di una classe StorageClass personalizzata
Puoi creare StorageClass aggiuntive per i volumi o utilizzare i driver CSI (Container Storage Interface).
Scegli se utilizzi un volume di dischi Azure o un altro driver CSI.
Volume di dischi Azure
Puoi creare la tua StorageClass personalizzata che specifica un tipo di volume di dischi Azure, un tipo di file system e altri parametri. Puoi trovare altri parametri di StorageClass nella pagina GitHub del driver CSI per dischi Azure di GKE su Azure.
Per configurare una StorageClass personalizzata, copia il seguente manifest YAML in un file denominato
my-custom-class.yaml.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: trueSostituisci CLASS_NAME con il nome della nuova StorageClass.
Ad esempio, il seguente YAML crea una nuova StorageClass che esegue il provisioning dei volumi in un account di archiviazione specifico e applica un tag di
group=deva ogni nuovo 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=devDriver CSI
Puoi specificare un driver CSI diverso nel campo
provisioner.Per creare una StorageClass con un altro driver CSI, puoi utilizzare il seguente YAML di esempio.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...Sostituisci i seguenti valori:
- CLASS_NAME: il nome della StorageClass (ad esempio,
my-custom-class). - CSI_DRIVER_NAME: il nome del driver CSI (ad esempio,
csi.example.com).
Quindi, configura i sottocampi in
parametersin base alla documentazione del driver CSI.- CLASS_NAME: il nome della StorageClass (ad esempio,
Applica il file YAML al cluster.
kubectl apply -f my-custom-class.yamlCrea un oggetto PersistentVolumeClaim con una StorageClass personalizzata.
Dopo aver creato una StorageClass personalizzata, puoi specificarla in un oggetto PVC. L'esempio seguente crea un oggetto PVC denominato
my-pvcche fa riferimento alla StorageClassmy-custom-class.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Impostazione della StorageClass predefinita
GKE su Azure utilizza una StorageClass predefinita denominata standard-rwo che
esegue il provisioning di dischi SSD standard di Azure con
LRS. Puoi modificare l'impostazione predefinita in un'altra StorageClass.
Per modificare la StorageClass predefinita:
Aggiorna l'annotazione
is-default-classper la StorageClassstandard-rwoconkubectl patch.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'Crea una nuova StorageClass con l'annotazione
storageclass.kubernetes.io/is-default-class: true.La seguente StorageClass di esempio utilizza il driver
disk.csi.azure.com. Per installare un altro driver di archiviazione, consulta Installazione di un driver CSI.Copia il seguente YAML in un file denominato
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_TYPESostituisci quanto segue:
- CLASS_NAME: il nome della nuova StorageClass.
- VOLUME_TYPE: il tipo di volume di dischi Azure creato dalla StorageClass.
Ad esempio, il seguente YAML crea una nuova StorageClass predefinita che esegue il provisioning di dischi Azure SSD Premium volumi.
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_LRSApplica la nuova classe personalizzata al cluster.
kubectl apply -f my-custom-class.yaml
Dopo aver applicato questo manifest, GKE su Azure utilizza la StorageClass my-custom-default-class per le nuove richieste di archiviazione.
Fare riferimento alla StorageClass in un oggetto StatefulSet
Per utilizzare la nuova StorageClass, puoi farvi riferimento in volumeClaimTemplates di un oggetto StatefulSet.
Quando fai riferimento a una StorageClass nella specifica volumeClaimTemplates di un oggetto StatefulSet, Kubernetes fornisce spazio di archiviazione stabile utilizzando i volumi permanenti (PV).
Kubernetes chiama il provisioner definito nella StorageClass per creare un nuovo volume di archiviazione. Dopo il provisioning del volume, Kubernetes crea automaticamente un PV.
Il seguente oggetto StatefulSet fa riferimento alla my-custom-class StorageClass e
esegue il provisioning di un volume di 1 gibibyte:
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
Passaggi successivi
Leggi la documentazione del driver CSI per dischi Azure o del driver CSI per file Azure.
Scopri di più sui volumi permanenti in GKE.
Installa i driver di archiviazione nel cluster GKE su Azure.
Esegui il deployment del tuo primo workload con la guida rapida.