跳至主要内容

將 VMware vSphere In-tree 遷移到 Out-of-tree

Kubernetes 正在逐步停止在樹內維護雲端提供者。VMware vSphere 有一個樹外雲端提供者,可以透過安裝 vSphere 雲端提供者和雲端儲存插件來使用。

本頁面涵蓋如何從樹內 vSphere 雲端提供者遷移到樹外,以及在遷移後管理現有 VM。

它遵循官方 vSphere 遷移文件中提供的步驟,並提供在 Rancher 中執行的步驟。

Cloud-config 格式限制​

由於 vSphere Cloud Storage Interface (CSI) 中存在的錯誤,使用以下 cloud-config 格式佈建的現有卷將無法遷移。

如果 cloud-config 具有此格式用於資料儲存和資源池路徑,vSphere CSI 驅動程式無法識別它:

default-datastore: </datacenter>/datastore/<default-datastore-name>
resourcepool-path: "</datacenter>/host/<cluster-name>/Resources/<resource-pool-name>"

使用樹內提供者以下列格式佈建的卷將正確遷移:

default-datastore: <default-datastore-name>
resourcepool-path: "<cluster-name>/Resources/<resource-pool-name>"

上游錯誤:https://github.com/kubernetes-sigs/vsphere-csi-driver/issues/628

Rancher 追蹤此錯誤的問題:https://github.com/rancher/rancher/issues/31105

先決條件​

  • vSphere CSI 遷移需要 vSphere 7.0u1。為了能夠管理現有的樹內 vSphere 卷,請將 vSphere 升級到 7.0u1。
  • Kubernetes 版本必須是 1.19 或更高版本。

遷移​

1. 安裝 CPI 插件​

在安裝 CPI 之前,我們需要使用 node.cloudprovider.kubernetes.io/uninitialized=true:NoSchedule 污染所有節點。

這可以透過執行以下命令來完成:

curl -O https://raw.githubusercontent.com/rancher/helm3-charts/56b622f519728378abeddfe95074f1b87ab73b1e/charts/vsphere-cpi/taints.sh

或:

wget https://raw.githubusercontent.com/rancher/helm3-charts/56b622f519728378abeddfe95074f1b87ab73b1e/charts/vsphere-cpi/taints.sh
chmod +x taints.sh
./taints.sh <path to kubeconfig if running the command outside the cluster>

執行腳本污染所有節點後,啟動 Helm vSphere CPI chart。

  1. 點擊 ☰ > 叢集管理。
  2. 前往將安裝 vSphere CPI chart 的叢集並點擊探索。
  3. 點擊 Apps > Charts。
  4. 點擊 vSphere CPI。
  5. 點擊安裝。
  6. 填寫所需的 vCenter 詳細資訊並點擊安裝。

vSphere CPI 使用 ProviderID 初始化所有節點,這是 vSphere CSI 驅動程式所需的。

使用以下命令檢查是否所有節點都使用 ProviderID 初始化:

kubectl describe nodes | grep "ProviderID"

2. 安裝 CSI 驅動程式​

  1. 點擊 ☰ > 叢集管理。
  2. 前往將安裝 vSphere CSI chart 的叢集並點擊探索。
  3. 點擊 Apps > Charts。
  4. 點擊 vSphere CSI。
  5. 點擊安裝。
  6. 填寫所需的 vCenter 詳細資訊並點擊安裝。
  7. 勾選在安裝前自訂 Helm 選項並點擊下一步。
  8. 在功能頁籤上,勾選啟用 CSI 遷移。
  9. 可選:前往儲存頁籤並設定資料儲存。此 chart 建立一個以 csi.vsphere.vmware.com 作為佈建程式的 StorageClass。您可以提供資料儲存的 URL 以在建立此 StorageClass 時用於 CSI 卷佈建。資料儲存 URL 可以在 vSphere 用戶端中透過選擇資料儲存並前往摘要頁籤找到。填寫 StorageClass 的詳細資訊。
  10. 點擊安裝。

3. 編輯叢集以啟用 CSI 遷移功能閘道​

  1. 在編輯叢集時,如果 Kubernetes 版本低於 1.19,請從 Kubernetes 版本下拉選單中選擇 Kubernetes 版本 1.19 或更高版本。

  2. 要啟用功能閘道,點擊「以 YAML 編輯」,並在 kube-controller 和 kubelet 下新增以下內容:

      extra_args:
    feature-gates: "CSIMigration=true,CSIMigrationvSphere=true"

4. 排空工作節點​

在升級期間變更 kubelet 和 kube-controller-manager 參數之前,必須排空工作節點。

  1. 點擊 ☰ > 叢集管理。
  2. 前往您將排空工作節點的叢集並點擊 ⋮ > 編輯設定。
  3. 在進階選項部分,將最大不可用工作節點欄位設定為 1。
  4. 要在升級期間排空節點,選擇排空節點 > 是。
  5. 將 Force 和 Delete Local Data 設定為 true。
  6. 點擊儲存以升級叢集。