Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 11, 2026

Les disques Enterprise SSD (ESSD) régionaux répliquent automatiquement et de manière synchrone les données sur plusieurs zones au sein d'une même région. Vos applications avec état continuent ainsi de fonctionner en cas de panne d'une zone, sans aucune modification du code. Si un nœud ou une zone entière devient indisponible, Kubernetes replanifie les pods concernés vers une autre zone, où ils remontent le même volume et reprennent leur activité immédiatement.

Avant de commencer

Consultez les rubriques suivantes avant de poursuivre :

Quand utiliser des disques ESSD régionaux

Disque standard Disque ESSD régional
Réplication Zone unique Synchrone sur plusieurs zones
Gestion des pannes de zone Le pod est automatiquement replanifié dans une autre zone
Modifications de code requises Aucune
Modèle de facturation Paiement à l'utilisation uniquement (en tant que volume Kubernetes)

Utilisez un disque ESSD régional lorsque votre application avec état doit rester disponible en cas de panne de zone, sans intervention manuelle.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Utiliser des disques ESSD régionaux dans ACK

Étape 1 : Vérifier la prise en charge par les nœuds

Listez tous les nœuds prenant en charge les disques ESSD régionaux :

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

Pour vérifier le basculement inter-zones, vous avez besoin d'au moins deux nœuds pris en charge situés dans des zones différentes. Les étapes ci-dessous utilisent cn-beijing-i et cn-beijing-l à titre d'exemple.

Étape 2 : Créer une StorageClass

  1. Créez le fichier 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

    Paramètres clés :

    Paramètre Valeur Objectif
    type cloud_regional_disk_auto Provisionne un disque ESSD régional qui réplique les données de manière synchrone sur plusieurs zones
    volumeBindingMode WaitForFirstConsumer Retarde la création du volume jusqu'à ce qu'un pod soit planifié, afin que le disque soit provisionné dans la bonne zone ; sans cela, le disque peut être verrouillé dans la mauvaise zone et bloquer le basculement inter-zones
    reclaimPolicy Delete Supprime le disque sous-jacent lorsque la Persistent Volume Claim (PVC) est supprimée
    allowVolumeExpansion true Active l'extension de la capacité du disque
  2. Appliquez la StorageClass :

    kubectl apply -f sc-regional.yaml

Étape 3 : Déployer une application avec état

  1. Créez le fichier disk-test.yaml pour définir un StatefulSet utilisant la 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. Déployez l'application :

    kubectl apply -f disk-test.yaml

    Lorsque le pod est planifié, le pilote CSI provisionne un disque ESSD régional de 20 GiB, crée un Persistent Volume (PV) et le monte sur le pod. Le disque commence alors à répliquer les données de manière synchrone sur plusieurs zones.

Étape 4 : Vérifier que l'application est en cours d'exécution

  1. Vérifiez l'état de la PVC et du pod :

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

    Sortie attendue :

    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

    La PVC est liée et le pod est en cours d'exécution, ce qui confirme que le disque ESSD régional a été provisionné et monté avec succès.

  2. Identifiez le nœud et la zone où le pod s'exécute :

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

    Sortie attendue :

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

    Le pod est planifié sur cn-beijing-i.

Étape 5 : Simuler une panne de zone et vérifier le basculement inter-zones

Avertissement

Cette opération affecte tous les pods s'exécutant dans la zone cible. Ne l'effectuez pas dans un environnement de production.

  1. Appliquez un taint à tous les nœuds de la zone actuelle du pod pour simuler une panne de zone :

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

    Le Kubernetes Controller Manager (KCM) détecte le taint, expulse le pod des nœuds concernés et le replanifie sur un nœud situé dans une autre zone.

  2. Vérifiez le nouvel état et l'emplacement du pod :

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

    Sortie attendue :

    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

    Le pod s'exécute désormais dans cn-beijing-l. Le disque ESSD régional est rattaché automatiquement et les données restent intactes, sans synchronisation manuelle requise.

Étape 6 : Nettoyer les ressources

  1. Supprimez le taint pour restaurer la planification normale dans cn-beijing-i :

    kubectl taint node -ltopology.kubernetes.io/zone=cn-beijing-i testing-
  2. Supprimez les ressources de test :

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