Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Storage basics

Dernière mise à jour :Aug 11, 2026

Découvrez les volumes, les PV, les PVC et les StorageClasses pour configurer le stockage persistant dans ACK.

Volumes

Les systèmes de fichiers des conteneurs sont éphémères : les fichiers sont perdus lors d'un redémarrage. Les volumes définissent un stockage externe dans la spécification du pod ; Kubernetes le monte dans les conteneurs au moment de l'exécution.

ACK prend en charge les types de volumes suivants :

|
**Type**
|
**Description**
| | --- | --- | |
Stockage local
|
Volumes locaux au nœud, tels que `hostPath` et `emptyDir`. Les données sont liées au nœud et sont perdues en cas de panne. Ce type ne convient pas aux charges de travail avec état susceptibles d'être replanifiées.
| |
Stockage réseau
|
Volumes distants tels que Ceph, GlusterFS, NFS et iSCSI. Les données résident sur un service distant, mais le service doit être monté localement.
| |
Secret et ConfigMap
|
Volumes spéciaux qui exposent les données des objets du cluster (identifiants, configuration) aux pods sous forme de fichiers.
| |
PVC
|
Un volume soutenu par une PersistentVolumeClaim qui abstrait le stockage en tant qu'objet indépendant. À utiliser pour un stockage durable et portable.
|

Remarques d'utilisation :

  • Un pod peut monter plusieurs volumes, y compris de types différents.

  • Tous les conteneurs d'un pod partagent ses volumes montés.

  • Un volume partage le cycle de vie du pod. La persistance des données après la suppression du pod dépend du type de volume et de sa configuration.

  • Pour des données durables, utilisez des PVC et des PV.





















PV et PVC

Tous les volumes Kubernetes ne sont pas persistants. Pour un stockage durable, Kubernetes introduit deux objets qui séparent la manière dont le stockage est approvisionné de la manière dont le stockage est consommé :

  • Un PV est une ressource de stockage du cluster, analogue à un nœud : les pods consomment des nœuds, et les PVC consomment des PV. Un PV possède son propre cycle de vie, indépendant de tout pod.

  • Un PVC est une demande de stockage, analogue à un pod : tout comme un pod demande du CPU et de la mémoire à un nœud, un PVC demande de la capacité et des modes d'accès à un PV.

Les développeurs déclarent leurs besoins en stockage (PVC), tandis que les administrateurs gèrent l'approvisionnement (PV).

Exemple de PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-example
spec:
  capacity:
    storage: 20Gi # adjust to match the actual cloud disk size
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  csi:
    driver: diskplugin.csi.alibabacloud.com
    volumeHandle: <disk ID>
  volumeMode: Filesystem

Exemple de PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-example
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  volumeName: pv-example

Règles de liaison

Les PV et les PVC entretiennent une relation un-à-un : exactement un PVC se lie à chaque PV. Avant qu'un PVC puisse être utilisé par un pod, Kubernetes doit trouver un PV qui satisfait les conditions suivantes :

|
**Champ**
|
**Exigence**
| | --- | --- | |
`volumeMode`
|
Doit correspondre au mode de volume du PVC
| |
`accessModes`
|
Doit inclure les modes d'accès demandés par le PVC
| |
`storageClassName`
|
Si spécifié dans le PVC, le PV doit avoir la même StorageClass
| |
Sélecteur d'étiquettes
|
Le PV doit correspondre à tout sélecteur d'étiquettes défini dans le PVC
| |
`storage`
|
La capacité du PV doit être **au moins** égale à la quantité demandée par le PVC
|

Fonctionnement du champ storage :

  • Kubernetes utilise storage pour faire correspondre et lier les PV aux PVC.

  • Dans l'approvisionnement dynamique, la valeur storage du PVC définit la capacité du PV et de la ressource sous-jacente (tel qu'un disque cloud).

  • Pour les types de stockage qui prennent en charge le redimensionnement, la valeur storage du PVC définit la capacité cible après une extension.

  • storage est une déclaration de capacité logique. La capacité réelle accessible en écriture dépend du support de stockage sous-jacent, et non du champ storage.

























Modes d'accès aux volumes

Utilisez le champ accessModes pour définir la manière dont un volume peut être monté :

