Este tópico descreve como provisionar e montar dinamicamente volumes de disco da Alibaba Cloud para aplicações com estado no ACK Serverless, além de verificar as características de armazenamento persistente.
Casos de uso
Os volumes de disco são adequados para cargas de trabalho que exigem armazenamento em bloco dedicado e de alto desempenho:
Aplicações com estado com altos requisitos de E/S de disco (por exemplo, MySQL e Redis) sem compartilhamento de dados entre pods
Escrita de logs com alto throughput
Persistência de dados independente do ciclo de vida do pod
Como funciona o provisionamento dinâmico
Quando uma PVC referencia uma StorageClass, o Kubernetes cria e vincula automaticamente um volume persistente (PV) suportado por um disco da Alibaba Cloud, eliminando a criação manual de discos.
Clusters ACK Serverless não incluem uma StorageClass padrão. Crie uma antes de provisionar o armazenamento.
O Kubernetes suporta uma StorageClass padrão . Se uma PVC omitir a StorageClass, o Kubernetes usará a padrão para provisionar um PV. Consulte Storage basics .
Pré-requisitos
Certifique-se do seguinte:
Um ACK Serverless cluster foi criado.
O kubectl está connected to the cluster.
O plug-in CSI está installed.
Provisionar um volume de disco
Siga estas etapas em ordem:
Crie uma StorageClass para definir o tipo de disco e o comportamento de provisionamento.
Crie uma PVC para solicitar armazenamento da StorageClass.
Implante uma aplicação e monte a PVC.
ACK console
Etapa 1: Criar uma StorageClass
Faça logon no ACK console e clique em Clusters no painel de navegação à esquerda.
Na página Clusters, clique no nome do cluster e escolha Volumes > StorageClasses.
Na página StorageClasses, clique em Create.
-
Na caixa de diálogo Create, defina os parâmetros.
Tipos específicos de instância ECS não suportam ESSDs ou discos efêmeros elásticos. Consulte FAQ about Elastic Block Storage .
Parâmetro
Obrigatório
Descrição
Name
Sim
Nome da StorageClass.
PV Type
Sim
Selecione Cloud Disk.
Parameter
Sim
Categoria do disco. Padrão:
cloud_essd. Valores válidos:cloud_essd(Enterprise SSD),cloud_regional_disk_auto(Regional ESSDs),elastic_ephemeral_disk_premium(disco efêmero elástico premium),elastic_ephemeral_disk_standard(disco efêmero elástico padrão),cloud_ssd(SSD padrão),cloud_efficiency(ultra disk). Defina vários valores para fallback, por exemplo,type: cloud_ssd,cloud_essd. O sistema tenta cada um em ordem. AdicionezoneIdpara fixar em zonas específicas, por exemplo,cn-beijing-aoucn-beijing-a, cn-beijing-b.Reclaim Policy
Sim
Comportamento do PV e do disco na exclusão da PVC. Padrão: Delete (ambos removidos). Defina como Retain para manter ambos — recomendado quando a perda de dados for custosa.
Binding Mode
Não
Padrão: Immediate (o disco é criado antes do agendamento do pod).
Clique em Create. A StorageClass aparece na página StorageClasses.
Etapa 2: Criar uma PVC
No painel de navegação à esquerda, escolha Volumes > Persistent Volume Claims.
Na página Persistent Volume Claims, clique em Create.
-
Na caixa de diálogo Create PVC, defina os parâmetros.
Parâmetro
Obrigatório
Descrição
PVC Type
Sim
Selecione Cloud Disk.
Name
Sim
Nome da PVC. Deve ser único dentro do namespace.
Allocation Mode
Sim
Selecione Use StorageClass.
Existing Storage Class
Sim
Clique em Select, localize a StorageClass da Etapa 1 e clique em Select na coluna Actions.
Capacity
Sim
Capacidade de armazenamento a ser solicitada. Mínimo: 20 GiB.
Access Mode
Não
Padrão: ReadWriteOnce (leitura/gravação em nó único).
Clique em Create. A PVC aparece na página Persistent Volume Claims com um PV vinculado.
Etapa 3: Implantar uma aplicação
No painel de navegação à esquerda, escolha Workloads > StatefulSets.
Na página StatefulSets, clique em Create from Image.
Configure a aplicação. Selecione Cloud Storage e monte a PVC criada na Etapa 2. Neste exemplo, o disco é montado em
/tmp, persistindo os dados gravados em/tmp. Consulte Usar um StatefulSet para criar uma aplicação com estado.Clique em Create. A aplicação é implantada com armazenamento persistente em disco.
kubectl
Etapa 1: Criar uma StorageClass
Em clusters multizona, a StorageClass determina o tipo de disco antes do agendamento do pod.
-
Crie um arquivo chamado
storage-class-csi.yaml:Parâmetro
Obrigatório
Descrição
provisionerSim
Defina como
diskplugin.csi.alibabacloud.com.typeSim
Categoria do disco. Valores válidos:
cloud_auto(disco ESSD AutoPL),cloud_essd(ESSD, padrão),cloud_essd_entry(disco ESSD Entry),cloud_ssd(SSD padrão),cloud_efficiency(ultra disk),elastic_ephemeral_disk_standard(disco efêmero elástico padrão),elastic_ephemeral_disk_premium(disco efêmero elástico premium),cloud_regional_disk_auto(Regional ESSDs). Especifique vários valores como uma lista de fallback separada por vírgulas. Consulte Preços do EBS, Block storage performance e Overview of instance families.encryptedNão
Indica se o disco deve ser criptografado. Padrão:
false.reclaimPolicySim
Comportamento do PV e do disco na exclusão da PVC.
Delete: ambos removidos.Retain: ambos mantidos — useRetainquando a perda de dados for custosa. Padrão:Delete.allowVolumeExpansionNão
Defina como
truepara permitir a expansão online do disco.volumeBindingModeNão
Padrão:
Immediate(o disco é provisionado antes do agendamento do pod).apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-ssd-b # Use diskplugin.csi.alibabacloud.com as the provisioner for Alibaba Cloud disks. provisioner: diskplugin.csi.alibabacloud.com parameters: # Disk category fallback order: ESSD → standard SSD → ultra disk. # The system tries each value in sequence and stops when a disk is created. type: cloud_essd,cloud_ssd,cloud_efficiency # Optional. Set to "true" to encrypt the disk at rest. encrypted: "false" # Retain: keeps the PV and disk when the PVC is deleted (manual cleanup required). # Delete: removes the PV and disk automatically when the PVC is deleted. reclaimPolicy: Retain # Allows online disk expansion without downtime. allowVolumeExpansion: true # Immediate: provisions the disk before scheduling the pod. volumeBindingMode: Immediate -
Aplique a StorageClass:
kubectl apply -f storage-class-csi.yaml Verifique no ACK console: faça logon, clique em Clusters, clique no nome do cluster e escolha Volumes > StorageClasses.
Etapa 2: Criar uma PVC
-
Crie um arquivo chamado
pvc-ssd.yaml:Parâmetro
Obrigatório
Descrição
nameSim
Nome da PVC.
accessModesSim
Modo de acesso ao PV.
volumeModeNão
Formato de montagem do disco.
Filesystemé suportado.storageClassNameSim
StorageClass para provisionamento.
storageSim
Capacidade de armazenamento a ser solicitada. Mínimo: 20 GiB.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 25Gi storageClassName: alicloud-disk-ssd-b -
Crie a PVC:
kubectl create -f pvc-ssd.yaml Verifique no ACK console: escolha Volumes > Persistent Volume Claims.
Etapa 3: Implantar uma aplicação
-
Crie um arquivo chamado
pvc-dynamic.yaml:Parâmetro
Descrição
mountPathCaminho do contêiner para a montagem do disco.
claimNameNome da PVC. Deve corresponder à PVC da Etapa 2.
apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: pvc-disk mountPath: /data # Path inside the container where the disk is mounted. volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvc # Must match the PVC name created in Step 2. -
Implante a aplicação:
kubectl create -f pvc-dynamic.yaml Verifique no ACK console: escolha Workloads > StatefulSets.
Próximas etapas
Solucione erros com as Perguntas frequentes sobre volumes de disco.
Expanda volumes de disco com pouca capacidade.
Monitore o uso do disco com o monitoramento de armazenamento de contêiner.