起因
起初是想验证一下 kubevirt 动态扩展磁盘功能,发现在 kubevirt 资源定义上已经配置了 ExpandDisks 功能门,
且 cephfs 的动态存储的 pvc 也已经配置了 allowVolumeExpansion: true,但是在 kubevirt 虚拟机中的 cloud-init 执行 growpart 报错,发现并没有生效。
kubevirt 的版本是 0.56.0
cr 资源定义如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| apiVersion: kubevirt.io/v1 kind: KubeVirt metadata: name: kubevirt namespace: kubevirt spec: ... configuration: developerConfiguration: featureGates: - LiveMigration - DataVolumes - ExpandDisks - GPU imagePullPolicy: IfNotPresent permittedHostDevices: pciHostDevices: - externalResourceProvider: true pciVendorSelector: 10DE:1DB4 resourceName: nvidia.com/GV100GL_TESLA_V100_PCIE_16GB - externalResourceProvider: true pciVendorSelector: 10DE:20F1 resourceName: nvidia.com/GA100_A100_PCIE_40GB - externalResourceProvider: true pciVendorSelector: 10DE:1EB8 resourceName: nvidia.com/TU104GL_TESLA_T4 imagePullPolicy: IfNotPresent ...
|
cephfs 的动态存储的 pvc 的定义如下:
1 2 3 4 5 6 7 8 9 10 11 12
| apiVersion: v1 kind: PersistentVolumeClaim metadata: name: drug namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 120Gi storageClassName: csi-cephfs-sc-delete
|
排查
经过排查,发现kubevirt 虚拟机中的 cloud-init 服务有个日志报错:

于是 google 了一下,在 Red Hat 官网中找到了答案:

链接地址为:https://access.redhat.com/solutions/5775351
也就是说, 当虚拟机中的 /etc/default/locale 中的LANG 不为 en_US, 则 cloud-init 无法修改磁盘分区大小。。。。
发现果然 /etc/default/locale 的 LANG 属性值不是 en_US, 而是:

于是我把 LANG 属性改为 en_US.UTF-8

最后重启虚拟机,看了下 cloud-init 服务,发现已经正常了。 kubevirt 虚拟机磁盘也可以正常扩容了
