作为 DevOps 工程师,您可以在创建持久块卷后扩展该卷。在 vSphere IaaS control plane 中,主管Tanzu Kubernetes Grid 这两种类型的集群都支持脱机和联机卷扩展。

注: 只能扩展持久块卷。目前, vSphere IaaS control plane 不支持对 ReadWriteMany 卷进行卷扩展。

默认情况下,vSphere IaaS control plane 环境中显示的存储类将 allowVolumeExpansion 设置为 true。使用此参数可以修改脱机或联机卷的大小。

在卷未附加到节点或 Pod 时即被视为脱机。联机卷是指在节点或 Pod 上可用的卷。

卷扩展功能的支持级别取决于 vSphere 版本。将 vSphere 环境升级到支持扩展的适当版本时,可以扩展在早期版本的 vSphere 中创建的卷。

扩展卷时,请注意以下事项:
  • 最多可以将卷扩展到存储配额指定的限制。vSphere IaaS control plane 支持持久卷声明对象的连续大小调整请求。
  • 所有类型的数据存储(包括 VMFS、vSAN、vSAN Direct、vVols 和 NFS)都支持卷扩展。
  • 可以为部署或独立 pod 执行卷扩展。
  • 如果静态置备的卷具有关联的存储类,则可以在 主管Tanzu Kubernetes Grid 集群中调整这些卷的大小。
  • 使用 StatefulSet 定义时,无法扩展作为 StatefulSet 的一部分创建的卷。目前 Kubernetes 不支持此功能。因此,通过增加 StatefulSet 定义中的存储大小来扩展卷的尝试会失败。
  • 如果支持卷的虚拟磁盘具有快照,则无法调整其大小。
  • vSphere IaaS control plane 不支持对树中或迁移的卷执行卷扩展。

在脱机模式下扩展持久卷

在卷未附加到节点或 Pod 时即被视为脱机。两种类型的集群(主管Tanzu Kubernetes Grid 集群)支持脱机卷扩展。

前提条件

确保将 vSphere 环境升级到支持脱机卷扩展的适当版本。

过程

  1. 使用存储类创建持久卷声明 (PVC)。
    1. 使用以下 YAML 清单作为示例来定义 PVC。
      在该示例中,所请求存储的大小为 1 Gi。
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: example-block-pvc
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: example-block-sc
    2. 将该 PVC 应用到 Kubernetes 集群。
      kubectl apply -f example-block-pvc.yaml 
  2. 修补 PVC 以增加其大小。
    如果 PVC 尚未连接到节点或被 Pod 使用,则使用以下命令修补 PVC。在此示例中,请求的存储增加量为 2 Gi。
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    此操作触发与该 PVC 关联的卷中的扩展。
  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
    注: 在 pod 使用 PVC 之前,PVC 的大小保持不变。
    以下示例显示 PVC 大小未更改。如果您描述该 PVC,可以在该 PVC 上看到应用了 FilesystemResizePending 条件。
    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
  4. 创建 pod 以使用 PVC。
    当 pod 使用 PVC 时,文件系统将得到扩展。
  5. 确认 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 管理员能够在 vSphere Client 中看到新的卷大小。请参见 在 vSphere Client 中监控持久卷

在联机模式下扩展持久卷

联机卷是指在节点或 Pod 上可用的卷。作为 DevOps 工程师,您可以扩展联机持久块卷。两种类型的集群(主管Tanzu Kubernetes Grid 集群)支持联机卷扩展。

前提条件

确保将 vSphere 环境升级到支持联机卷扩展的适当版本。

过程

  1. 找到要调整大小的持久卷声明。
    $ 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

    请注意,该卷使用的存储大小为 1 Gi。

  2. 修补 PVC 以增加其大小。
    例如,将大小增加到 2 Gi。
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
    此操作触发与该 PVC 关联的卷中的扩展。
  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

下一步做什么

vSphere 管理员能够在 vSphere Client 中看到新的卷大小。请参见 在 vSphere Client 中监控持久卷