Benutzerdefinierte StorageClass für Arbeitslasten verwenden
In GKE on Azure werden automatisch Azure Disk CSI Driver und Azure File CSI Driver bereitgestellt.
Die Azure Disk CSI Driver- und Azure File CSI Driver-Versionen sind an die Kubernetes-Version von GKE on Azure gebunden. Die Treiberversion ist in der Regel die neueste Version, die bei der Veröffentlichung einer GKE-Version verfügbar war. Bei einem Upgrade des Clusters werden die Treiber automatisch aktualisiert.
Benutzerdefinierte StorageClass verwenden
Sie können zusätzliche StorageClasses für Volumes erstellen oder CSI-Treiber (Container Storage Interface) verwenden.
Wählen Sie aus, ob Sie ein Azure-Laufwerk-Volume oder einen anderen CSI-Treiber verwenden.
Azure Disk-Volume
Sie können Ihre eigene benutzerdefinierte StorageClass erstellen, die einen Azure Disk-Volume-Typ, einen Dateisystemtyp und andere Parameter angibt. Weitere StorageClass-Parameter finden Sie auf der GitHub-Seite des Azure Disk CSI-Treibers für GKE on Azure.
Zum Konfigurieren einer benutzerdefinierten StorageClass kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
Ersetzen Sie dabei CLASS_NAME durch den Namen Ihrer neuen StorageClass.
Mit der folgenden YAML-Datei wird beispielsweise eine neue StorageClass erstellt, die Volumes in einem bestimmten Speicherkonto bereitstellt und ein Tag von
group=dev
auf jedes neue Volume anwendet.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
CSI-Treiber
Sie können im Feld
provisioner
einen anderen CSI-Treiber angeben.Zum Erstellen einer StorageClass mit einem anderen CSI-Treiber können Sie das folgende YAML-Beispiel verwenden:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Ersetzen Sie die folgenden Werte:
- CLASS_NAME ist der Name der StorageClass, z. B.
my-custom-class
. - CSI_DRIVER_NAME ist der Name des CSI-Treibers, z. B.
csi.example.com
.
Konfigurieren Sie als Nächstes Unterfelder unter
parameters
entsprechend der Dokumentation Ihres CSI-Treibers.- CLASS_NAME ist der Name der StorageClass, z. B.
Wenden Sie die YAML-Datei auf Ihren Cluster an.
kubectl apply -f my-custom-class.yaml
Erstellen Sie einen PersistentVolumeClaim mit einer benutzerdefinierten StorageClass.
Nachdem Sie eine benutzerdefinierte StorageClass erstellt haben, können Sie sie in einem PVC angeben. Im folgenden Beispiel wird einen PVC namens
my-pvc
erstellt, der auf die StorageClassmy-custom-class
verweist.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Standard-StorageClass festlegen
GKE on Azure verwendet die Standard-StorageClass standard-rwo
, die standardmäßige Azure-SSD-Laufwerke mit LRS bereitstellt. Sie können diese Standardeinstellung in eine andere StorageClass ändern.
So ändern Sie die Standard-StorageClass:
Aktualisieren Sie die Annotation
is-default-class
für die StorageClassstandard-rwo
mitkubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Erstellen Sie eine neue StorageClass mit der Annotation
storageclass.kubernetes.io/is-default-class: true
.Die folgende Beispiel-StorageClass nutzt den Treiber
disk.csi.azure.com
. Weitere Informationen zur Installation eines anderen Speichertreibers finden Sie unter CSI-Treiber installieren.Kopieren Sie das folgende YAML-Manifest in eine Datei mit dem Namen
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
Dabei gilt:
- CLASS_NAME ist der Name Ihrer neuen StorageClass.
- VOLUME_TYPE: der von der StorageClass erstellte Volume-Typ von Azure Disk.
Mit der folgenden YAML-Datei wird beispielsweise eine neue Standard-StorageClass erstellt, die Premium SSD-Azure Disk-Volumes bereitstellt.
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
Wenden Sie die neue benutzerdefinierte Klasse auf Ihren Cluster an.
kubectl apply -f my-custom-class.yaml
Nach der Anwendung dieses Manifests verwendet GKE on Azure die StorageClass my-custom-default-class
für neue Speicheranfragen.
Auf StorageClass in einem StatefulSet verweisen
Verweisen Sie auf die StorageClass im volumeClaimTemplates
eines StatefulSet, um sie zu verwenden.
Wenn Sie in der Spezifikation volumeClaimTemplates
eines StatefulSet auf eine StorageClass verweisen, bietet Kubernetes stabilen Speicher mit PersistentVolumes (PVs).
Kubernetes ruft den in der StorageClass definierten Bereitsteller auf, um ein neues Speicher-Volume zu erstellen. Nachdem das Volume bereitgestellt wurde, erstellt Kubernetes automatisch eine Produktversion.
Das folgende StatefulSet verweist auf die StorageClass my-custom-class
und stellt ein 1-Gibibyte-Volume bereit:
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
Nächste Schritte
Lesen Sie die Dokumentation zum Azure Disk-CSI-Treiber oder Azure File-CSI-Treiber.
Speichertreiber auf Ihrem GKE on Azure-Cluster installieren
Stellen Sie Ihre erste Arbeitslast mit der Kurzanleitung bereit.