Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Étendre à chaud les disques FlexVolume dans ACK

Dernière mise à jour :Sep 16, 2026

Lorsque la charge de travail augmente, l'espace des volumes de disque montés sur les pods peut venir à manquer. Container Service for Kubernetes (ACK) prend en charge l'extension en ligne des volumes de disque via FlexVolume pour Kubernetes 1.16 et versions ultérieures ; dans la plupart des cas, aucun redémarrage du pod n'est nécessaire. Cette rubrique présente deux scénarios d'extension : l'extension tandis que le pod reste en état Running, et l'extension après redémarrage du pod.

Prérequis

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

  • Un fichier kubeconfig pour votre cluster et kubectl configuré pour s'y connecter. Consultez Se connecter à un cluster ACK à l'aide de kubectl.

  • Un volume persistant (PV) provisionné dynamiquement, monté via une revendication de volume persistant (PVC) qui inclut le paramètre storageClassName.

  • Le plug-in FlexVolume en version v1.14.8.109-5f88ade-aliyun ou ultérieure. Vérifiez la page des composants du cluster dans la console ACK pour mettre à niveau.

Limitations

Avant d'étendre un volume de disque, examinez les contraintes suivantes :

Contrainte Détails
PV provisionnés dynamiquement uniquement Seuls les PV provisionnés dynamiquement avec une StorageClass peuvent être étendus en ligne. Les volumes inline et les volumes adossés à des disques basiques ne peuvent pas être étendus sans interruption de service.
Taille maximale du disque Les disques de 2 000 GiB ou moins peuvent être étendus sans interruption de service.
Le pod doit être en état Running Le pod doit rester en état Running pendant l'extension. S'il n'est pas en état Running, utilisez la méthode basée sur le redémarrage à la place.

Exigence relative à la StorageClass

La StorageClass doit avoir allowVolumeExpansion: true. Les StorageClasses créées par ACK définissent cette option automatiquement. Pour les StorageClasses créées manuellement, définissez-la explicitement :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-available
provisioner: alicloud/disk
allowVolumeExpansion: true

Sauvegarder vos données

Avant l'extension, créez un snapshot de disque pour vous protéger contre toute perte de données due à des erreurs lors du processus d'extension.

Accorder l'autorisation ResizeDisk au rôle RAM

Avant d'étendre un volume de disque, accordez l'autorisation ResizeDisk au rôle RAM Master du cluster. Sans cette autorisation, la demande d'extension renvoie une erreur d'autorisation.

  1. Connectez-vous à la console ACK.

  2. Dans le volet de navigation de gauche, cliquez sur Clusters.

  3. Recherchez le cluster et cliquez sur Details dans la colonne Actions.

  4. Dans le volet de navigation de gauche, cliquez sur Cluster Information.

  5. Cliquez sur l'onglet Cluster Resources, puis cliquez sur le lien hypertexte situé à côté de Master RAM Role.

  6. Dans la console RAM, accordez l'autorisation ResizeDisk au rôle. Pour plus de détails, consultez Modifier le document et la description d'une stratégie personnalisée.

    resizedisk

Pour les clusters ACK dédiés utilisant FlexVolume ou les clusters ACK gérés, suivez les étapes 1 à 4 ci-dessus et cliquez sur le lien hypertexte situé à côté de Master RAM Role .

Étendre un volume de disque sans redémarrer le pod

Utilisez cette méthode lorsque le pod est en état Running. Le disque est redimensionné en ligne sans interruption de service.

Vérifier l'état actuel

  1. Vérifiez que le pod est en état Running :

    kubectl get pod

    Sortie attendue :

    web-0   1/1   Running   0   42s
  2. Vérifiez l'utilisation actuelle du disque à l'intérieur du pod :

    kubectl exec web-0 -- df /data

    Sortie attendue :

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      20511312   45080   20449848    1%  /data

    Notez la taille actuelle : 20 GiB.

  3. Confirmez que le PVC est lié (Bound) et vérifiez sa capacité actuelle :

    kubectl get pvc

    Sortie attendue :

    NAME             STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
    disk-ssd-web-0   Bound    d-wz9hpoifm43yn9zie6gl   20Gi       RWO            alicloud-disk-available   57s

