Os discos ENS fornecem armazenamento em bloco persistente para cargas de trabalho executadas em nós do Edge Node Service (ENS) em um cluster ACK Edge. Com o plug-in Container Storage Interface (CSI), você pode montar volumes de disco ENS por meio de provisionamento dinâmico (o ENS cria o disco automaticamente) ou provisionamento estático (você fornece um disco existente).
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster ACK Edge. Consulte Criar um cluster ACK Edge
Um nó de borda criado e adicionado ao cluster. Consulte Criar uma instância e Adicionar um nó de borda
Os componentes
csi-ens-pluginecsi-ens-provisionerinstalados. Consulte Gerenciar componentesUm cliente kubectl conectado ao cluster. Consulte Obter o arquivo kubeconfig de um cluster e usar kubectl para conectar-se ao cluster
(Apenas para provisionamento estático) Um disco ENS no modelo pagamento conforme o uso já criado. Anote o ID do disco — por exemplo,
d-wz92s6d95go6ki9x****
Escolher um método de provisionamento
|
Provisionamento dinâmico |
Provisionamento estático |
|
|
Quando usar |
Ao implantar novas aplicações que precisam de armazenamento |
Quando você já adquiriu um disco ENS |
|
Como o disco é criado |
Automaticamente via StorageClass |
Manualmente, antes de criar o PV |
|
Faturamento do disco |
Apenas pagamento conforme o uso |
— |
|
Configuração típica |
StorageClass → PVC → pod |
PV → PVC → pod |
Use o provisionamento dinâmico para novas implantações. Use o provisionamento estático apenas ao reutilizar um disco existente.
Observações de uso
Restrições obrigatórias:
Um disco ENS pode ser montado em apenas um pod por vez. Não há suporte para compartilhamento.
Discos ENS só podem ser montados em nós ENS localizados na mesma região do disco.
O único valor com suporte para
reclaimPolicyéRetain. Excluir uma persistent volume claim (PVC) mantém o persistent volume (PV) e os dados do disco intactos — exclua-os manualmente quando não forem mais necessários.Não há suporte para
allowVolumeExpansion.Para excluir ou recuperar um disco ENS, use o console do Edge Node Service. Você não pode realizar essa operação diretamente no cluster ACK.
Se um pod for recriado e o agendador não conseguir alocá-lo na zona original, ele permanecerá no estado
Pendingaté ser reagendado para uma zona compatível.
Recomendações:
Em novas implantações, use uma StorageClass com provisionamento dinâmico para que o ENS crie e gerencie os discos automaticamente.
Certifique-se de que o tamanho do disco não ultrapasse o limite de capacidade por disco para o tipo escolhido. Consulte Tipos de disco.
Para detalhes sobre faturamento, consulte Faturamento de dispositivos de armazenamento em bloco.
Montar um volume de disco ENS com provisionamento dinâmico
O provisionamento dinâmico permite que o Kubernetes crie e anexe um disco ENS automaticamente sempre que um pod precisar de armazenamento. Existem dois modos de vinculação — escolha aquele que melhor se adapta à topologia de regiões do seu cluster.
Etapa 1: Criar uma StorageClass
Clusters ACK Edge podem abranger várias regiões. Selecione o modo de vinculação adequado à sua implantação:
|
Modo de vinculação |
Funcionamento |
Cenário recomendado |
|
|
Cria o disco na zona onde o pod agendado será executado |
Clusters multirregião (recomendado) |
|
|
Cria o disco no momento da criação da PVC, antes de qualquer agendamento de pod |
Clusters de região única ou quando a região é conhecida antecipadamente |
Em clusters ACK Edge multirregião, use WaitForFirstConsumer para garantir que o disco seja criado na mesma zona onde o pod foi agendado.
Opção A: WaitForFirstConsumer (recomendado para clusters multirregião)
Crie o arquivo storage-class-topology.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-ens-disk-available
provisioner: ensplugin.csi.alibabacloud.com
parameters:
type: available
fsType: ext4
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Retain
allowVolumeExpansion: false
Parâmetros principais:
provisioner: ensplugin.csi.alibabacloud.com— provisionador CSI do ENS responsável pelo ciclo de vida do disco.type: available— define o tipo do disco.volumeBindingMode: WaitForFirstConsumer— adia a criação do disco até que um pod seja agendado, assegurando que o disco seja criado na zona correta.reclaimPolicy: Retain— único valor com suporte. O disco e seus dados permanecem após a exclusão da PVC.
Aplique a StorageClass:
kubectl apply -f storage-class-topology.yaml
Opção B: Immediate (para clusters de região única)
Crie o arquivo storage-class-csi.yaml:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-ens-disk-available
provisioner: ensplugin.csi.alibabacloud.com
parameters:
type: available
regionId: <your-region-id>
reclaimPolicy: Retain
allowVolumeExpansion: false
volumeBindingMode: Immediate
Parâmetros principais:
regionId— opcional. Especifica a região onde o disco será criado automaticamente.volumeBindingMode: Immediate— cria o disco assim que a PVC é criada, antes de qualquer agendamento de pod.
Aplique a StorageClass:
kubectl apply -f storage-class-csi.yaml
Verificar a StorageClass:
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel à esquerda, selecione Volumes > StorageClasses.
A StorageClass recém-criada aparecerá na página StorageClasses.
Etapa 2: Criar uma PVC
Crie o arquivo pvc-ssd.yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: disk-pvc
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 25Gi
storageClassName: alicloud-ens-disk-available
Aplique a PVC:
kubectl create -f pvc-ssd.yaml
Verificar a PVC:
No painel à esquerda da página de detalhes do cluster, selecione Volumes > Persistent Volume Claims. A PVC estará visível na página Persistent Volume Claims.
Etapa 3: Criar uma aplicação
Crie o arquivo pvc-dynamic.yaml para implantar um StatefulSet nginx que monta a PVC:
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
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: disk-pvc
Parâmetros principais:
mountPath: /data— caminho dentro do contêiner onde o disco será montado.claimName: disk-pvc— deve corresponder ao nome da PVC criado na Etapa 2.
Aplique o StatefulSet:
kubectl create -f pvc-dynamic.yaml
Verificar a aplicação:
No painel à esquerda da página de detalhes do cluster, selecione Workloads > StatefulSets. Confirme se o StatefulSet nginx-dynamic está em execução.
Montar um volume de disco ENS com provisionamento estático
O provisionamento estático destina-se a cenários em que você já possui um disco ENS no modelo pagamento conforme o uso. Nesse caso, crie manualmente um PV referenciando o ID do disco e vincule uma PVC a ele.
Etapa 1: Criar um PV
Crie o arquivo pv-static.yaml. Substitua <your-disk-id> pelo ID do seu disco ENS e <your-node-region-id> pelo ID da região do nó ENS de destino:
apiVersion: v1
kind: PersistentVolume
metadata:
name: csi-pv
labels:
alicloud-pvname: static-disk-pv
spec:
capacity:
storage: 25Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
csi:
driver: ensplugin.csi.alibabacloud.com
volumeHandle: "<your-disk-id>"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: topology.ensplugin.csi.alibabacloud.com/region
operator: In
values:
- "<your-node-region-id>"
Parâmetros principais:
volumeHandle: "<your-disk-id>"— ID do disco ENS a ser associado a este PV. Exemplo:d-wz92s6d95go6ki9x****.nodeAffinity— restringe os nós aos quais este PV pode ser vinculado, com base na região. Defina<your-node-region-id>com o valor do rótulotopology.ensplugin.csi.alibabacloud.com/regionpresente no nó ENS de destino.labels: alicloud-pvname: static-disk-pv— utilizado pelo seletor da PVC na Etapa 2 para vincular especificamente a este PV.persistentVolumeReclaimPolicy: Retain— preserva os dados do disco quando a PVC é excluída.
Aplique o PV:
kubectl create -f pv-static.yaml
Verificar o PV:
Faça login no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel à esquerda, selecione Volumes > Persistent Volumes.
O PV recém-criado aparecerá na página Persistent Volumes.
Etapa 2: Criar uma PVC
Crie o arquivo pvc-static.yaml. O seletor matchLabels vincula esta PVC ao PV específico criado na Etapa 1:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: csi-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 25Gi
selector:
matchLabels:
alicloud-pvname: static-disk-pv
Parâmetros principais:
storage: 25Gi— capacidade solicitada. Não deve exceder a capacidade do PV ao qual será vinculada.matchLabels: alicloud-pvname: static-disk-pv— seleciona o PV pelo seu rótulo. Deve corresponder exatamente ao rótulo definido no PV da Etapa 1.
Aplique a PVC:
kubectl create -f pvc-static.yaml
Verificar a PVC:
No painel à esquerda da página de detalhes do cluster, selecione Volumes > Persistent Volume Claims. Confirme se a PVC csi-pvc aparece e está vinculada.
Etapa 3: Criar uma aplicação
Crie o arquivo web.yaml para implantar um StatefulSet nginx utilizando o disco provisionado estaticamente:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
serviceName: "nginx"
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
name: web
volumeMounts:
- name: pvc-disk
mountPath: /data
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: csi-pvc
Parâmetros principais:
mountPath: /data— caminho dentro do contêiner onde o disco será montado.claimName: csi-pvc— deve corresponder ao nome da PVC criado na Etapa 2.
Aplique o StatefulSet:
kubectl apply -f web.yaml
Verificar a aplicação:
No painel à esquerda da página de detalhes do cluster, selecione Workloads > StatefulSets. Confirme se o StatefulSet web está em execução. O status de execução indica que o disco ENS foi montado com sucesso.
Próximos passos
Tipos de disco — compare capacidades e desempenho dos diferentes tipos de disco.
Faturamento de dispositivos de armazenamento em bloco — entenda os preços do modelo pagamento conforme o uso para discos ENS.