|
**Mode d'accès**
|
**Abréviation**
|
**Description**
|
**Exemple**
| | --- | --- | --- | --- | |
ReadWriteOnce
|
RWO
|
Lecture-écriture par un seul nœud
|
Disque Alibaba Cloud
| |
ReadOnlyMany
|
ROX
|
Lecture seule par plusieurs nœuds
|
Bucket OSS
| |
ReadWriteMany
|
RWX
|
Lecture-écriture par plusieurs nœuds
|
Système de fichiers NAS
|































Approvisionnement des volumes

ACK prend en charge deux flux de travail d'approvisionnement : statique et dynamique.

Approvisionnement statique

image

Dans l'approvisionnement statique, l'administrateur du cluster crée les PV à l'avance. Les disques cloud, les systèmes de fichiers NAS et les buckets OSS prennent en charge l'approvisionnement statique.

  1. L'administrateur alloue les ressources de stockage (par exemple, des disques cloud ou des systèmes de fichiers NAS) en fonction des exigences des pods.

  2. L'administrateur crée des PV décrivant ces ressources, y compris la capacité et la configuration.

  3. Les développeurs créent des PVC qui déclarent ce dont leurs charges de travail ont besoin.

  4. Lors de la création d'un pod, Kubernetes lie le PVC à un PV correspondant.

Approvisionnement dynamique

image

Dans l'approvisionnement dynamique, un provisionneur CSI crée automatiquement des PV lorsqu'un PVC est créé. Les disques cloud, les systèmes de fichiers NAS et les buckets OSS prennent en charge l'approvisionnement dynamique.

  1. L'administrateur crée une StorageClass qui définit le type de stockage et le provisionneur. Par exemple, diskplugin.csi.alibabacloud.com approvisionne des disques cloud.

  2. Les développeurs créent des PVC faisant référence à une StorageClass. Aucune création manuelle de PV n'est nécessaire.

  3. Lors de la création d'un pod, le provisionneur CSI lit la StorageClass, crée un PV et la ressource de stockage sous-jacente, puis lie le PV au PVC.

L'approvisionnement dynamique offre trois avantages :

  • Gestion automatisée du cycle de vie : le provisionneur gère automatiquement la création et la suppression des PV.

  • Réduction de la charge opérationnelle : les administrateurs gèrent les StorageClasses plutôt que les PV individuels.

  • Cohérence de la capacité : le PV et la ressource sous-jacente correspondent toujours à la capacité demandée par le PVC.

StorageClasses

Une StorageClass définit le type de stockage, le provisionneur et les paramètres utilisés pour l'approvisionnement dynamique. Lorsqu'un PVC fait référence à une StorageClass et qu'aucun PV correspondant n'existe, Kubernetes déclenche le provisionneur pour créer automatiquement un PV et le stockage sous-jacent.

Exemple de StorageClass

La StorageClass suivante approvisionne des disques Alibaba Cloud :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-topology-alltype
provisioner: diskplugin.csi.alibabacloud.com
parameters:
  type: cloud_auto,cloud_essd,cloud_ssd,cloud_efficiency
  fstype: ext4
  diskTags/a: b
  encrypted: "false"
  performanceLevel: PL1
  provisionedIops: "40000"
  burstingEnabled: "false"
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

Paramètres clés

|
**Paramètre**
|
**Description**
| | --- | --- | |
`provisioner`
|
Le pilote CSI pour l'approvisionnement du stockage. Utilisez `diskplugin.csi.alibabacloud.com` pour les disques cloud, `nasplugin.csi.alibabacloud.com` pour le NAS, ou `ossplugin.csi.alibabacloud.com` pour l'OSS.
| |
`parameters`
|
Paramètres spécifiques au pilote, tels que le type de disque, le type de système de fichiers et les paramètres de performance.
| |
`reclaimPolicy`
|
Ce qui arrive au PV et au stockage sous-jacent lorsque le PVC est supprimé. `Delete` (par défaut) supprime à la fois le PV et le disque cloud. `Retain` conserve les deux : vous devez les supprimer manuellement. Définissez sur `Retain` si la sécurité des données est une priorité.
| |
`allowVolumeExpansion`
|
Définissez sur `true` pour activer l'extension de disque en ligne.
| |
`volumeBindingMode`
|
Moment de l'approvisionnement du PV. Voir le tableau ci-dessous.
|

