Usar um StorageClass personalizado com as cargas de trabalho
Para definir comportamentos de armazenamento específicos para cargas de trabalho em contêineres no Google Kubernetes Engine (GKE) no Azure, crie e use StorageClasses personalizados. Ao personalizar StorageClasses, é possível otimizar o desempenho e o custo do armazenamento para seus aplicativos selecionando diferentes tipos de disco do Azure, tipos de sistema de arquivos e outros parâmetros para seus PersistentVolumes. Esse recurso ajuda a executar serviços eficientes, adaptando o armazenamento às necessidades exatas da carga de trabalho.
O GKE no Azure implanta e gerencia automaticamente o driver CSI do Disco do Azure e o Driver CSI de Arquivos do Azure, que são essenciais para o provisionamento de armazenamento. As versões desses drivers estão vinculadas à versão do Kubernetes do GKE no Azure e são atualizadas automaticamente com upgrades de cluster, garantindo a compatibilidade perfeita dos StorageClasses personalizados.
Usar um StorageClass personalizado
É possível criar mais StorageClasses para volumes EBS ou usar drivers do Container Storage Interface (CSI).
Escolha se você está usando um volume de disco do Azure ou outro driver CSI.
Volume do disco do Azure
É possível criar seu próprio StorageClass personalizado que especifica um tipo de volume de disco do Azure, um tipo de sistema de arquivos e outros parâmetros. É possível encontrar outros parâmetros StorageClass na página do GitHub do driver CSI do Disco do Azure do GKE do Azure.
Para configurar um StorageClass personalizado, copie o seguinte manifesto YAML em um arquivo chamado
my-custom-class.yaml.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: trueSubstitua CLASS_NAME pelo nome do novo StorageClass.
Por exemplo, o YAML a seguir cria um novo StorageClass que provisiona volumes em uma conta de armazenamento específica e aplica uma tag de
group=devpara cada novo 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
É possível especificar um driver CSI diferente no campo
provisioner.Para criar um StorageClass com outro driver CSI, use o exemplo de YAML a seguir.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...Substitua os seguintes valores:
- CLASS_NAME: o nome do StorageClass (por exemplo,
my-custom-class). - CSI_DRIVER_NAME: o nome do driver CSI (por exemplo,
csi.example.com).
Em seguida, configure subcampos em
parametersde acordo com a documentação do driver CSI.- CLASS_NAME: o nome do StorageClass (por exemplo,
Aplique o YAML ao cluster.
kubectl apply -f my-custom-class.yamlCrie um PersistentVolumeClaim com um StorageClass personalizado.
Depois de criar um StorageClass personalizado, é possível especificá-lo em um PVC. O exemplo a seguir cria um PVC chamado
my-pvcque referencia o StorageClassmy-custom-class.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Definir o StorageClass padrão
O GKE no Azure usa um StorageClass padrão chamado standard-rwo que provisiona discos SSD padrão do Azure com LRS. É possível alterar o padrão para outro StorageClass.
Para alterar o StorageClass padrão:
Atualize a anotação
is-default-classdo StorageClassstandard-rwocomkubectl patch.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'Crie um novo StorageClass que tenha a anotação
storageclass.kubernetes.io/is-default-class: true.O StorageClass a seguir usa o driver
disk.csi.azure.com. Para instalar outro driver de armazenamento, consulte Como instalar um driver CSI.Copie o seguinte YAML para um arquivo chamado
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_TYPESubstitua:
- CLASS_NAME: o nome do novo StorageClass.
- VOLUME_TYPE: o tipo de volume do Disco do Azure que o StorageClass cria.
Por exemplo, o YAML a seguir cria um novo StorageClass padrão que provisiona volumes SSD Premium do Disco do 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_LRSAplique a nova classe personalizada ao cluster.
kubectl apply -f my-custom-class.yaml
Depois de aplicar esse manifesto, o GKE no Azure usará o StorageClass my-custom-default-class para novas solicitações de armazenamento.
Referenciar o StorageClass em um StatefulSet
Para usar o novo StorageClass, é possível referenciá-lo no volumeClaimTemplates do
StatefulSet.
Quando você se referir a um StorageClass na especificação volumeClaimTemplates
de um StatefulSet, o Kubernetes fornecerá armazenamento estável usando PersistentVolumes (PVs).
O Kubernetes chama o provisionador definido no StorageClass para criar um novo
volume de armazenamento. Depois que o volume for provisionado, o Kubernetes criará
automaticamente um PV.
O StatefulSet a seguir referencia o StorageClass my-custom-class e
provisiona um volume 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
A seguir
Leia a documentação do driver CSI do Disco do Azure ou do driver CSI de Arquivos do Azure.
Saiba mais sobre volumes permanentes no GKE.
Instale os drivers de armazenamento no cluster do GKE no Azure.
Implante sua primeira carga de trabalho com o Guia de início rápido.