Utilizzare una classe StorageClass personalizzata con i carichi di lavoro
GKE su Azure esegue automaticamente il deployment di Azure Disk CSI Driver e Azure File CSI Driver.
Le versioni del driver CSI Azure Disk e del driver CSI Azure File sono associate a una versione di GKE on Azure Kubernetes. In genere, la versione del driver è l'ultima disponibile al momento del rilascio di una versione GKE. Quando viene eseguito l'upgrade del cluster, i driver si aggiornano automaticamente.
Utilizzo di una classe StorageClass personalizzata
Puoi creare StorageClass aggiuntivi per i volumi o utilizzare i driver CSI (Container Storage Interface).
Scegli se utilizzi un volume disco Azure o un altro driver CSI.
Volume disco Azure
Puoi creare una classe di archiviazione 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 un StorageClass personalizzato, 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 un nuovo StorageClass che provisiona i 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 altro driver CSI nel campo
provisioner
.Per creare un 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 della classe di archiviazione (ad esempio,
my-custom-class
). - CSI_DRIVER_NAME: il nome del driver CSI (ad esempio,
csi.example.com
).
Poi, configura i campi secondari in
parameters
in base alla documentazione del driver CSI.- CLASS_NAME: il nome della classe di archiviazione (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 classe di archiviazione personalizzata, puoi specificarla in un PVC. L'esempio seguente crea un PVC denominato
my-pvc
che fa riferimento all'oggetto StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Impostare la classe StorageClass predefinita
GKE on Azure utilizza un oggetto StorageClass predefinito denominato standard-rwo
che esegue il provisioning di dischi Azure SSD standard con LRS. Puoi impostare un'altra classe StorageClass predefinita.
Per modificare la classe di archiviazione 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 un nuovo StorageClass con l'annotazione
storageclass.kubernetes.io/is-default-class: true
.L'esempio seguente StorageClass utilizza il driver
disk.csi.azure.com
. Per installare un altro driver di archiviazione, consulta 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 del nuovo StorageClass.
- VOLUME_TYPE: il tipo di volume del disco Azure creato da StorageClass.
Ad esempio, il seguente codice YAML crea un nuovo StorageClass predefinito che provisiona volumi Azure Disk Premium SSD.
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 on Azure utilizza la StorageClassmy-custom-default-class
per le nuove richieste di archiviazione.
Fare riferimento a StorageClass in un StatefulSet
Per utilizzare il nuovo StorageClass, puoi farvi riferimento nel volumeClaimTemplates
di un StatefulSet.
Quando fai riferimento a un StorageClass nella volumeClaimTemplates
specifica di un StatefulSet, Kubernetes fornisce uno spazio di archiviazione stabile utilizzando gli oggetti 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 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 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 carico di lavoro con la guida rapida.