Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Use regional ESSDs for cross-zone disaster recovery

Última atualização: Jun 27, 2026

Os discos Enterprise SSD (ESSD) regionais replicam dados automática e sincronizadamente entre várias zonas na mesma região. Assim, suas aplicações com estado continuam em execução mesmo durante falhas de zona, sem necessidade de alterações no código. Se um nó ou uma zona inteira ficar indisponível, o Kubernetes reagenda os pods afetados para outra zona, onde remontam o mesmo volume e retomam as operações imediatamente.

Antes de começar

Leia os tópicos a seguir antes de prosseguir:

Quando usar ESSDs regionais

Disco padrão

ESSD regional

Replicação

Zona única

Síncrona entre várias zonas

Tratamento de falha de zona

—

Reagendamento automático do pod para outra zona

Alterações de código necessárias

—

Nenhuma

Modelo de faturamento

—

Apenas pagamento conforme o uso (como volume do Kubernetes)

Utilize um ESSD regional quando sua aplicação com estado precisar manter a disponibilidade durante falhas de zona, sem intervenção manual.

Pré-requisitos

Antes de iniciar, verifique se você possui:

Uso de ESSDs regionais no ACK

Etapa 1: Confirme o suporte dos nós

Liste todos os nós compatíveis com ESSDs regionais:

kubectl get node -lnode.csi.alibabacloud.com/disktype.cloud_regional_disk_auto=available

Para verificar o failover entre zonas, são necessários pelo menos dois nós compatíveis em zonas diferentes. Os exemplos abaixo utilizam cn-beijing-i e cn-beijing-l.

Etapa 2: Crie uma StorageClass

  1. Crie o arquivo sc-regional.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-disk-regional
    parameters:
      type: cloud_regional_disk_auto
    provisioner: diskplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true

    Parâmetros principais:

    Parâmetro

    Valor

    Finalidade

    type

    cloud_regional_disk_auto

    Provisiona um ESSD regional que replica dados sincronizadamente entre várias zonas

    volumeBindingMode

    WaitForFirstConsumer

    Adia a criação do volume até o agendamento do pod, garantindo o provisionamento do disco na zona correta; sem isso, o disco pode ficar bloqueado na zona errada e impedir o failover entre zonas

    reclaimPolicy

    Delete

    Exclui o disco subjacente ao excluir a Persistent Volume Claim (PVC)

    allowVolumeExpansion

    true

    Permite expandir a capacidade do disco

  2. Aplique a StorageClass:

    kubectl apply -f sc-regional.yaml

Etapa 3: Implantar uma aplicação com estado

  1. Crie o arquivo disk-test.yaml para definir um StatefulSet que utiliza a StorageClass:

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: disk-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      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
      volumeClaimTemplates:
      - metadata:
          name: pvc-disk
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: alibabacloud-disk-regional
          resources:
            requests:
              storage: 20Gi
  2. Implante a aplicação:

    kubectl apply -f disk-test.yaml

    Após o agendamento do pod, o driver CSI provisiona um ESSD regional de 20 GiB, cria um Persistent Volume (PV) e o monta no pod. Em seguida, o disco inicia a replicação síncrona de dados entre várias zonas.

Etapa 4: Verifique se a aplicação está em execução

  1. Verifique o status da PVC e do pod:

    kubectl get pvc pvc-disk-disk-test-0
    kubectl get pod disk-test-0

    Saída esperada:

    NAME                   STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                 VOLUMEATTRIBUTESCLASS   AGE
    pvc-disk-disk-test-0   Bound    d-2ze5xxxxxxxxxxxxxxxx   20Gi       RWO            alibabacloud-disk-regional   <unset>                 14m
    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          14m

    A PVC está vinculada e o pod está em execução, confirmando o provisionamento e a montagem bem-sucedidos do ESSD regional.

  2. Identifique o nó e a zona onde o pod está em execução:

    kubectl get node $(kubectl get pod disk-test-0 -ojsonpath='{.spec.nodeName}') -Ltopology.kubernetes.io/zone

    Saída esperada:

    NAME                       STATUS   ROLES    AGE     VERSION            ZONE
    cn-beijing.172.25.xxx.xx   Ready    <none>   6m32s   v1.32.1-aliyun.1   cn-beijing-i

    O pod foi agendado em cn-beijing-i.

Etapa 5: Simular uma falha de zona e verifique o failover entre zonas

Aviso

Esta operação afeta todos os pods em execução na zona de destino. Não execute este procedimento em um ambiente de produção.

  1. Adicione um taint a todos os nós na zona atual do pod para simular uma falha de zona:

    kubectl taint node -ltopology.kubernetes.io/zone=cn-beijing-i testing=regional:NoExecute

    O Kubernetes Controller Manager (KCM) detecta o taint, remove o pod dos nós afetados e o reagenda para um nó em outra zona.

  2. Verifique o novo status e a localização do pod:

    kubectl get pod disk-test-0
    kubectl get node $(kubectl get pod disk-test-0 -ojsonpath='{.spec.nodeName}') -Ltopology.kubernetes.io/zone

    Saída esperada:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          20s
    NAME                       STATUS   ROLES    AGE   VERSION            ZONE
    cn-beijing.172.26.xxx.xx   Ready    <none>   32m   v1.32.1-aliyun.1   cn-beijing-l

    O pod agora está em execução em cn-beijing-l. O ESSD regional é reconectado automaticamente e os dados permanecem intactos, sem necessidade de sincronização manual.

Etapa 6: Limpeza

  1. Remova o taint para restaurar o agendamento normal em cn-beijing-i:

    kubectl taint node -ltopology.kubernetes.io/zone=cn-beijing-i testing-
  2. Exclua os recursos de teste:

    kubectl delete sts disk-test
    kubectl delete pvc pvc-disk-disk-test-0