您可以使用 Kubernetes 卷扩展功能在创建持久块卷后对其进行扩展。TKG 服务 集群支持脱机和联机卷扩展。
关于持久卷扩展
默认情况下,TKG 环境中显示的存储类将 allowVolumeExpansion
设置为 true
。使用此参数可以修改脱机或联机卷的大小。
在卷未附加到节点或 Pod 时即被视为脱机。联机卷是指在节点或 Pod 上可用的卷。
卷扩展功能的支持级别取决于 vSphere 版本。将 vSphere 环境升级到支持扩展的适当版本时,可以扩展在早期版本的 vSphere 中创建的卷。
注: 只能扩展持久块卷。目前,
vSphere IaaS control plane 不支持对 ReadWriteMany 卷进行卷扩展。
扩展持久块卷时,请注意以下事项:
- 最多可以将卷扩展到存储配额指定的限制。vSphere IaaS control plane 支持持久卷声明对象的连续大小调整请求。
- 所有类型的数据存储(包括 VMFS、vSAN、vSAN Direct、vVols 和 NFS)都支持卷扩展。
- 可以为部署或独立 pod 执行卷扩展。
- 如果 Tanzu Kubernetes Grid 集群中静态置备的卷具有关联的存储类,则可以调整这些卷的大小。
- 无法扩展作为 StatefulSet 的一部分创建的卷。
- 如果支持卷的虚拟磁盘具有快照,则无法调整其大小。
- vSphere IaaS control plane 不支持对树中或迁移的卷执行卷扩展。
在联机模式下扩展持久卷
联机卷是指在节点或 Pod 上可用的卷。作为 DevOps 工程师,您可以扩展联机持久块卷。Tanzu Kubernetes Grid 集群支持联机卷扩展。
- 使用以下命令查找要调整大小的持久卷声明。
请注意,在此示例中,该卷使用的存储大小为 1 Gi。
$ kubectl get pv,pvc,pod NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984 1Gi RWO Delete Bound default/block-pvc block-sc 4m56s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/block-pvc Bound pvc-5cd51b05-245a-4610-8af4-f07e77fdc984 1Gi RWO block-sc 5m3s NAME READY STATUS RESTARTS AGE pod/block-pod 1/1 Running 0 26s
- 修补 PVC 以增加其大小。例如,将大小增加到 2 Gi。
此操作触发与该 PVC 关联的卷中的扩展。
$ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' persistentvolumeclaim/block-pvc edited
- 验证 PVC 和 PV 的大小是否均已增加。
$ kubectl get pvc,pv,pod NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/block-pvc Bound pvc-5cd51b05-245a-4610-8af4-f07e77fdc984 2Gi RWO block-sc 6m18s NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984 2Gi RWO Delete Bound default/block-pvc block-sc 6m11s NAME READY STATUS RESTARTS AGE pod/block-pod 1/1 Running 0 101s
- 使用 vSphere Client 验证新的持久卷大小。
在脱机模式下扩展持久卷
在卷未附加到节点或 Pod 时即被视为脱机。Tanzu Kubernetes Grid 集群支持脱机卷扩展。
- 为现有存储类创建持久卷声明 (PVC)。
在该示例中,所请求存储的大小为 1 Gi。
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-block-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: example-block-sc
kubectl apply -f example-block-pvc.yaml
- 修补 PVC 以增加其大小。
如果 PVC 尚未连接到节点或被 Pod 使用,则使用以下命令修补 PVC。在此示例中,请求的存储增加量为 2 Gi。
此操作触发与该 PVC 关联的卷中的扩展。kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
- 确认卷大小已增加。
kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1 2Gi RWO Delete Bound default/example-block-pvc example-block-sc 6m44s
- 验证 PVC 的大小调整是否处于挂起状态。
注: 在 pod 使用 PVC 之前,PVC 的大小保持不变。以下示例显示 PVC 大小未更改,因为该 PVC 尚未由 Pod 使用。如果运行
kubectl describe pvc
,您会看到对 PVC 应用了FilesystemResizePending
条件。该 PVC 由 Pod 使用后,其大小将更改。kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE example-block-pvc Bound pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1 1Gi RWO example-block-sc 6m57s
- 创建 pod 以使用 PVC。
当 pod 使用 PVC 时,文件系统将得到扩展。
- 确认 PVC 的大小已修改。
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE example-block-pvc Bound pvc-24114458-9753-428e-9c90-9f568cb25788 2Gi RWO example-block-sc 2m12s
FilesystemResizePending
条件已从该 PVC 中移除。卷扩展完成。 - 使用 vSphere Client 验证新的持久卷大小。