简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用 <code>tridentctl</code> 进行升级

提供者

您可以使用 tridentctl 轻松升级现有的 Astra Trident 安装。

升级到最新版本的 Astra Trident 时,请考虑以下事项:

  • 从 Trident 20.01 开始,仅限测试版 "卷快照" 受支持。Kubernetes 管理员应注意安全地备份或将 alpha Snapshot 对象转换为测试版,以保留原有的 alpha Snapshot 。

  • 测试版的卷快照引入了一组经过修改的 CRD 和一个快照控制器,这两个控制器都应在安装 Astra Trident 之前进行设置。

注 "本博客" 讨论将 alpha 卷快照迁移到测试版格式所涉及的步骤。

卸载并重新安装 Astra Trident 可作为升级。卸载 Trident 时,不会删除 Astra Trident 部署所使用的永久性卷声明( PVC )和永久性卷( PV )。在 Astra Trident 脱机期间,已配置的 PV 仍可用,而 Astra Trident 将在恢复联机后为在此期间创建的任何 PVC 配置卷。

重要 升级 Astra Trident 时,请勿中断升级过程。确保安装程序运行完毕。

升级后的后续步骤

要使用新 Trident 版本中提供的丰富功能(例如按需卷快照),您可以使用 tridentctl upgrade 命令升级卷。

如果存在旧卷,则应将其从 NFS/iSCSI 类型升级到 CSI 类型,以便能够使用 Astra Trident 中的一整套新功能。Trident 配置的原有 PV 支持传统功能集。

决定将卷升级到 CSI 类型时,请考虑以下事项:

  • 您可能不需要升级所有卷。以前创建的卷将继续可访问并正常运行。

  • 升级时, PV 可以作为部署 / 状态集的一部分挂载。不需要关闭部署 / 状态集。

  • 升级时,您 * 无法 * 将 PV 连接到独立 POD 。在升级卷之前,您应关闭 POD 。

  • 您只能升级绑定到 PVC 的卷。升级前,应删除和导入未绑定到 PVC 的卷。

卷升级示例

以下示例显示了如何执行卷升级。

  1. 运行 kubectl get pv 以列出 PV 。

    $ kubectl get pv
    NAME                         CAPACITY     ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                  STORAGECLASS    REASON   AGE
    default-pvc-1-a8475          1073741824   RWO            Delete           Bound    default/pvc-1          standard                 19h
    default-pvc-2-a8486          1073741824   RWO            Delete           Bound    default/pvc-2          standard                 19h
    default-pvc-3-a849e          1073741824   RWO            Delete           Bound    default/pvc-3          standard                 19h
    default-pvc-4-a84de          1073741824   RWO            Delete           Bound    default/pvc-4          standard                 19h
    trident                      2Gi          RWO            Retain           Bound    trident/trident                                 19h

    目前, Trident 20.07 使用 netapp.io/trident 配置程序创建了四个 PV 。

  2. 运行 kubectl describe PV 以获取 PV 的详细信息。

    $ kubectl describe pv default-pvc-2-a8486
    
    Name:            default-pvc-2-a8486
    Labels:          <none>
    Annotations:     pv.kubernetes.io/provisioned-by: netapp.io/trident
                     volume.beta.kubernetes.io/storage-class: standard
    Finalizers:      [kubernetes.io/pv-protection]
    StorageClass:    standard
    Status:          Bound
    Claim:           default/pvc-2
    Reclaim Policy:  Delete
    Access Modes:    RWO
    VolumeMode:      Filesystem
    Capacity:        1073741824
    Node Affinity:   <none>
    Message:
    Source:
        Type:      NFS (an NFS mount that lasts the lifetime of a pod)
        Server:    10.xx.xx.xx
        Path:      /trid_1907_alpha_default_pvc_2_a8486
        ReadOnly:  false

    PV 是使用 netapp.io/trident 配置程序创建的,其类型为 NFS 。要支持 Astra Trident 提供的所有新功能,应将此 PV 升级到 CSI 类型。

  3. 运行 tridenctl upgrade volume <name-o-trident -volume> 命令将原有的 Astra Trident 卷升级到 CSI 规范。

    $ ./tridentctl get volumes -n trident
    +---------------------+---------+---------------+----------+--------------------------------------+--------+---------+
    |            NAME     |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
    +---------------------+---------+---------------+----------+--------------------------------------+--------+---------+
    | default-pvc-2-a8486 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
    | default-pvc-3-a849e | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
    | default-pvc-1-a8475 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
    | default-pvc-4-a84de | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
    +---------------------+---------+---------------+----------+--------------------------------------+--------+---------+
    
    $ ./tridentctl upgrade volume default-pvc-2-a8486 -n trident
    +---------------------+---------+---------------+----------+--------------------------------------+--------+---------+
    |            NAME     |  SIZE   | STORAGE CLASS | PROTOCOL |             BACKEND UUID             | STATE  | MANAGED |
    +---------------------+---------+---------------+----------+--------------------------------------+--------+---------+
    | default-pvc-2-a8486 | 1.0 GiB | standard      | file     | c5a6f6a4-b052-423b-80d4-8fb491a14a22 | online | true    |
    +---------------------+---------+---------------+----------+--------------------------------------+--------+---------+
  4. 运行 kubectl describe PV 以验证此卷是否为 CSI 卷。

    $ kubectl describe pv default-pvc-2-a8486
    Name:            default-pvc-2-a8486
    Labels:          <none>
    Annotations:     pv.kubernetes.io/provisioned-by: csi.trident.netapp.io
                     volume.beta.kubernetes.io/storage-class: standard
    Finalizers:      [kubernetes.io/pv-protection]
    StorageClass:    standard
    Status:          Bound
    Claim:           default/pvc-2
    Reclaim Policy:  Delete
    Access Modes:    RWO
    VolumeMode:      Filesystem
    Capacity:        1073741824
    Node Affinity:   <none>
    Message:
    Source:
        Type:              CSI (a Container Storage Interface (CSI) volume source)
        Driver:            csi.trident.netapp.io
        VolumeHandle:      default-pvc-2-a8486
        ReadOnly:          false
        VolumeAttributes:      backendUUID=c5a6f6a4-b052-423b-80d4-8fb491a14a22
                               internalName=trid_1907_alpha_default_pvc_2_a8486
                               name=default-pvc-2-a8486
                               protocol=file
    Events:                <none>

    通过这种方式,您可以将由 Astra Trident 创建的 NFS/iSCSI 类型的卷逐个升级到 CSI 类型。