Usar un StorageClass personalizado con tus cargas de trabajo
GKE en Azure despliega automáticamente los controladores de CSI para Azure Disk y Azure File.
Las versiones del controlador de CSI de Azure Disk y del controlador de CSI de Azure File están vinculadas a una versión de Kubernetes de GKE en Azure. La versión del controlador suele ser la más reciente disponible cuando se lanza una versión de GKE. Cuando se actualiza el clúster, los controladores se actualizan automáticamente.
Usar un StorageClass personalizado
Puede crear StorageClasses adicionales para volúmenes o usar controladores de interfaz de almacenamiento de contenedores (CSI).
Elige si vas a usar un volumen de disco de Azure u otro controlador de CSI.
Volumen de disco de Azure
Puede crear su propia StorageClass personalizada que especifique un tipo de volumen de disco de Azure, un tipo de sistema de archivos y otros parámetros. Puedes encontrar parámetros adicionales de StorageClass en la página de GitHub del controlador de CSI de Azure Disk de GKE en Azure.
Para configurar una StorageClass personalizada, copia 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
Sustituye CLASS_NAME por el nombre de tu nuevo StorageClass.
Por ejemplo, el siguiente archivo YAML crea una StorageClass que aprovisiona volúmenes en una cuenta de almacenamiento específica y aplica una etiqueta de
group=dev
a cada volumen nuevo.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
Controlador CSI
Puedes especificar otro controlador CSI en el campo
provisioner
.Para crear un StorageClass con otro controlador CSI, puedes usar el ejemplo de YAML que se muestra a continuación.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Sustituye los siguientes valores:
- CLASS_NAME: el nombre de StorageClass (por ejemplo,
my-custom-class
). - CSI_DRIVER_NAME: el nombre del controlador de CSI (por ejemplo,
csi.example.com
).
A continuación, configura los subcampos de
parameters
según la documentación de tu controlador CSI.- CLASS_NAME: el nombre de StorageClass (por ejemplo,
Aplica el archivo YAML a tu clúster.
kubectl apply -f my-custom-class.yaml
Crea un PersistentVolumeClaim con un StorageClass personalizado.
Después de crear un StorageClass personalizado, puede especificarlo en un PVC. En el siguiente ejemplo se crea un PVC llamado
my-pvc
que hace referencia a StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Definir la clase de almacenamiento predeterminada
GKE en Azure usa una StorageClass predeterminada llamada standard-rwo
que aprovisiona discos de Azure SSD estándar con LRS. Puedes cambiar el valor predeterminado por otra StorageClass.
Para cambiar la clase de almacenamiento predeterminada, sigue estos pasos:
Actualiza la anotación
is-default-class
destandard-rwo
StorageClass conkubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Crea un StorageClass que tenga la anotación
storageclass.kubernetes.io/is-default-class: true
.En el siguiente ejemplo de StorageClass se usa el controlador
disk.csi.azure.com
. Para instalar otro controlador de almacenamiento, consulta Instalar un controlador de CSI.Copia el siguiente código 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
Haz los cambios siguientes:
- CLASS_NAME: el nombre de tu nuevo StorageClass.
- VOLUME_TYPE: el tipo de volumen de disco de Azure que crea StorageClass.
Por ejemplo, el siguiente archivo YAML crea una clase StorageClass predeterminada que aprovisiona volúmenes de disco de 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
Aplica la nueva clase personalizada a tu clúster.
kubectl apply -f my-custom-class.yaml
Después de aplicar este manifiesto, GKE en Azure usa la my-custom-default-class
StorageClass para las nuevas solicitudes de almacenamiento.
Hacer referencia a StorageClass en un StatefulSet
Para usar tu nuevo StorageClass, puedes hacer referencia a él en el volumeClaimTemplates
de un StatefulSet.
Cuando haces referencia a una StorageClass en la volumeClaimTemplates
especificación de un StatefulSet, Kubernetes proporciona almacenamiento estable mediante PersistentVolumes (PVs).
Kubernetes llama al aprovisionador definido en 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 my-custom-class
StorageClass y
proporciona 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
Siguientes pasos
Consulta la documentación del controlador de CSI de disco de Azure o del controlador de CSI de archivo de Azure.
Consulta información sobre los volúmenes persistentes en GKE.
Instala controladores de almacenamiento en tu clúster de GKE en Azure.
Despliega tu primera carga de trabajo con la guía de inicio rápido.