Cette rubrique explique comment provisionner et monter dynamiquement des volumes de disque Alibaba Cloud pour les applications avec état dans ACK Serverless, et comment vérifier leurs caractéristiques de persistance.
Cas d'utilisation
Les volumes de disque conviennent aux charges de travail nécessitant un stockage par blocs dédié et haute performance :
Applications avec état exigeant des E/S disque élevées (par exemple, MySQL et Redis) sans partage de données entre pods
Écriture de journaux à haut débit
Persistance des données indépendante du cycle de vie du pod
Fonctionnement du provisionnement dynamique
Lorsqu'une PVC référence une StorageClass, Kubernetes crée et lie automatiquement un volume persistant (PV) adossé à un disque Alibaba Cloud, ce qui supprime la création manuelle du disque.
Les clusters ACK Serverless n'incluent pas de StorageClass par défaut. Créez-en une avant de provisionner le stockage.
Kubernetes prend en charge une StorageClass par défaut . Si une PVC omet la StorageClass, Kubernetes utilise celle par défaut pour provisionner un PV. Consultez la section Notions de base sur le stockage .
Prérequis
Assurez-vous que les conditions suivantes sont remplies :
Un cluster ACK Serverless est créé.
kubectl est connecté au cluster.
Le plug-in CSI est installé.
Provisionner un volume de disque
Suivez ces étapes dans l'ordre :
Créez une StorageClass pour définir le type de disque et le comportement de provisionnement.
Créez une PVC pour demander du stockage auprès de la StorageClass.
Déployez une application et montez la PVC.
Console ACK
Étape 1 : Créer une StorageClass
Connectez-vous à la console ACK et cliquez sur Clusters dans le volet de navigation de gauche.
Sur la page Clusters , cliquez sur le nom du cluster, puis choisissez Volumes > StorageClasses .
Sur la page StorageClasses , cliquez sur Create .
-
Dans la boîte de dialogue Create , spécifiez les paramètres.
Certains types d'instance ECS ne prennent pas en charge les disques ESSD ou les disques éphémères élastiques. Consultez la section FAQ sur Elastic Block Storage .
Paramètre Obligatoire Description Name Oui Nom de la StorageClass. PV Type Oui Sélectionnez Cloud Disk . Parameter Oui Catégorie de disque. Valeur par défaut : cloud_essd. Valeurs valides :cloud_essd(SSD d'entreprise),cloud_regional_disk_auto(ESSD régionaux),elastic_ephemeral_disk_premium(disque éphémère élastique Premium),elastic_ephemeral_disk_standard(disque éphémère élastique Standard),cloud_ssd(SSD standard),cloud_efficiency(disque ultra). Définissez plusieurs valeurs pour le mécanisme de secours, par exempletype: cloud_ssd,cloud_essd. Le système essaie chaque valeur dans l'ordre. AjoutezzoneIdpour cibler des zones spécifiques, par exemplecn-beijing-aoucn-beijing-a, cn-beijing-b.Reclaim Policy Oui Comportement du PV et du disque lors de la suppression de la PVC. Valeur par défaut : Delete (les deux sont supprimés). Définissez sur Retain pour conserver les deux — recommandé lorsque la perte de données aurait un coût élevé. Binding Mode Non Valeur par défaut : Immediate (le disque est créé avant la planification du pod). Cliquez sur Create . La StorageClass apparaît sur la page StorageClasses .
Étape 2 : Créer une PVC
Dans le volet de navigation de gauche, choisissez Volumes > Persistent Volume Claims .
Sur la page Persistent Volume Claims , cliquez sur Create .
-
Dans la boîte de dialogue Create PVC , spécifiez les paramètres.
Paramètre Obligatoire Description PVC Type Oui Sélectionnez Cloud Disk . Name Oui Nom de la PVC. Doit être unique au sein du namespace. Allocation Mode Oui Sélectionnez Use StorageClass . Existing Storage Class Oui Cliquez sur Select , recherchez la StorageClass créée à l'étape 1, puis cliquez sur Select dans la colonne Actions . Capacity Oui Capacité de stockage à réclamer. Minimum : 20 GiB. Access Mode Non Valeur par défaut : ReadWriteOnce (lecture/écriture sur un seul nœud). Cliquez sur Create . La PVC apparaît sur la page Persistent Volume Claims avec un PV lié.
Étape 3 : Déployer une application
Dans le volet de navigation de gauche, choisissez Workloads > StatefulSets .
Sur la page StatefulSets , cliquez sur Create from Image .
Configurez l'application. Sélectionnez Cloud Storage et montez la PVC créée à l'étape 2. Dans cet exemple, le disque est monté sur
/tmp, ce qui permet de persister les données écrites dans/tmp. Consultez la section Utiliser un StatefulSet pour créer une application avec état .Cliquez sur Create . L'application est déployée avec un stockage sur disque persistant.
kubectl
Étape 1 : Créer une StorageClass
Dans les clusters multizones, la StorageClass détermine le type de disque avant la planification du pod.
-
Créez un fichier nommé
storage-class-csi.yaml:Paramètre Obligatoire Description provisionerOui Définissez sur diskplugin.csi.alibabacloud.com.typeOui Catégorie de disque. Valeurs valides : cloud_auto(disque ESSD AutoPL),cloud_essd(ESSD, valeur par défaut),cloud_essd_entry(disque ESSD Entry),cloud_ssd(SSD standard),cloud_efficiency(disque ultra),elastic_ephemeral_disk_standard(disque éphémère élastique Standard),elastic_ephemeral_disk_premium(disque éphémère élastique Premium),cloud_regional_disk_auto(ESSD régionaux). Spécifiez plusieurs valeurs sous forme de liste de secours séparée par des virgules. Consultez les sections Tarification EBS , Performances du stockage par blocs et Présentation des familles d'instances .encryptedNon Indique si le disque doit être chiffré. Valeur par défaut : false.reclaimPolicyOui Comportement du PV et du disque lors de la suppression de la PVC. Delete: les deux sont supprimés.Retain: les deux sont conservés — utilisezRetainlorsque la perte de données aurait un coût élevé. Valeur par défaut :Delete.allowVolumeExpansionNon Définissez sur truepour autoriser l'extension du disque en ligne.volumeBindingModeNon Valeur par défaut : Immediate(le disque est provisionné avant la planification du pod).apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-disk-ssd-b # Use diskplugin.csi.alibabacloud.com as the provisioner for Alibaba Cloud disks. provisioner: diskplugin.csi.alibabacloud.com parameters: # Disk category fallback order: ESSD → standard SSD → ultra disk. # The system tries each value in sequence and stops when a disk is created. type: cloud_essd,cloud_ssd,cloud_efficiency # Optional. Set to "true" to encrypt the disk at rest. encrypted: "false" # Retain: keeps the PV and disk when the PVC is deleted (manual cleanup required). # Delete: removes the PV and disk automatically when the PVC is deleted. reclaimPolicy: Retain # Allows online disk expansion without downtime. allowVolumeExpansion: true # Immediate: provisions the disk before scheduling the pod. volumeBindingMode: Immediate -
Appliquez la StorageClass :
kubectl apply -f storage-class-csi.yaml Vérifiez dans la console ACK : connectez-vous, cliquez sur Clusters , cliquez sur le nom du cluster, puis choisissez Volumes > StorageClasses .
Étape 2 : Créer une PVC
-
Créez un fichier nommé
pvc-ssd.yaml:Paramètre Obligatoire Description nameOui Nom de la PVC. accessModesOui Mode d'accès au PV. volumeModeNon Format de montage du disque. Filesystemest pris en charge.storageClassNameOui StorageClass utilisée pour le provisionnement. storageOui Capacité de stockage à réclamer. Minimum : 20 GiB. apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 25Gi storageClassName: alicloud-disk-ssd-b -
Créez la PVC :
kubectl create -f pvc-ssd.yaml Vérifiez dans la console ACK : choisissez Volumes > Persistent Volume Claims .
Étape 3 : Déployer une application
-
Créez un fichier nommé
pvc-dynamic.yaml:Paramètre Description mountPathChemin du conteneur pour le montage du disque. claimNameNom de la PVC. Doit correspondre à la PVC créée à l'étape 2. apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: pvc-disk mountPath: /data # Path inside the container where the disk is mounted. volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvc # Must match the PVC name created in Step 2. -
Déployez l'application :
kubectl create -f pvc-dynamic.yaml Vérifiez dans la console ACK : choisissez Workloads > StatefulSets .
Étapes suivantes
Résolvez les erreurs à l'aide de la section FAQ sur les volumes de disque .
Étendez les volumes de disque dont la capacité est insuffisante.
Surveillez l'utilisation du disque grâce à la surveillance du stockage des conteneurs .