【问题标题】:Resized PV & PVC are not applicied to Pod调整 PV 和 PVC 大小不适用于 Pod
【发布时间】:2021-03-24 11:22:47
【问题描述】:

我有一个 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>

但是当我在 mypod 中调用“df -h”时,它仍然显示 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

我已经销毁了我的 pod,甚至我的部署,但它仍然显示 5Gi。知道如何在我的 pod 中使用整个 25Gi 吗?

解决方案

感谢 mario 的长时间回复。不幸的是,aks dasboard 已经告诉我磁盘有 25GB。但调用以下返回 5GB:

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

所以我终于打电话给az disk update --ids &lt;disk-id&gt; --size-gb 25。现在,上面的命令返回 25,我再次启动了我的 pod。由于我的 pod 使用 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.

注意:在我的 pod 中,我将特权模式暂时设置为 true:

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

否则 resize2fs 失败并说“没有这样的设备或类似设备”(抱歉,不再知道确切的错误消息 - 忘记复制了)。

【问题讨论】:

    标签: kubernetes containers kubernetes-pvc


    【解决方案1】:

    我认为this GitHub 线程应该回答你的问题。

    如您所见:

    ... 我尝试通过为存储类添加 allowVolumeExpansion: true 并编辑 pvc 来调整持久卷的大小 到所需的大小。

    我假设您也已经完成了上述步骤。

    继续阅读,问题看起来和你的一模一样:

    重新启动 pod 后 pvc 的大小已更改为 所需尺寸,即从 2Ti -> 3Ti

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

    但是当我登录到 pod 并执行 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
    

    现在我们来看看the possible solution

    当我更新 pvc 时,我在门户中看不到任何变化。我有 首先更新门户中的磁盘大小 - 相应地编辑 pvc 并 然后删除 pod 使其工作。谢谢

    所以请在 Azure 门户中检查磁盘的大小,如果您发现它的大小没有变化,则可能是这种情况。

    否则,请确保您遵循此comment 中提到的步骤,但是在描述您的PVC 时不会收到任何错误消息,例如VolumeResizeFailed,所以我相信这不是您的情况,并且在调整大小之前是正确的@ 987654328@ 来自节点。因此,首先要确保门户中的卷大小与通过描述您的PVC 可以看到的信息之间没有差异。

    【讨论】:

    • 非常感谢你,马里奥。最后,我让它工作了。 aks 仪表板已显示 25GB,但“az disk show”仅返回 5GB。所以我使用“az disk update”将磁盘更新到 25GB。不幸的是,重新启动“df -h”后仍然提到 5GB。这是因为我使用的是 Apline Linux。所以我最后使用了“resize2fs”,现在应用了 25GB :-)
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 2020-02-13
    • 2021-11-29
    • 1970-01-01
    • 2013-11-25
    • 2013-08-09
    • 1970-01-01
    • 2012-04-10
    相关资源
    最近更新 更多