Use uma StorageClass personalizada com as suas cargas de trabalho
O GKE on Azure implementa automaticamente o controlador CSI de disco do Azure e o controlador CSI de ficheiros do Azure.
As versões do controlador CSI do disco do Azure e do controlador CSI de ficheiros do Azure estão associadas a uma versão do GKE no Azure Kubernetes. Normalmente, a versão do controlador é a mais recente disponível quando é lançada uma versão do GKE. Quando o cluster é atualizado, os controladores são atualizados automaticamente.
Use uma StorageClass personalizada
Pode criar StorageClasses adicionais para volumes ou usar controladores da interface de armazenamento de contentores (CSI).
Escolha se está a usar um volume de disco do Azure ou outro controlador CSI.
Volume de disco do Azure
Pode criar a sua própria StorageClass personalizada que especifica um tipo de volume de disco do Azure, um tipo de sistema de ficheiros e outros parâmetros. Pode encontrar parâmetros StorageClass adicionais na página do GitHub do controlador CSI do disco do Azure do GKE no Azure.
Para configurar uma StorageClass personalizada, copie o seguinte manifesto YAML para um ficheiro denominado
my-custom-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
Substitua CLASS_NAME pelo nome da nova StorageClass.
Por exemplo, o YAML seguinte cria uma nova StorageClass que aprovisiona volumes numa conta de armazenamento específica e aplica uma etiqueta de
group=dev
a 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=dev
Controlador CSI
Pode especificar um controlador CSI diferente no campo
provisioner
.Para criar uma StorageClass com outro controlador CSI, pode usar o exemplo de YAML abaixo.
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 da StorageClass (por exemplo,
my-custom-class
). - CSI_DRIVER_NAME: o nome do controlador CSI (por exemplo,
csi.example.com
).
Em seguida, configure os subcampos em
parameters
de acordo com a documentação do controlador CSI.- CLASS_NAME: o nome da StorageClass (por exemplo,
Aplique o YAML ao seu cluster.
kubectl apply -f my-custom-class.yaml
Crie um PersistentVolumeClaim com uma StorageClass personalizada.
Depois de criar uma StorageClass personalizada, pode especificá-la num PVC. O exemplo seguinte cria um PVC denominado
my-pvc
que faz referência à StorageClassmy-custom-class
.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
Defina a StorageClass predefinida
O GKE no Azure usa uma StorageClass predefinida denominada standard-rwo
que aprovisiona discos do Azure SSD padrão com LRS. Pode alterar a predefinição para outra StorageClass.
Para alterar a StorageClass predefinida:
Atualize a anotação
is-default-class
para astandard-rwo
StorageClass comkubectl patch
.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
Crie uma nova StorageClass com a anotação
storageclass.kubernetes.io/is-default-class: true
.O exemplo seguinte de StorageClass usa o controlador
disk.csi.azure.com
. Para instalar outro controlador de armazenamento, consulte o artigo Instalar um controlador CSI.Copie o seguinte YAML para um ficheiro com o nome
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
Substitua o seguinte:
- CLASS_NAME: o nome da nova StorageClass.
- VOLUME_TYPE: o tipo de volume do disco do Azure que a StorageClass cria.
Por exemplo, o YAML seguinte cria uma nova StorageClass predefinida que aprovisiona SSD Premium volumes de 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_LRS
Aplique a nova classe personalizada ao seu cluster.
kubectl apply -f my-custom-class.yaml
Depois de aplicar este manifesto, o GKE no Azure usa a
my-custom-default-class
StorageClass para novos pedidos de armazenamento.
Referencie a StorageClass num StatefulSet
Para usar a nova StorageClass, pode referenciá-la no volumeClaimTemplates
de um StatefulSet.
Quando faz referência a uma StorageClass na especificação de um StatefulSet, o Kubernetes fornece armazenamento estável através de PersistentVolumes (PVs).volumeClaimTemplates
O Kubernetes chama o aprovisionador definido na StorageClass para criar um novo volume de armazenamento. Depois de o volume ser aprovisionado, o Kubernetes cria automaticamente um PV.
O StatefulSet seguinte faz referência à my-custom-class
StorageClass e
aprovisiona 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
O que se segue?
Leia a documentação do controlador CSI do disco do Azure ou do controlador CSI do ficheiro do Azure.
Saiba mais sobre os volumes persistentes no GKE.
Instale controladores de armazenamento no cluster do GKE no Azure.
Implemente a sua primeira carga de trabalho com o Início rápido.