对于使用旧版 VMware Cloud Director Container Service Extension 创建的集群,需要执行一次性脚本升级,以使集群与要使用的 VMware Cloud Director Container Service Extension 兼容。

默认情况下,在旧版 VMware Cloud Director Container Service Extension 中创建的集群在以下旧版 Kubernetes 组件上运行。必须升级到下述较新的版本。
Kubernetes 组件 现有版本 适用于 4.2 的升级版本 适用于 4.2.1 的升级版本 适用于 4.2.2 的升级版本
Kubernetes Cloud Provider for VMware Cloud Director 1.5.0、1.4.1 或较旧版本 1.5.0 1.6.0 1.6.0
Kubernetes Container Storage Interface driver for VMware Cloud Director 1.5.0、1.4.1 或较旧版本 1.5.0 1.6.0 1.6.0
Kubernetes Cluster API Provider for VMware Cloud Director 1.2.0、1.1.1 或更早版本 1.2.0 1.3.0 1.3.0
RDE-Projector 0.7.0、0.6.1 或较旧版本 0.7.0 0.7.0 0.7.1

前提条件

在执行此任务之前,请确保满足以下必备条件:
  • 计算机必须使用 Ubuntu GNU/Linux 20.04 操作系统。
  • 确保已安装 kubectl。有关详细信息,请参见在 Linux 上安装和设置 kubectl
  • 确保安装和操作 Docker。有关详细信息,请参见安装 Docker Engine
  • 确保集群的 kubeconfig 位于计算机上的可访问路径中。

过程

  1. 使用以下命令设置 $HOME 目录:
    export $HOME=<directory of choice>
    注: 要确认 $HOME 目录设置正确,请使用以下命令输出 $HOME 目录。该目录不应为空。
    echo $HOME
  2. 使用以下命令创建用于挂载和存储集群升级脚本内容的文件夹结构:
    mkdir -p $HOME/cluster-upgrade-script
  3. 导航到创建的文件夹,然后使用以下命令从 http://projects.registry.vmware.com 中提取 cluster-upgrade-script 映像。
    • 对于 4.2:

      cd $HOME/cluster-upgrade-script
      docker pull projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.2
    • 对于 4.2.1:
      cd $HOME/cluster-upgrade-script
      docker pull projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.3
    • 对于 4.2.2:
      cd $HOME/cluster-upgrade-script
      docker pull projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.4
  4. 提取映像后,使用 Docker,通过创建容器并提取,将映像内容提取到文件夹中。
    • 对于 4.2:
      docker container create --name "temp_container" projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.2
      docker export "temp_container" | tar -C $HOME/cluster-upgrade-script -xvf - --strip-components 2
    • 对于 4.2.1:
      docker container create --name "temp_container" projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.3
      docker export "temp_container" | tar -C $HOME/cluster-upgrade-script -xvf - --strip-components 2
    • 对于 4.2.2:
      docker container create --name "temp_container" projects.registry.vmware.com/vmware-cloud-director/cluster-upgrade-script-airgapped:v0.1.4
      docker export "temp_container" | tar -C $HOME/cluster-upgrade-script -xvf - --strip-components 2
  5. 将内容提取到文件夹后,可以安全地移除临时容器:
    docker container rm "temp_container" 
  6. 将所有内容提取到主文件夹后,打开目录,然后更新脚本的权限:
    cd $HOME/cluster-upgrade-script
    chmod +x upgrade_cluster_components.sh
  7. 在主文件夹中运行以下命令:
    ./upgrade_cluster_components.sh kubeconfig-absolute-file-path [image registry] 
    
    Example: ./upgrade_cluster_components.sh $HOME/kubeconfig-cluster.txt projects.registry.vmware.com

    image_registry 是一个可选参数,该参数定义了脚本应从中提取映像的注册表,并期望在此处托管映像,如 CSI/CPI CRS、CAPVCD 清单、clusterctl 等。

    如果不使用 private/local/airgap 注册表,请使用 projects.registry.vmware.com 作为 image_registry。或者,如果该参数为空,则默认为 image_registry: projects.registry.vmware.com.

    对于专用/本地注册表,请使用注册表链接作为 参数。例如,my-private.registry.com。确保运行脚本的虚拟机信任注册表,否则可能会遇到错误,例如,x509 certificate signed by unknown authority

    注:
    • 在执行脚本期间,所有映像项目都将下载到 $HOME/cluster-upgrade-packages/
    • 如果从脚本升级期间出现任何错误,则可以安全地移除此文件夹,然后再次运行该脚本以创建此文件夹。
    • $HOME/.cluster-api 中会为 clusterctl 创建一个额外的文件夹。可以安全地删除此文件夹,因为重新尝试运行脚本会创建此文件夹。

结果

成功运行升级集群脚本后,集群 Kuberetes 组件版本将更新。可以在 Kubernetes Container Clusters UI 中查看更新后的 Kubernetes 组件版本。