Si votre cluster exécute une version Kubernetes antérieure à la 1,16 ou utilise des disques basiques, vous ne pouvez pas étendre un volume de disque en mettant à jour sa revendication de volume persistant (PVC). Vous devez étendre directement le disque sous-jacent et son système de fichiers.
Périmètre
Cette rubrique explique comment étendre un volume de disque en augmentant manuellement la taille du disque sous-jacent sans modifier la PVC. Cette méthode s'applique si votre cluster exécute une version Kubernetes antérieure à la 1,16 ou ne répond pas aux exigences pour l'extension en ligne d'un volume de disque.
Avec cette méthode, vous effectuez l'extension du disque dans la console ECS. Cela n'affecte pas les ressources au sein du cluster ; par conséquent, la capacité des objets de revendication de volume persistant (PVC) et de volume persistant (PV) reste inchangée. Pour garantir que les capacités PV et PVC affichées dans le cluster correspondent à la capacité réelle, nous vous recommandons d'utiliser l'extension en ligne d'un volume de disque.
Choisissez une méthode adaptée à vos besoins métier.
Extension en ligne : l'application continue de s'exécuter. Toutefois, si le trafic d'E/S est élevé lors de l'extension du système de fichiers, des erreurs d'E/S peuvent survenir.
Extension hors ligne : ce processus interrompt l'application et ses E/S de disque. L'extension du système de fichiers est ainsi plus sûre pour vos données, mais l'application est mise en pause pendant un certain temps.
Les disques basiques ne prennent pas en charge l'extension en ligne. Vous devez utiliser l'extension hors ligne.
Les sections suivantes utilisent une application exemple avec un volume de disque provisionné statiquement pour illustrer la procédure d'extension du volume de disque.
Extension en ligne
Étendez le disque dans la console ECS tandis que l'application reste en cours d'exécution.
Étape 1 : Consulter les informations du disque
Connectez-vous à votre cluster. Pour plus d'informations, consultez Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster ou Utiliser kubectl pour se connecter à un cluster Kubernetes depuis Workbench ou CloudShell.
-
Consultez le pod qui monte le disque et vérifiez qu'il est dans l'état Running.
kubectl get podExemple de sortie :
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s -
Consultez la PVC pour obtenir l'ID du disque.
kubectl get pvcLa sortie suivante indique que le PV lié à la PVC est
d-uf628m33r5rsbi******(l'ID du disque) et que la capacité est de 20 GiB.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s
Étape 2 : Étendre le disque et le système de fichiers
Connectez-vous à la console ECS.
-
Dans le volet de navigation de gauche, choisissez .
Dans le coin supérieur gauche de la page, sélectionnez une région et un groupe de ressources.
-
Recherchez le disque par son ID, sélectionnez-le, puis cliquez sur Scale-out en bas de la page.
Pour plus d'informations sur l'extension d'un disque, consultez Étendre un disque (Linux) .
-
Dans l'assistant qui s'affiche, suivez les instructions à l'écran pour terminer l'extension.
Sur la page Determine Disk and Read Notes, confirmez les informations du disque, lisez les notes, puis cliquez sur I Understand Risks and Have Backed Up Data, Proceed.
-
Sur la page Configure Resizing Method and New Size, définissez les paramètres d'extension et cliquez sur Scale-out.
Parameter
Description
Example
New disk size
Spécifiez la capacité souhaitée pour le disque. La nouvelle capacité ne peut pas être inférieure à la capacité actuelle.
30 GiB
Resizing method
Sélectionnez Online Resizing. La nouvelle capacité prend effet immédiatement sans redémarrage.
Online Resizing
-
Sur la page Confirm Resizing Results, vérifiez que le disque est étendu, puis cliquez sur Next Step: Extend Partitions and File Systems.
RemarqueAprès avoir étendu le disque, vous devez également étendre son système de fichiers. Sinon, l'espace de stockage dans le conteneur conserve sa taille d'origine.
-
Sur la page Extend the partitions and file systems of disks, sélectionnez Use Cloud Assistant, cochez Authorize Cloud Assistant to Perform This Operation, puis cliquez sur Authorization.
Une fois l'opération terminée, vérifiez que le disque et son système de fichiers sont étendus.
Après une extension réussie, la page de vérification du disque affiche une coche verte et le message The disk check is complete. The disk is ready for use. Dans la section Disk information in the operating system, vérifiez que la valeur Disk capacity (OS) correspond à la valeur Capacity. Dans les détails de la partition, assurez-vous que la taille de la partition (par exemple,
/dev/vdb) est égale à la capacité totale du disque. Cela confirme que la partition et le système de fichiers ont été correctement étendus.
Extension hors ligne
Mettez l'application en pause en définissant le nombre de réplicas à 0, étendez le disque, puis redémarrez l'application.
Étape 1 : Consulter les informations du disque et mettre l'application en pause
Connectez-vous à votre cluster. Pour plus d'informations, consultez Obtenir le fichier kubeconfig d'un cluster et utiliser kubectl pour se connecter au cluster ou Utiliser kubectl pour se connecter à un cluster Kubernetes depuis Workbench ou CloudShell.
-
Consultez le pod qui monte le disque et vérifiez qu'il est dans l'état Running.
kubectl get podExemple de sortie :
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s -
Consultez la PVC pour obtenir l'ID du disque.
kubectl get pvcLa sortie suivante indique que le PV lié à la PVC est
d-uf628m33r5rsbi******(l'ID du disque) et que la capacité est de 20 GiB.NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s -
Réduisez l'application à 0 réplica pour la mettre en pause.
kubectl scale sts disk-test --replicas=0Sortie attendue :
statefulset.apps/disk-test scaled
Étape 2 : Étendre le disque
Connectez-vous à la console ECS.
-
Dans le volet de navigation de gauche, choisissez .
Dans le coin supérieur gauche de la page, sélectionnez une région et un groupe de ressources.
Recherchez le disque par son ID, sélectionnez-le, puis cliquez sur Scale-out en bas de la page.
-
Dans l'assistant qui s'affiche, suivez les instructions à l'écran pour terminer l'extension.
Sur la page Determine Disk and Read Notes, confirmez les informations du disque, lisez les notes, puis cliquez sur I Understand Risks and Have Backed Up Data, Proceed.
-
Sur la page Configure Resizing Method and New Size, définissez les paramètres d'extension et cliquez sur Scale-out.
Parameter
Description
Example
New disk size
Spécifiez la capacité souhaitée pour le disque. La nouvelle capacité ne peut pas être inférieure à la capacité actuelle.
30 GiB
Resizing method
Après avoir mis l'application en pause, le disque passe à l'état Unattached. Dans cet état, l'option Offline Resizing est la seule disponible.
Offline Resizing
Sur la page Confirm Resizing Results, vérifiez que le disque est étendu, puis cliquez sur Next Step: Extend Partitions and File Systems.
-
Sur la page Extend the partitions and file systems of disks, sélectionnez Use Documentation et consultez la documentation dans la section Extend the partitions and file systems of disks on a Linux instance.
RemarqueAprès avoir étendu le disque, vous devez également étendre son système de fichiers. Sinon, l'espace de stockage dans le conteneur conserve sa taille d'origine.
Étant donné que le disque est dans l'état Unattached, vous ne pouvez pas utiliser Cloud Assistant. Vous devez étendre manuellement le système de fichiers.
Étape 3 : Étendre le système de fichiers
Les étapes suivantes s'appliquent aux disques non partitionnés.
Nous vous déconseillons d'utiliser des disques partitionnés dans Kubernetes.
Si un PV utilise un disque non partitionné, ne le partitionnez pas manuellement. Vous risqueriez d'endommager le système de fichiers et de perdre des données.
Si un PV utilise un disque partitionné, vous devez étendre le périphérique de partition avant d'étendre le système de fichiers. Pour plus d'informations, consultez Étendre les partitions et les systèmes de fichiers d'un disque sur une instance Linux ou Étendre les partitions et les systèmes de fichiers d'un disque sur une instance Windows.
-
Attachez le disque à une instance ECS.
Sur la page EBS de la console ECS, recherchez le disque cible et cliquez sur Attach dans la colonne Actions.
-
Dans l'assistant Attach to Instance, sélectionnez l'instance ECS cible et cliquez sur Next.
ImportantNe sélectionnez aucune option libérant automatiquement le disque.
Dans l'assistant Partition Disk and Create and Mount File Systems, cliquez sur Configure Later dans la section Initialization Method.
Vérifiez que l'état du disque passe à In Use.
Connectez-vous à l'instance ECS. Pour plus d'informations, consultez Méthodes de connexion.
-
Récupérez le nom du périphérique du disque.
Remplacez
<serial>par le numéro de série de votre disque.Le numéro de série du disque fait partie de l'ID du disque, qui suit le format d-{numéro de série du disque}. Pour plus d'informations, consultez Afficher le numéro de série d'un périphérique de stockage bloc.
ImportantLes disques créés avant le 10 juin 2020 n'ont pas de numéro de série. Pour ces disques, vous ne pouvez pas utiliser la commande realpath pour trouver le nom du périphérique. Exécutez plutôt la commande
ls /dev/vd*avant et après l'attachement du disque, puis comparez les sorties pour identifier le nouveau nom de périphérique.realpath /dev/disk/by-id/virtio-<serial>La sortie d'exemple suivante indique que le nom du périphérique du disque est
/dev/vdb./dev/vdb -
Étendez le système de fichiers.
Remplacez /dev/vdb par le nom réel du périphérique de votre disque.
resize2fs /dev/vdbSi vous voyez l'erreur suivante, exécutez
e2fsck -f /dev/vdbcomme indiqué, puis exécutez à nouveauresize2fs /dev/vdbpour étendre le système de fichiers.resize2fs 1.46.0 (29-Jan-2020) Please run 'e2fsck -f /dev/vdb' first.Une fois le système de fichiers étendu avec succès, la sortie suivante s'affiche :
resize2fs 1.46.0 (29-Jan-2020) Resizing the filesystem on /dev/vdb to 7864320 (4k) blocks. The filesystem on /dev/vdb is now 7864320 (4k) blocks long. -
Vérifiez que le système de fichiers est étendu.
-
Créez un répertoire temporaire
/mnt/disk/et montez-y le disque.mkdir /mnt/disk mount /dev/vdb /mnt/disk/ -
Vérifiez la taille du système de fichiers.
df /mnt/disk/La sortie d'exemple suivante montre que la capacité de
/dev/vdbest étendue à 30 GiB.Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /mnt/disk -
Démontez le disque du répertoire temporaire.
umount /mnt/disk
-
Détachez le disque de données de l'instance ECS. Pour plus d'informations, consultez Détacher un disque de données.
Étape 4 : Redémarrer l'application
-
Augmentez l'application à 1 réplica pour la redémarrer.
kubectl scale sts disk-test --replicas=1Sortie attendue :
statefulset.apps/disk-test scaled -
Vérifiez que le pod est restauré.
kubectl get podSortie attendue :
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 5s -
Vérifiez la taille du système de fichiers.
kubectl exec -it disk-test-0 -- df /dataLa sortie d'exemple suivante montre que le système de fichiers monté a été étendu avec succès.
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /data