Le plug-in Container Storage Interface (CSI) d'ACK vous permet d'étendre un volume de disque cloud en modifiant une revendication de volume persistant (PVC), sans redémarrer ni interrompre vos pods en cours d'exécution. Cette fonctionnalité nécessite Kubernetes 1.16 ou une version ultérieure.
Prérequis
Avant de commencer, assurez-vous que :
La StorageClass liée au PVC possède l'attribut
allowVolumeExpansion: true. Les StorageClasses fournies par ACK ont cet attribut défini par défaut. Pour les StorageClasses personnalisées, vous devez le définir manuellement. Les propriétés d'une StorageClass ne peuvent pas être modifiées après sa création ; créez-en une nouvelle si nécessaire.Le pod utilisant le disque est dans l'état Running.
Le disque n'est pas un disque de base. Les disques de base ne prennent pas en charge l'extension en ligne.
Le cluster exécute Kubernetes 1.16 ou une version ultérieure. Pour effectuer la mise à niveau, consultez la rubrique Mettre à niveau des clusters.
Le disque prend en charge le redimensionnement. Consultez la documentation ResizeDisk pour connaître les types de disques pris en charge.
Créez un snapshot avant le redimensionnement pour sauvegarder vos données. Supprimez le snapshot une fois l'extension terminée afin d'éviter des frais inutiles. Consultez la rubrique Utiliser des snapshots de disque.
Clusters dédiés ACK uniquement : Accordez l'autorisation ResizeDisk au rôle RAM du cluster. Les clusters gérés par ACK disposent déjà de cette autorisation.
Connectez-vous à la console ACK et cliquez sur Clusters.
Cliquez sur le nom du cluster, puis sur Cluster Information dans le volet de gauche.
Dans l'onglet Basic Information , repérez Master RAM Role dans la section Cluster Resources et cliquez sur le lien.
Sur la page Roles de la console RAM, ajoutez l'autorisation
ResizeDisk. Consultez la rubrique Modifier le document et la description d'une politique personnalisée.
Voici un exemple de politique d'autorisation incluant l'action ResizeDisk :
"Action": [
"ecs:AttachDisk",
"ecs:DetachDisk",
"ecs:DescribeDisks",
"ecs:CreateDisk",
"ecs:CreateSnapshot",
"ecs:DeleteDisk",
"ecs:ResizeDisk",
"ecs:CreateNetworkInterface",
"ecs:DescribeNetworkInterfaces",
"ecs:AttachNetworkInterface",
"ecs:DetachNetworkInterface",
"ecs:DeleteNetworkInterface",
"ecs:DescribeInstanceAttribute",
"ecs:AssignPrivateIpAddresses",
"ecs:UnassignPrivateIpAddresses",
"ecs:DescribeInstances"
]
Étendre un volume de disque à l'aide de kubectl
L'exemple suivant utilise un volume de disque créé selon la procédure décrite dans la rubrique Créer un volume de disque approvisionné dynamiquement. La modification du PVC déclenche le plug-in CSI pour redimensionner le disque sous-jacent et étendre le système de fichiers en ligne ; le pod reste opérationnel tout au long de l'opération.
Connectez-vous à votre cluster. Consultez les rubriques Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster ou Utiliser kubectl sur Workbench ou Cloud Shell pour se connecter aux clusters ACK.
-
Vérifiez que le pod est dans l'état Running.
kubectl get pod -l app=nginxRésultat attendu :
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 23h -
Vérifiez l'utilisation actuelle du disque et le PVC.
ImportantPour un volume de disque approvisionné statiquement, assurez-vous que le champ
storageClassNamedu PVC n'est pas vide et qu'une StorageClass portant ce nom existe dans le cluster. Si aucune StorageClass correspondante n'existe, créez-en une avec les attributs du disque existant et définissezallowVolumeExpansion: true.kubectl exec disk-test-0 -- df -h /dataRésultat attendu :
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /datakubectl get pvcRésultat attendu (le PVC
disk-pvcest lié avec une capacité de 20 GiB) :NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 20Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23h -
Confirmez que la StorageClass possède l'attribut
allowVolumeExpansion: true.kubectl get sc alicloud-disk-wait-for-first-consumer -o yamlRésultat attendu :
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: "2025-01-21T08:48:26Z" name: alicloud-disk-wait-for-first-consumer resourceVersion: "59936" uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: cloud_auto,cloud_essd,cloud_ssd provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer -
Appliquez un correctif au PVC pour demander 30 GiB.
kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}' -
Attendez une minute, puis vérifiez la nouvelle capacité.
kubectl get pvcRésultat attendu :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 30Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23hkubectl exec disk-test-0 -- df -h /dataRésultat attendu :
Filesystem Size Used Avail Use% Mounted on /dev/vdb 30G 24K 30G 1% /data
Étendre un volume de disque à l'aide de la console ACK
La console ACK prend en charge uniquement les volumes de disque approvisionnés dynamiquement. Pour les volumes de disque approvisionnés statiquement, utilisez kubectl.
Connectez-vous à la console ACK et cliquez sur Clusters.
Cliquez sur le nom du cluster pour accéder à la page de gestion du cluster.
-
Vérifiez l'état du pod et identifiez le PVC.
Dans le volet de navigation de gauche, choisissez Workloads > StatefulSets.
Cliquez sur le nom de l'application. Dans l'onglet Pods , confirmez que le pod est dans l'état Running.
Cliquez sur le nom du pod. Dans l'onglet Volumes , notez le PVC utilisé par le pod.
-
Confirmez que l'extension est activée pour la StorageClass.
Dans le volet de navigation de gauche, choisissez Volumes > Storage Classes.
Repérez la StorageClass utilisée par le volume de disque et cliquez sur View in YAML.
-
Confirmez la présence de l'attribut
allowVolumeExpansion: true.Exemple de résultat :
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: '2025-01-21T08:48:26Z' managedFields: - apiVersion: storage.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: 'f:allowVolumeExpansion': {} 'f:parameters': .: {} 'f:type': {} 'f:provisioner': {} 'f:reclaimPolicy': {} 'f:volumeBindingMode': {} manager: okhttp operation: Update time: '2025-01-21T08:48:26Z' name: alicloud-disk-wait-for-first-consumer resourceVersion: '59936' uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: 'cloud_auto,cloud_essd,cloud_ssd' provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer
-
Étendez le PVC.
Dans le volet de navigation de gauche, choisissez Volumes > Persistent Volume Claims.
Repérez le PVC et cliquez sur Expand.
-
Saisissez la nouvelle capacité, cochez la case I understand and agree to the preceding operations. , puis cliquez sur OK.
Plage d'extension : minimum 21 GiB, maximum 32 768 GiB. Les nombres décimaux ne sont pas pris en charge.
RemarqueSi le PVC n'est référencé par aucun pod, l'extension du PVC restera dans l'état Expanding.
Attendez la fin de l'extension, puis vérifiez que le PVC affiche la nouvelle capacité.
Étapes suivantes
Pour étendre automatiquement un volume de disque lorsque l'utilisation dépasse un seuil, consultez la rubrique Étendre automatiquement un volume de disque (aperçu public).
Pour résoudre les erreurs liées aux volumes de disque, consultez la rubrique FAQ sur les volumes de disque.