Étendre le volume

  1. Appliquez un patch au PVC pour demander la nouvelle taille de stockage :

    kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

    Attendez environ une minute pour que l'extension se termine.

Vérifier l'extension

  1. Confirmez que le PV est mis à jour à 30 GiB :

    kubectl get pv d-wz9hpoifm43yn9zie6gl

    Sortie attendue :

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS              REASON   AGE
    d-wz9hpoifm43yn9zie6gl   30Gi       RWO            Delete           Bound    default/disk-ssd-web-0   alicloud-disk-available            5m23s
  2. Confirmez que le PVC reflète la nouvelle capacité :

    kubectl get pvc

    Sortie attendue :

    NAME             STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
    disk-ssd-web-0   Bound    d-wz9hpoifm43yn9zie6gl   30Gi       RWO            alicloud-disk-available   5m10s
  3. Vérifiez que la nouvelle taille du disque est visible à l'intérieur du pod :

    kubectl exec web-0 -- df /data

    Sortie attendue :

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      30832548   45036   30771128    1%  /data

    Le volume de disque a été étendu de 20 GiB à 30 GiB sans temps d'arrêt.

Redémarrer le pod pour étendre le volume de disque

Utilisez cette méthode lorsque le système de fichiers ne reflète pas la nouvelle taille tant que le pod n'a pas été redémarré, ou lorsque le pod n'est pas en état Running.

Vérifier l'état actuel

  1. Vérifiez l'état du pod et notez la taille actuelle du disque :

    kubectl get pod

    Sortie attendue :

    web-0   1/1   Running   0   42s
  2. Vérifiez l'utilisation actuelle du disque à l'intérieur du pod :

    kubectl exec web-0 -- df /data

    Sortie attendue :

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      20511312   45080   20449848    1%  /data
  3. Confirmez que le PVC et le PV sont liés :

    kubectl get pvc
    kubectl get pv

Empêcher la replanification du pod

  1. Recherchez le libellé de zone du PV :

    kubectl get pv d-wz9g2j5qbo37r2lamkg4 -oyaml | grep failure-domain.beta.kubernetes.io/zone

    Sortie attendue :

    failure-domain.beta.kubernetes.io/zone: cn-shenzhen-e
  2. Modifiez le libellé de zone avec une valeur invalide afin que le pod ne puisse pas être planifié :

    kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e-nozone --overwrite

    Sortie attendue :

    persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled
  3. Supprimez le pod pour déclencher un redémarrage. Le pod passe à l'état Pending car le libellé de zone ne correspond plus à aucun nœud :

    kubectl delete pod web-0

    Vérifiez que le pod est en état Pending :

    kubectl get pod

    Sortie attendue :

    web-0   0/1   Pending   0   27s

Étendre le volume

  1. Appliquez un patch au PVC pour demander la nouvelle taille de stockage :

    kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

Restaurer le pod

  1. Restaurez le libellé de zone d'origine afin que le pod puisse être à nouveau planifié :

    kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e --overwrite

    Sortie attendue :

    persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled

    Attendez environ une minute pour que le pod redémarre et que l'extension se termine.

Vérifier l'extension

  1. Confirmez que le pod est en état Running :

    kubectl get pod

    Sortie attendue :

    web-0   1/1   Running   0   3m23s
  2. Confirmez que le PVC reflète la nouvelle capacité :

    kubectl get pvc

    Sortie attendue :

    disk-ssd-web-0   Bound   d-wz9g2j5qbo37r2lamkg4   30Gi   RWO   alicloud-disk-available   17m
  3. Confirmez que le PV reflète la nouvelle capacité :

    kubectl get pv d-wz9g2j5qbo37r2lamkg4

    Sortie attendue :

    d-wz9g2j5qbo37r2lamkg4   30Gi   RWO   Delete   Bound   default/disk-ssd-web-0   alicloud-disk-available   17m
  4. Vérifiez que la nouvelle taille du disque est visible à l'intérieur du pod :

    kubectl exec web-0 -- df /data

    Sortie attendue :

    /dev/vdb   30832548   45036   30771128   1%   /data

    Le volume de disque a été étendu de 20 GiB à 30 GiB.

Rubriques connexes