Utilizzo di una classe StorageClass personalizzata con i carichi di lavoro
GKE su Azure esegue automaticamente il deployment di driver CSI per dischi Azure e driver CSI per file Azure.
Le versioni del driver CSI per dischi Azure e del driver CSI per file Azure sono associate a una versione di Kubernetes di GKE su Azure. In genere, la versione del driver è l'ultima disponibile al momento del rilascio di una versione di GKE. Quando il cluster viene sottoposto ad upgrade, i driver vengono aggiornati automaticamente.
Utilizzo di una classe StorageClass personalizzata
Puoi creare classi 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 classe 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 classe 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 classe StorageClass.
Ad esempio, il seguente YAML crea una nuova classe StorageClass che esegue il provisioning dei volumi in un account di archiviazione specifico e applica un tag
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 classe 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 StorageClass (ad esempio
my-custom-class). - CSI_DRIVER_NAME: il nome del driver CSI (ad esempio
csi.example.com).
Dopodiché, configura i sottocampi in
parametersin base alla documentazione del driver CSI.- CLASS_NAME: il nome della classe StorageClass (ad esempio
Applica il file YAML al cluster.
kubectl apply -f my-custom-class.yamlCrea un oggetto PersistentVolumeClaim con una classe StorageClass personalizzata.
Dopo aver creato una classe StorageClass personalizzata, puoi specificarla in un oggetto PVC. L'esempio seguente crea un oggetto PVC denominato
my-pvcche fa riferimento alla classe StorageClassmy-custom-class.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Impostazione della classe StorageClass predefinita
GKE su Azure utilizza una classe StorageClass predefinita denominata standard-rwo che
esegue il provisioning dei dischi SSD standard di Azure con
LRS. Puoi modificare l'impostazione predefinita in un'altra classe StorageClass.
Per modificare la classe StorageClass predefinita:
Aggiorna l'annotazione
is-default-classper la classe StorageClassstandard-rwoconkubectl patch.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'Crea una nuova classe StorageClass con l'annotazione
storageclass.kubernetes.io/is-default-class: true.La seguente classe 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 classe StorageClass.
- VOLUME_TYPE: il tipo di volume di dischi Azure creato dalla classe StorageClass.
Ad esempio, il seguente YAML crea una nuova classe 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 classe StorageClass my-custom-default-class per le nuove richieste di archiviazione.
Fare riferimento alla classe StorageClass in un oggetto StatefulSet
Per utilizzare la nuova classe StorageClass, puoi farvi riferimento in volumeClaimTemplates di un oggetto StatefulSet.
Quando fai riferimento a una classe 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 classe 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 classe StorageClass my-custom-class e
esegue il provisioning di un volume di 1 GiB:
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 carico di lavoro con la guida rapida.