對於使用舊版 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

必要條件

在執行此工作之前,請確保滿足以下必要條件:

程序

  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 使用者介面中檢視更新後的 Kubernetes 元件版本。