Измененные размеры PV и PVC не применяются к Pod

У меня есть кластер AKS, и я пытаюсь изменить размер используемого PVC. На самом деле PVC имеет емкость 5Gi, и я уже изменил его размер на 25Gi:

> kubectl describe pv

Name:              mypv
Labels:            failure-domain.beta.kubernetes.io/region=northeurope
Annotations:       pv.kubernetes.io/bound-by-controller: yes
                   pv.kubernetes.io/provisioned-by: kubernetes.io/azure-disk
                   volumehelper.VolumeDynamicallyCreatedByKey: azure-disk-dynamic-provisioner
Finalizers:        [kubernetes.io/pv-protection]
StorageClass:      default
Status:            Bound
Claim:             default/test-pvc
Reclaim Policy:    Delete
Access Modes:      RWO
VolumeMode:        Filesystem
Capacity:          25Gi
...

> kubectl describe pvc

Name:          test-pvc
Namespace:     default
StorageClass:  default
Status:        Bound
Volume:        mypv
Labels:        <none>
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/azure-disk
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      25Gi
Access Modes:  RWO
VolumeMode:    Filesystem
Mounted By:    mypod
Events:        <none>

Но когда я вызываю df -h в mypod, он все равно показывает мне 5Gi (см. /dev/sdc):

/ # df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                 123.9G     22.3G    101.6G  18% /
tmpfs                    64.0M         0     64.0M   0% /dev
tmpfs                     1.9G         0      1.9G   0% /sys/fs/cgroup
/dev/sdb1               123.9G     22.3G    101.6G  18% /dev/termination-log
shm                      64.0M         0     64.0M   0% /dev/shm
/dev/sdb1               123.9G     22.3G    101.6G  18% /etc/resolv.conf
/dev/sdb1               123.9G     22.3G    101.6G  18% /etc/hostname
/dev/sdb1               123.9G     22.3G    101.6G  18% /etc/hosts
/dev/sdc                  4.9G      4.4G    448.1M  91% /var/lib/mydb
tmpfs                     1.9G     12.0K      1.9G   0% /run/secrets/kubernetes.io/serviceaccount
tmpfs                     1.9G         0      1.9G   0% /proc/acpi
tmpfs                    64.0M         0     64.0M   0% /proc/kcore
tmpfs                    64.0M         0     64.0M   0% /proc/keys
tmpfs                    64.0M         0     64.0M   0% /proc/timer_list
tmpfs                    64.0M         0     64.0M   0% /proc/sched_debug
tmpfs                     1.9G         0      1.9G   0% /proc/scsi
tmpfs                     1.9G         0      1.9G   0% /sys/firmware

Я уже уничтожил свой модуль и даже свое развертывание, но он все еще показывает 5Gi. Любая идея, как я могу использовать все 25Gi в своей капсуле?

РЕШЕНИЕ

Спасибо Марио за длинный ответ. К сожалению, акс-панель уже показала мне, что на диске 25Гб. Но вызов следующего вернул 5 ГБ:

az disk show --ids /subscriptions/<doesn't matter :-)>/resourceGroups/<doesn't matter :-)>/providers/Microsoft.Compute/disks/kubernetes-dynamic-pvc-27ee71a5-<doesn't matter> --query "diskSizeGb"

Итак, я наконец позвонил az disk update --ids <disk-id> --size-gb 25. Теперь команда выше вернула 25, и я снова запустил свой модуль. Поскольку мой модуль использует Alpine Linux, он не изменяет размер диска автоматически, и мне пришлось делать это вручную:

/ # apk add e2fsprogs-extra
(1/6) Installing libblkid (2.34-r1)
(2/6) Installing libcom_err (1.45.5-r0)
(3/6) Installing e2fsprogs-libs (1.45.5-r0)
(4/6) Installing libuuid (2.34-r1)
(5/6) Installing e2fsprogs (1.45.5-r0)
(6/6) Installing e2fsprogs-extra (1.45.5-r0)
Executing busybox-1.31.1-r9.trigger
OK: 48 MiB in 31 packages
/ # resize2fs /dev/sdc
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/sdc is mounted on /var/lib/<something :-)>; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/sdc is now 6553600 (4k) blocks long.

Примечание. В моем модуле я временно установил для привилегированного режима значение true:

...
spec:
  containers:
  - name: mypod
    image: the-image:version
    securityContext:
      privileged: true
    ports:
    ...

В противном случае resize2fs завершится ошибкой и скажет что-то вроде нет такого устройства или похожего (извините, больше не знаю точного сообщения об ошибке - забыл скопировать).


person Nrgyzer    schedule 13.12.2020    source источник


Ответы (1)


Я думаю, что эта ветка GitHub должна ответить на ваш вопрос.

Как вы можете прочитать там:

... Я попытался изменить размер постоянного тома, добавив allowVolumeExpansion: true для класса хранилища и отредактировав pvc до нужного размера.

Я предполагаю, что вы уже сделали вышеуказанные шаги.

Читая дальше, проблема выглядит точно так же, как ваша:

После перезапуска модуля размер пвх изменился на желаемый размер, т.е. с 2Ti -> 3Ti

kubectl get pvc
mongo-0     Bound     pvc-xxxx   3Ti        RWO            managed-premium   1h

но когда я вхожу в модуль и делаю df -h, размер диска по-прежнему остается равным 2Ti.

kubetl exec -it mongo-0 bash
root@mongo-0:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        2.0T  372M  2.0T   1% /mongodb

Теперь давайте рассмотрим возможное решение:

Я не мог видеть никаких изменений на портале при обновлении pvc. Сначала мне пришлось обновить размер диска на портале - соответствующим образом отредактировать pvc, а затем удалить модуль, чтобы он заработал. Спасибо

Поэтому проверьте размер диска на портале Azure, и если вы увидите, что его размер не изменился, возможно, дело в этом.

В противном случае убедитесь, что вы выполнили шаги, указанные в этом комментарии, однако вы не не получаю сообщения об ошибке при описании вашего PVC как VolumeResizeFailed, поэтому я считаю, что это не ваш случай, и до изменения размера он был правильно detached из узла. Итак, в первую очередь убедитесь, что нет расхождений между размером тома на портале и информацией, которую вы можете увидеть, описав свой PVC.

person mario    schedule 14.12.2020
comment
Большое спасибо, Марио. Наконец, у меня все заработало. Приборная панель aks уже показала мне 25 ГБ, но az disk show вернула только 5 ГБ. Поэтому я использовал обновление диска az, чтобы обновить диск до 25 ГБ. К сожалению, после перезапуска df -h все еще упоминается 5GB. Это потому, что я использую Apline Linux. Итак, я, наконец, использовал resize2fs, и теперь применяются 25 ГБ :-) - person Nrgyzer; 15.12.2020