Utilice una StorageClass personalizada con sus cargas de trabajo
GKE en Azure implementa automáticamente el controlador CSI de disco de Azure y el controlador CSI de archivo de Azure .
Las versiones de los controladores CSI de disco de Azure y de archivo de Azure están vinculadas a una versión de GKE en Azure Kubernetes. La versión del controlador suele ser la más reciente disponible cuando se lanza una versión de GKE. Al actualizar el clúster, los controladores se actualizan automáticamente.
Utilice una StorageClass personalizada
Puede crear StorageClasses adicionales para volúmenes o utilizar controladores de interfaz de almacenamiento de contenedores (CSI).
Elija si está utilizando un volumen de disco de Azure u otro controlador CSI.
Volumen de disco de Azure
Puedes crear tu propia StorageClass personalizada que especifique el tipo de volumen de Azure Disk, el tipo de sistema de archivos y otros parámetros. Puedes encontrar parámetros adicionales de StorageClass en la página de GitHub del controlador CSI de Azure Disk de GKE en Azure.
Para configurar una StorageClass personalizada, copie el siguiente manifiesto YAML en un archivo llamado
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
Reemplace CLASS_NAME con el nombre de su nueva StorageClass.
Por ejemplo, el siguiente YAML crea una nueva StorageClass que aprovisiona volúmenes en una cuenta de almacenamiento específica y aplica una etiqueta de
group=dev
a cada nuevo volumen.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
Conductor de CSI
Puede especificar un controlador CSI diferente en el campo de
provisioner
.Para crear una StorageClass con otro controlador CSI, puede utilizar el ejemplo YAML a continuación.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Reemplace los siguientes valores:
- CLASS_NAME : el nombre de la StorageClass (por ejemplo,
my-custom-class
). - CSI_DRIVER_NAME : el nombre del controlador CSI (por ejemplo,
csi.example.com
).
A continuación, configure los subcampos en
parameters
de acuerdo con la documentación de su controlador CSI.- CLASS_NAME : el nombre de la StorageClass (por ejemplo,
Aplique el YAML a su clúster.
kubectl apply -f my-custom-class.yaml
Cree un PersistentVolumeClaim con una StorageClass personalizada.
Tras crear una StorageClass personalizada, puede especificarla en una PVC. El siguiente ejemplo crea una PVC llamada
my-pvc
que hace referencia a la StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Establecer la clase de almacenamiento predeterminada
GKE en Azure usa una StorageClass predeterminada llamada standard-rwo
que aprovisiona discos SSD estándar de Azure con LRS . Puedes cambiar la StorageClass predeterminada a otra.
Para cambiar la clase de almacenamiento predeterminada:
Actualice la anotación
is-default-class
para la StorageClassstandard-rwo
conkubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Cree una nueva StorageClass que tenga la anotación
storageclass.kubernetes.io/is-default-class: true
.El siguiente ejemplo de StorageClass utiliza el controlador
disk.csi.azure.com
. Para instalar otro controlador de almacenamiento, consulte Instalación de un controlador CSI .Copie el siguiente YAML en un archivo llamado
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
Reemplace lo siguiente:
- CLASS_NAME : el nombre de su nueva StorageClass.
- VOLUME_TYPE : el tipo de volumen de disco de Azure que crea StorageClass.
Por ejemplo, el siguiente YAML crea una nueva StorageClass predeterminada que aprovisiona volúmenes de discos SSD Premium de Azure.
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
Aplique la nueva clase personalizada a su clúster.
kubectl apply -f my-custom-class.yaml
Después de aplicar este manifiesto, GKE en Azure usa my-custom-default-class
StorageClass para nuevas solicitudes de almacenamiento.
Hacer referencia a StorageClass en un StatefulSet
Para utilizar su nueva StorageClass, puede hacer referencia a ella en volumeClaimTemplates
de un StatefulSet.
Al hacer referencia a una StorageClass en la especificación volumeClaimTemplates
de un StatefulSet, Kubernetes proporciona almacenamiento estable mediante PersistentVolumes (PV). Kubernetes llama al aprovisionador definido en la StorageClass para crear un nuevo volumen de almacenamiento. Una vez aprovisionado el volumen, Kubernetes crea automáticamente un PV.
El siguiente StatefulSet hace referencia a la my-custom-class
StorageClass y aprovisiona un volumen de 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
¿Qué sigue?
Lea la documentación del controlador CSI de disco de Azure o del controlador CSI de archivos de Azure .
Obtenga información sobre los volúmenes persistentes en GKE .
Instale controladores de almacenamiento en su clúster de GKE en Azure.
Implemente su primera carga de trabajo con el inicio rápido .