將 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。
- 點擊 ☰ > 叢集管理。
- 前往將安裝 vSphere CPI chart 的叢集並點擊探索。
- 點擊 Apps > Charts。
- 點擊 vSphere CPI。
- 點擊安裝。
- 填寫所需的 vCenter 詳細資訊並點擊安裝。
vSphere CPI 使用 ProviderID 初始化所有節點,這是 vSphere CSI 驅動程式所需的。
使用以下命令檢查是否所有節點都使用 ProviderID 初始化:
kubectl describe nodes | grep "ProviderID"
2. 安裝 CSI 驅動程式
- 點擊 ☰ > 叢集管理。
- 前往將安裝 vSphere CSI chart 的叢集並點擊探索。
- 點擊 Apps > Charts。
- 點擊 vSphere CSI。
- 點擊安裝。
- 填寫所需的 vCenter 詳細資訊並點擊安裝。
- 勾選在安裝前自訂 Helm 選項並點擊下一步。
- 在功能頁籤上,勾選啟用 CSI 遷移。
- 可選:前往儲存頁籤並設定資料儲存。此 chart 建立一個以
csi.vsphere.vmware.com作為佈建程式的 StorageClass。您可以提供資料儲存的 URL 以在建立此 StorageClass 時用於 CSI 卷佈建。資料儲存 URL 可以在 vSphere 用戶端中透過選擇資料儲存並前往摘要頁籤找到。填寫 StorageClass 的詳細資訊。 - 點擊安裝。
3. 編輯叢集以啟用 CSI 遷移功能閘道
-
在編輯叢集時,如果 Kubernetes 版本低於 1.19,請從 Kubernetes 版本下拉選單中選擇 Kubernetes 版本 1.19 或更高版本。
-
要啟用功能閘道,點擊「以 YAML 編輯」,並在 kube-controller 和 kubelet 下新增以下內容:
extra_args:
feature-gates: "CSIMigration=true,CSIMigrationvSphere=true"
4. 排空工作節點
在升級期間變更 kubelet 和 kube-controller-manager 參數之前,必須排空工作節點。
- 點擊 ☰ > 叢集管理。
- 前往您將排空工作節點的叢集並點擊 ⋮ > 編輯設定。
- 在進階選項部分,將最大不可用工作節點欄位設定為 1。
- 要在升級期間排空節點,選擇排空節點 > 是。
- 將 Force 和 Delete Local Data 設定為 true。
- 點擊儲存以升級叢集。