Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Use dynamically provisioned disks for stateful applications

Dernière mise à jour :Aug 11, 2026

En cas d'échec des conteneurs, les données des applications avec état stockées dans le stockage des conteneurs peuvent être perdues ou devenir peu fiables. Le stockage persistant permet de remédier à ce risque. Cette rubrique explique comment utiliser des disques provisionnés dynamiquement pour mettre en œuvre un stockage persistant.

Fonctionnement

  1. Créez une PVC qui référence un StorageClass.

  2. Déployez votre application avec un volume qui référence la PVC.

  3. Le provisioner crée automatiquement un disque et le lie à la PVC en tant que PV.

Chaque cluster ACK inclut un provisioner par défaut.

Prérequis

StorageClasses par défaut

ACK crée quatre StorageClasses par défaut lors de l'initialisation du cluster. Elles ne fonctionnent que pour les clusters mono-zone. Pour les clusters multi-zones, créez un StorageClass personnalisé.

Nom du StorageClass Type de disque Description
alicloud-disk-common Disque de base Stockage standard de référence
alicloud-disk-efficiency SSD amélioré (ESSD) Équilibre entre performances et coût
alicloud-disk-ssd SSD Stockage haute performance
alicloud-disk-available Haute disponibilité Crée un SSD si disponible ; sinon, utilise un ultra disque.

Création d'un StorageClass personnalisé

Créez un StorageClass personnalisé si les paramètres par défaut ne répondent pas à vos besoins, par exemple dans les clusters multi-zones.

  1. Créez un fichier nommé storageclass.yaml :

        kind: StorageClass
        apiVersion: storage.k8s.io/v1
        metadata:
          name: alicloud-disk-ssd-hangzhou-b
        provisioner: alicloud/disk
        reclaimPolicy: Retain
        parameters:
          type: cloud_ssd
          regionId: cn-hangzhou
          zoneId: cn-hangzhou-b
          fstype: "ext4"
          readonly: "false"
  2. Créez le StorageClass :

        kubectl create -f storageclass.yaml

Paramètres du StorageClass

Paramètre Description
provisioner Plugin du provisioner de disque. Définissez la valeur sur alicloud/disk.
reclaimPolicy Comportement du disque lors de la suppression de la PVC. Valeurs valides : Delete, Retain. Par défaut : Delete.
type Type de disque. Valeurs valides : cloud, cloud_efficiency, cloud_ssd, available.
regionId Région du disque. Doit correspondre à la région du cluster. Facultatif.
zoneId Zone du disque. Facultatif. Cluster mono-zone : ID de la zone. Cluster multi-zones : IDs séparés par des virgules (par exemple, cn-hangzhou-a,cn-hangzhou-b,cn-hangzhou-c).
fstype Type de système de fichiers. Facultatif. Par défaut : ext4.
readonly Indique si le disque est en lecture seule. Facultatif. Valeurs valides : true, false. Par défaut : false.
encrypted Indique si le disque doit être chiffré. Facultatif. Valeurs valides : true, false. Par défaut : false.
Remarque

Si vous définissez

reclaimPolicy

sur

Delete

, le disque est automatiquement supprimé lorsque vous supprimez la PVC. Les données du disque ne peuvent pas être récupérées.

Création d'une PVC

  1. Créez un fichier nommé pvc-ssd.yaml :

        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
          name: disk-ssd
        spec:
          accessModes:
            - ReadWriteOnce
          storageClassName: alicloud-disk-ssd-hangzhou-b
          resources:
            requests:
              storage: 20Gi
  2. Créez la PVC :

        kubectl create -f pvc-ssd.yaml

Création d'un Deployment

  1. Créez un fichier nommé pvc-dynamic.yaml :

        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: nginx-dynamic
          labels:
            app: nginx
        spec:
          selector:
            matchLabels:
              app: nginx
          template:
            metadata:
              labels:
                app: nginx
            spec:
              containers:
              - name: nginx
                image: nginx
                volumeMounts:
                  - name: disk-pvc
                    mountPath: "/data"
              volumes:
                - name: disk-pvc
                  persistentVolumeClaim:
                    claimName: disk-ssd
  2. Créez le Deployment :

        kubectl create -f nginx-dynamic.yaml

Vérification du stockage persistant

Assurez-vous que le disque est monté et que les données persistent après le redémarrage des pods.

Confirmation du montage du disque

  1. Recherchez le nom du pod :

        kubectl get pod | grep dynamic

    Sortie attendue :

        nginx-dynamic-5c74594ccb-zl9pf     2/2     Running     0          3m
  2. Vérifiez que le disque est monté sur /data :

        kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- df | grep data

    Sortie attendue :

        /dev/vdh        20511312    45080  20449848   1% /data
  3. Listez les fichiers dans /data :

        kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- ls /data

    Sortie attendue :

        lost+found

Écriture de données de test et vérification de la persistance

  1. Créez un fichier de test sur le disque :

        kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- touch /data/dynamic
  2. Confirmez l'existence du fichier :

        kubectl exec nginx-dynamic-5c74594ccb-zl9pf -- ls /data

    Sortie attendue :

        dynamic
        lost+found
  3. Supprimez le pod pour déclencher son remplacement :

        kubectl delete pod nginx-dynamic-5c74594ccb-zl9pf

    Sortie attendue :

        pod "nginx-dynamic-5c74594ccb-zl9pf" deleted
  4. Dans un terminal distinct, surveillez le cycle de vie du pod :

        kubectl get pod -w -l app=nginx

    Sortie attendue :

        NAME                               READY   STATUS    RESTARTS   AGE
        nginx-dynamic-5c74594ccb-zl9pf     2/2     Running   0          6m48s
        nginx-dynamic-5c74594ccb-zl9pf   2/2   Terminating   0     7m32s
        nginx-dynamic-5c74594ccb-45sd4   0/2   Pending   0     0s
        nginx-dynamic-5c74594ccb-45sd4   0/2   Pending   0     0s
        nginx-dynamic-5c74594ccb-45sd4   0/2   Init:0/1   0     0s
        nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m32s
        nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m33s
        nginx-dynamic-5c74594ccb-zl9pf   0/2   Terminating   0     7m33s
        nginx-dynamic-5c74594ccb-45sd4   0/2   PodInitializing   0     5s
        nginx-dynamic-5c74594ccb-45sd4   2/2   Running   0     22s
  5. Récupérez le nom du nouveau pod :

        kubectl get pod

    Sortie attendue :

        NAME                               READY   STATUS      RESTARTS   AGE
        nginx-dynamic-5c74594ccb-45sd4     2/2     Running     0          2m
  6. Vérifiez que le fichier de test existe toujours dans le nouveau pod :

        kubectl exec nginx-dynamic-5c74594ccb-45sd4 -- ls /data

    Sortie attendue :

        dynamic
        lost+found

    Le fichier dynamic persiste après la recréation du pod, ce qui confirme que le disque assure un stockage persistant.