Utilizzare una StorageClass personalizzata con i tuoi carichi di lavoro
GKE su Azure esegue automaticamente il deployment di Azure Disk CSI Driver e Azure File CSI Driver.
Le versioni di Azure Disk CSI Driver e Azure File CSI Driver sono associate a una versione di GKE su Azure Kubernetes. La versione del driver è in genere l'ultima disponibile al momento del rilascio di una versione di GKE. Quando viene eseguito l'upgrade del cluster, i driver vengono aggiornati automaticamente.
Utilizzo di una classe StorageClass personalizzata
Puoi creare StorageClass aggiuntive per i volumi o utilizzare i driver Container Storage Interface (CSI).
Scegli se utilizzi un volume disco Azure o un altro driver CSI.
Volume disco Azure
Puoi creare una StorageClass personalizzata che specifica un tipo di volume Azure Disk, un tipo di file system e altri parametri. Puoi trovare parametri StorageClass aggiuntivi nella pagina GitHub del driver CSI del disco 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: true
Sostituisci CLASS_NAME con il nome della nuova StorageClass.
Ad esempio, il seguente file YAML crea una nuova StorageClass che esegue il provisioning dei volumi in un account di archiviazione specifico e applica un tag
group=dev
a 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=dev
Driver CSI
Puoi specificare un driver CSI diverso nel campo
provisioner
.Per creare una StorageClass con un altro driver CSI, puoi utilizzare l'esempio YAML riportato di seguito.
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 di StorageClass (ad esempio,
my-custom-class
). - CSI_DRIVER_NAME: il nome del driver CSI (ad esempio,
csi.example.com
).
A questo punto, configura i campi secondari in
parameters
in base alla documentazione del driver CSI.- CLASS_NAME: il nome di StorageClass (ad esempio,
Applica il file YAML al cluster.
kubectl apply -f my-custom-class.yaml
Crea un PersistentVolumeClaim con una classe StorageClass personalizzata.
Dopo aver creato una StorageClass personalizzata, puoi specificarla in un PVC. L'esempio seguente crea un PVC denominato
my-pvc
che fa riferimento a StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Impostare la risorsa StorageClass predefinita
GKE su Azure utilizza un oggetto StorageClass predefinito denominato standard-rwo
che
esegue il provisioning di dischi SSD standard di Azure con
LRS. Puoi modificare il valore predefinito con un'altra risorsa StorageClass.
Per modificare la risorsa StorageClass predefinita:
Aggiorna l'annotazione
is-default-class
per la classe di archiviazionestandard-rwo
conkubectl 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, vedi Installazione di un driver CSI.Copia il seguente codice 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_TYPE
Sostituisci quanto segue:
- CLASS_NAME: il nome della nuova StorageClass.
- VOLUME_TYPE: il tipo di volume del disco Azure che StorageClass crea.
Ad esempio, il seguente YAML crea un nuovo oggetto StorageClass predefinito che esegue il provisioning di volumi di dischi Azure 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
Applica la nuova classe personalizzata al cluster.
kubectl apply -f my-custom-class.yaml
Dopo aver applicato questo manifest, GKE su Azure utilizza
my-custom-default-class
StorageClass per le nuove richieste di archiviazione.
Fai riferimento a StorageClass in un oggetto StatefulSet
Per utilizzare il nuovo StorageClass, puoi farvi riferimento in volumeClaimTemplates
di uno StatefulSet.
Quando fai riferimento a una StorageClass nella specifica volumeClaimTemplates
di uno StatefulSet, Kubernetes fornisce spazio di archiviazione stabile utilizzando PersistentVolume (PV).
Kubernetes chiama il provisioner definito in StorageClass per creare un nuovo volume di archiviazione. Dopo il provisioning del volume, Kubernetes crea automaticamente un PV.
Il seguente StatefulSet fa riferimento alla classe di archiviazione my-custom-class
e
provisiona 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 Azure Disk o del driver CSI Azure File.
Scopri di più sui volumi permanenti in GKE.
Installa i driver di archiviazione sul tuo cluster GKE su Azure.
Esegui il deployment del tuo primo workload con la guida rapida.