O ACK permite alterar a categoria de um disco em nuvem anexado a um volume sem reconstruir a carga de trabalho. Por exemplo, se as demandas de armazenamento da aplicação aumentarem, atualize um SSD padrão para um Enterprise SSD (ESSD) e obtenha IOPS mais altos.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster com Kubernetes 1.20 ou posterior e o plug-in Container Storage Interface (CSI) instalado. Para atualizar o cluster, consulte Atualizar manualmente um cluster.
A versão 1.26.1-50a1499-aliyun ou posterior do storage-operator instalada. O storage-operator vem instalado por padrão no cluster. Para verificar a versão, acesse a página de detalhes do cluster no console do ACK, escolha Operations > Add-ons no painel de navegação à esquerda e clique em na aba Storage. Para mais informações, consulte Gerenciar o componente storage-operator.
-
(Apenas para clusters dedicados do ACK) Funções do RAM (Resource Access Management) de worker e master com permissão para chamar a operação
ModifyDiskSpec. Isso não é necessário para clusters gerenciados pelo ACK. Consulte Criar uma política personalizada.
Limitações
Não é possível alterar discos básicos e efêmeros para outras categorias.
Discos ESSD AutoPL não admitem conversão para outras categorias.
Somente discos com pagamento conforme o uso podem ser montados como volumes.
A nova categoria de disco deve ser compatível com o tipo de instância ECS do nó que hospeda o pod. Para detalhes de compatibilidade, consulte Visão geral das famílias de instâncias.
Se a alteração de categoria envolver um ESSD regional, as configurações de afinidade do volume permanecem inalteradas. Pods que utilizam esse disco não podem ser reagendados para outras zonas.
Para obter a lista completa de limites, consulte Limites.
Conversões de categoria de disco suportadas
A tabela a seguir resume as atualizações e reduções suportadas.
|
Categoria de disco de origem |
Categorias de disco de destino |
|
Ultra disk |
Standard SSD, ESSD Entry, PL0/PL1/PL2/PL3 ESSD, disco ESSD AutoPL |
|
Standard SSD |
PL1/PL2/PL3 ESSD, disco ESSD AutoPL |
|
PL0 ESSD |
PL1/PL2/PL3 ESSD, disco ESSD AutoPL |
|
PL1/PL2/PL3 ESSD (pagamento conforme o uso) |
Alteração entre PL1, PL2 e PL3; ou para disco ESSD AutoPL |
|
PL1/PL2/PL3 ESSD (assinatura) |
Apenas atualização (de menor para maior): PL1→PL2, PL1→PL3, PL2→PL3; PL1→disco ESSD AutoPL |
Observações de uso:
Apenas discos ESSD Entry podem ser anexados a instâncias das famílias de instâncias universais e da família de instâncias econômicas e.
O nível de desempenho disponível para atualização de um ESSD depende da capacidade do disco. Caso um nível superior não esteja disponível, expanda o disco antes de atualizar o nível de desempenho.
Após alterar um disco para PL3 ESSD, anexe-o a uma instância ou reinicie a instância para ativar o desempenho ideal. A confiabilidade dos dados não é afetada durante esse período.
Após a mudança de categoria, o faturamento segue as regras da nova categoria de disco.
Ao mudar para ou de um disco ESSD AutoPL, é possível ativar ou desativar o provisionamento de desempenho após a alteração (custos extras se aplicam quando ativado — consulte Modificar o desempenho provisionado de um disco ESSD AutoPL). O burst de desempenho não pode ser configurado durante a mudança, mas pode ser ativado ou desativado após a conclusão — consulte Ativar ou desativar burst de desempenho para um disco ESSD AutoPL.
Referência do parâmetro desiredDiskType
Use os valores abaixo para o parâmetro desiredDiskType ao criar o recurso personalizado na etapa 2.
|
Valor |
Categoria de disco |
|
|
Standard SSD |
|
|
PL0 ESSD |
|
|
PL1 ESSD |
|
|
PL2 ESSD |
|
|
PL3 ESSD |
|
|
Disco ESSD AutoPL |
Etapa 1: Habilitar alterações de categoria de disco no storage-operator
Execute o comando a seguir para atualizar o ConfigMap do storage-operator e habilitar o recurso de alteração de categoria de disco. O plug-in storage-controller implementa esse recurso.
kubectl patch configmap/storage-operator \
-n kube-system \
--type merge \
-p '{"data":{"storage-controller":"{\"imageRep\":\"acs/storage-controller\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-controller/install.yaml\",\"type\":\"deployment\"}"}}'
Etapa 2: Alterar a categoria do disco
Para minimizar o impacto nas cargas de trabalho, altere a categoria do disco fora dos horários de pico.
1. Criar um StatefulSet
Ignore esta etapa se já existir um StatefulSet com um disco em nuvem montado no cluster.
Crie um arquivo chamado StatefulSet.yaml com o modelo a seguir. Isso cria um StatefulSet com um pod que tem um PL1 ESSD de 40 GiB montado.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-diskspec
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
ports:
- containerPort: 80
volumeMounts:
- name: pvc-disk
mountPath: /data
volumes:
- name: pvc-disk
persistentVolumeClaim:
claimName: disk-pvc
volumeClaimTemplates:
- metadata:
name: pvc-disk
labels:
app: nginx
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "alicloud-disk-essd"
resources:
requests:
storage: 40Gi
Aplique o manifesto e verifique se o pod está em execução:
kubectl create -f StatefulSet.yaml
kubectl get pod -l app=nginx
Saída esperada:
NAME READY STATUS RESTARTS AGE
nginx-diskspec-0 1/1 Running 0 4m4s
2. Identificar o PersistentVolume (PV) a ser alterado
Obtenha o PersistentVolumeClaim (PVC) usado pelo StatefulSet e anote o nome do PV vinculado na coluna VOLUME.
kubectl get pvc pvc-disk-nginx-diskspec-0
Saída esperada:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
pvc-disk-nginx-diskspec-0 Bound d-uf6ijdcp3aeoi82w**** 40Gi RWO alicloud-disk-essd <unset> 5m6s
Verifique a categoria atual do disco do PV:
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'
Saída esperada — cloud_essd.PL1 confirma que o PV utiliza um PL1 ESSD:
{"csi.alibabacloud.com/disktype":"cloud_essd.PL1"}
3. Criar um recurso personalizado para acionar a alteração de categoria
Crie um arquivo chamado cr.yaml. Substitua pvNames pelo nome do PV obtido na etapa anterior e defina desiredDiskType como a categoria de disco de destino (consulte a referência do parâmetro desiredDiskType acima).
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerStorageOperator
metadata:
name: default
spec:
operationType: DISKUPGRADE
operationParams:
pvNames: "d-uf6ijdcp3aeoi82w****"
desiredDiskType: "cloud_auto"
|
Parâmetro |
Descrição |
|
|
Defina como |
|
|
O PV a ser alterado. Separe vários PVs com vírgulas, por exemplo: "disk-1,disk-2,disk-3***". |
|
|
A categoria de disco de destino. Veja a referência do parâmetro |
Aplique o recurso personalizado:
kubectl create -f cr.yaml
4. Verificar a alteração da categoria do disco
Consulte o status do recurso personalizado para verificar se a alteração da categoria do disco foi concluída:
kubectl get ContainerStorageOperator default -o yaml
Saída esperada quando a alteração estiver concluída:
status:
message: []
process: 100%
status: SUCCESS
Confirme se o rótulo do PV reflete a nova categoria de disco:
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'
Saída esperada:
{"csi.alibabacloud.com/disktype":"cloud_auto"}