您可以使用 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. 使用以下命令查找要调整大小的持久卷声明。

    请注意,在此示例中,该卷使用的存储大小为 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
  2. 修补 PVC 以增加其大小。例如,将大小增加到 2 Gi。
    此操作触发与该 PVC 关联的卷中的扩展。
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
  3. 验证 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
  4. 使用 vSphere Client 验证新的持久卷大小。

    请参见监控 Tanzu Kubernetes Grid 集群中的卷运行状况

在脱机模式下扩展持久卷

在卷未附加到节点或 Pod 时即被视为脱机。Tanzu Kubernetes Grid 集群支持脱机卷扩展。

  1. 为现有存储类创建持久卷声明 (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 
  2. 修补 PVC 以增加其大小。

    如果 PVC 尚未连接到节点或被 Pod 使用,则使用以下命令修补 PVC。在此示例中,请求的存储增加量为 2 Gi。

    此操作触发与该 PVC 关联的卷中的扩展。
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
  3. 确认卷大小已增加。
    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
  4. 验证 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
  5. 创建 pod 以使用 PVC。

    当 pod 使用 PVC 时,文件系统将得到扩展。

  6. 确认 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 中移除。卷扩展完成。
  7. 使用 vSphere Client 验证新的持久卷大小。

    请参见监控 Tanzu Kubernetes Grid 集群中的卷运行状况