Choix d'un volumeBindingMode :

|
**Mode**
|
**Moment de la création du PV**
|
**Recommandé pour**
| | --- | --- | --- | |
`Immediate` (par défaut)
|
Lors de la création du PVC, avant toute planification de pod
|
Clusters mono-zone
| |
`WaitForFirstConsumer`
|
Après qu'un pod utilisant le PVC a été planifié sur un nœud
|
Clusters multi-zones
|

Utilisez WaitForFirstConsumer dans les clusters multi-zones. Les disques cloud ne peuvent pas être montés entre différentes zones. Si un PV se trouve dans la zone A mais qu'un pod est planifié dans la zone B, le pod ne parvient pas à démarrer. Avec WaitForFirstConsumer, le provisionneur attend la planification du pod, puis crée le disque dans la zone du pod.

Fonctionnement de WaitForFirstConsumer :

Lorsqu'un PVC est créé, le provisionneur attend qu'un pod le consomme. L'ordonnanceur place le pod sur un nœud et écrit le résultat (région et nœud) dans les métadonnées du PVC. Le provisionneur crée ensuite le PV et le disque dans la zone correcte.











































StorageClass par défaut

Une StorageClass par défaut approvisionne automatiquement un PV pour tout PVC qui omet le nom d'une StorageClass.

Important

Les clusters ACK n'incluent pas de StorageClass par défaut. Une StorageClass par défaut s'applique à tous les PVC sans storageClassName. Si votre cluster utilise plusieurs types de stockage, il risque d'approvisionner le mauvais type. Activez-la uniquement si tous les PVC utilisent le même type de stockage.

Définir une StorageClass par défaut :

Marquez alicloud-disk-topology-alltype comme valeur par défaut :

kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class=true

Vérifiez la modification :

kubectl get sc

Sortie attendue :

NAME                                        PROVISIONER                       AGE
alicloud-disk-topology-alltype (default)    diskplugin.csi.alibabacloud.com   96m

Créer un PVC sans spécifier de StorageClass :

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: disk-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

Le cluster crée automatiquement un PV de disque cloud en utilisant alicloud-disk-topology-alltype.

kubectl get pvc

Sortie attendue :

NAME       STATUS   VOLUME                   CAPACITY   ACCESS MODES    STORAGECLASS                      AGE
disk-pvc   Bound    d-bp18pbai447qverm****   20Gi       RWO             alicloud-disk-topology-alltype    49s

Supprimer la StorageClass par défaut :

kubectl annotate storageclass alicloud-disk-topology-alltype storageclass.kubernetes.io/is-default-class-

StorageClasses fournies par ACK

|
**StorageClass**
|
**Type de disque**
|
**Notes**
| | --- | --- | --- | |
`alicloud-disk-efficiency`
|
[Disque ultra](t9556.xdita#294044a857t6y)
|
Disque cloud de génération précédente
| |
`alicloud-disk-ssd`
|
[SSD standard](t9556.xdita#294044a857t6y)
|
Disque cloud de génération précédente
| |
`alicloud-disk-essd`
|
[ESSD](t583241.xdita#concept-727754)
|
SSD Enterprise de niveau de performance 1 (PL1)
| |
`alicloud-disk-topology-alltype`
|
Multi-type
|
Tente d'utiliser d'abord l'ESSD, puis le SSD standard, puis le disque ultra. Recommandé pour les clusters multi-zones.
| |
`alibabacloud-cnfs-nas`
|
NAS géré par CNFS
|
Crée des volumes NAS gérés par [Container Network File System (CNFS)](https://www.alibabacloud.com/help/en/document_detail/2678292.html)
|

La StorageClass alicloud-disk-topology-alltype sélectionne le meilleur type de disque disponible :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-topology-alltype
parameters:
  type: cloud_essd,cloud_ssd,cloud_efficiency
provisioner: diskplugin.csi.alibabacloud.com
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer




































Étapes suivantes

Consultez Stockage pour obtenir tous les types de stockage et guides.

Pour approvisionner des types de stockage spécifiques :