Usa una StorageClass personalizada con tus cargas de trabajo
GKE en Azure implementa de forma automática el controlador de CSI de Azure Disk y el controlador de CSI de 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 en el momento en que se lanza una versión de GKE. Cuando se actualiza el clúster, los controladores se actualizan de forma automática.
Usa una StorageClass personalizada
Puedes crear StorageClasses adicionales para volúmenes o usar controladores de la interfaz de almacenamiento de contenedores (CSI).
Elige si usas un volumen de disco de Azure o algún otro controlador de CSI.
Volumen de disco de Azure
Puedes crear tu propia StorageClass personalizada que especifique un tipo de volumen de Azure Disk, 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
Reemplaza CLASS_NAME por el nombre de tu StorageClass nueva.
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 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 de CSI
Puedes especificar un controlador de CSI diferente en el campo
provisioner
.Para crear una StorageClass con otro controlador de CSI, puedes usar el siguiente ejemplo de YAML.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
Reemplaza los siguientes valores:
- CLASS_NAME: es el nombre de la StorageClass (por ejemplo,
my-custom-class
). - CSI_DRIVER_NAME: es el nombre del controlador de CSI (por ejemplo,
csi.example.com
).
Luego, configura los subcampos en
parameters
según la documentación del controlador de CSI.- CLASS_NAME: es el nombre de la StorageClass (por ejemplo,
Aplica el YAML a tu clúster.
kubectl apply -f my-custom-class.yaml
Crea un PersistentVolumeClaim con un StorageClass personalizado
Después de crear una StorageClass personalizada, puedes especificarla en una PVC. En el siguiente ejemplo, se crea una PVC llamada
my-pvc
que hace referencia amy-custom-class
de StorageClass.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Configura la StorageClass 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 StorageClass predeterminada, haz lo siguiente:
Actualiza 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"}}}'
Crea una StorageClass nueva 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 Instala un controlador CSI.Copia 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
Reemplaza lo siguiente:
- CLASS_NAME: Es el nombre de tu StorageClass nueva.
- VOLUME_TYPE: el tipo de volumen de Azure Disk que crea la StorageClass.
Por ejemplo, el siguiente YAML crea una nueva StorageClass predeterminada que aprovisiona volúmenes de Premium SSD de Azure Disk.
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 StorageClass my-custom-default-class
para las solicitudes de almacenamiento nuevas.
Haz referencia al StorageClass en un StatefulSet
Para usar la StorageClass nueva, puedes hacer referencia a ella en un volumeClaimTemplates
de StatefulSet.
Cuando haces referencia a la StorageClass en la especificación volumeClaimTemplates
de StatefulSet, Kubernetes proporciona almacenamiento estable mediante PersistentVolumes (PV).
Kubernetes llama al aprovisionador definido en la StorageClass para crear un volumen de almacenamiento nuevo. Una vez que se aprovisiona el volumen, Kubernetes crea un PV de forma automática.
El siguiente StatefulSet hace referencia a la StorageClass my-custom-class
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?
Lee la documentación del controlador de CSI de Azure Disk o del controlador de CSI de Azure File.
Obtén más información sobre los volúmenes persistentes en GKE.
Instala los controladores de almacenamiento en tu clúster de GKE en Azure.
Implementa tu primera carga de trabajo con la guía de inicio rápido.