首页 > 解决方案 > 从 GCP 快照创建的磁盘不会在 kubernetes 中调整大小

问题描述

我已经从快照创建了 GCP 的磁盘,现在我正在尝试使用 kubernetes 中的 PVC 调整它的大小:100GB -> 400GB。我已申请:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: restored-resize
parameters:
  type: pd-standard
provisioner: kubernetes.io/gce-pd
allowVolumeExpansion: true
reclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: restored-graphite
spec:
  storageClassName: restored-resize
  capacity:
    storage: 400G
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: dev-restored-graphite
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: restored-graphite
spec:
  # It's necessary to specify "" as the storageClassName
  # so that the default storage class won't be used, see
  # https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
  storageClassName: restored-resize
  volumeName: restored-graphite
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 400G

PVC 中的状态显示 400G:

(...)
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 400G
  phase: Bound

但是 pod 挂载了以前的磁盘值:

/dev/sdc                 98.4G     72.8G     25.6G  74% /opt/graphite/storage

我究竟做错了什么?

标签: kubernetesgoogle-cloud-platformkubernetes-pvc

解决方案


对我来说,您似乎直接在清单上设置了 400G,但正如手册所说,您应该只编辑

resources:
    requests:
      storage: 400G

https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/

以及那些触发新条件的:FileSystemResizePending

从 Kubernetes v1.11 开始,这些 PVC 将在此状态下一段时间后自动调整大小,因此,您甚至不必重新启动绑定到 pc 的 pod。

但是,再次关于您的问题:我会以这种方式编辑清单:

spec:
  storageClassName: restored-resize
  capacity:
    storage: 100G

为了让系统重新加载旧配置,并注意到情况并不像他想象的那样。或者至少,这就是我会尝试的(在另一个环境中,肯定不是生产。)


推荐阅读