您可以將ACK專有叢集熱遷移至ACK託管叢集Pro版。熱遷移無需中斷業務,不影響叢集業務的正常運行。
Container Service for Kubernetes已於2024年08月21日起停止ACK專有叢集的建立。推薦您在生產環境中使用具有更高可靠性、安全性和調度效率的ACK託管叢集Pro版,以享受ACK託管叢集Pro版的功能和特性,例如控制面託管、高可用等。
前提條件
注意事項
注意項 | 說明 |
計費說明 | |
公網訪問 |
|
Pod自訂配置 | 啟用Pod自訂配置的ACK專有叢集不能隨即轉移至ACK託管叢集Pro版。您需要在遷移前停止terway-controlplane,在遷移後重新啟用terway-controlplane。具體操作, 請參見ACK專有叢集遷移時,停止terway-controlplane,關於如何自訂配置Pod,請參見為Pod配置固定IP及獨立虛擬交換器、安全性群組。 |
Master節點 | 部分早期叢集的Master節點未預設安裝雲助手,需手動安裝。具體操作,請參見安裝雲助手Agent。叢集遷移完成後,Master節點將變為Not Ready 。 |
ECS執行個體釋放 | 刪除遷移後的Master節點時,ACK僅釋放隨用隨付類型的ECS執行個體及其資料盤。訂用帳戶類型需手動釋放。訂用帳戶類型的ECS執行個體需手動釋放。具體操作,請參見釋放執行個體。 |
步驟一:熱遷移ACK專有叢集至ACK託管叢集Pro版
完成前提條件中的準備工作和相關注意事項後,您可以開始遷移。熱遷移後的ACK託管叢集Pro版無法回退至ACK專有叢集。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面的操作列,單擊待遷移叢集對應的更多>遷移至Pro版。
在遷移至Pro版對話方塊,完成前置檢查和RAM授權,選擇為熱遷移準備的OSS Bucket的名稱,仔細閱讀遷移注意事項,然後單擊確定。
遷移完成後,遷移至Pro版對話方塊將提示遷移已完成。您可以觀察叢集類型和Master節點狀態變更。
叢集類型:返回叢集列表頁面,在叢集類型列查看類型由ACK專有叢集自動變更為ACK託管叢集,且叢集規格列顯示為Pro版。
Master節點狀態:在叢集列表頁面的操作列,單擊目的地組群對應的詳情,然後在左側導覽列單擊節點管理>節點。在節點列表的角色/狀態列下,查看原有的Master節點狀態變成未知,表明該Master節點已脫離叢集,終止使用。您可以參見步驟二:移除ACK專有叢集熱遷移後的Master節點,移除叢集熱遷移後的Master節點。
步驟二:移除ACK專有叢集熱遷移後的Master節點
完成熱遷移後,您可以通過控制台或kubectl命令手動將Master節點從ACK專有叢集中移除。
控制台
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點頁面的操作列,單擊待移除Master節點對應的更多>移除,或選中多個Master節點後單擊下方的大量移除,然後按照對話方塊指引選擇配置,仔細閱讀對話方塊的注意事項,並單擊確定。
kubectl
執行命令前,請確保已通過kubectl串連叢集。體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
查看並記錄待移除的Master節點名稱。
kubectl get node | grep control-plane移除目標Master節點,將
<MASTER_NAME>替換為上一步記錄的Master節點名稱。kubectl delete node <MASTER_NAME>如需大量刪除多個Master節點,可將以下命令中的多個
<MASTER_NAME>替換。例如,需要同時刪除Master節點cn-hangzhou.192.xx.xx.65和cn-hangzhou.192.xx.xx.66時,範例程式碼如下。kubectl delete node cn-hangzhou.192.xx.xx.65 cn-hangzhou.192.xx.xx.66
(可選)步驟三:組件處理
在ACK專有叢集中確認是否安裝了ALB Ingress Controller組件或ack-virtual-node組件,如有,則需要重新安裝或遷移。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在組件管理頁面確認,如果ACK專有叢集中安裝了ALB Ingress Controller組件或ack-virtual-node組件,請參考以下方法處理。
重新安裝ALB Ingress Controller組件
若ACK專有叢集中安裝了組件ALB Ingress Controller,您需要在遷移成功後重新安裝該組件。關於如何安裝ALB Ingress Controller組件,請參見管理組件。
安裝完成後,通過以下命令刪除原來的應用,確保已通過kubectl串連叢集。詳細資料,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
kubectl delete deployment alb-ingress-controller -n kube-system遷移ack-virtual-node至託管版
若ACK專有叢集中安裝了ACK Virtual Node組件,為實現業務無縫遷移,您需要在叢集遷移成功後,將ACK Virtual Node組件也遷移至託管版。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在組件管理頁面,安裝ACK Virtual Node組件。
ACK Virtual Node組件安裝完成後,請依次執行以下命令,清除不再需要的舊組件和配置。
# 依次刪除舊的vk-webhook服務、ack-virtual-node-controller部署、虛擬節點相關的ClusterRoleBinding、虛擬節點的服務賬戶。 kubectl -n kube-system delete service vk-webhook kubectl -n kube-system delete deployment ack-virtual-node-controller kubectl -n kube-system delete clusterrolebinding virtual-kubelet kubectl -n kube-system delete serviceaccount virtual-kubelet遷移完成後,您可以通過建立新Pod測試叢集是否正常運行。
後續步驟
在遷移至ACK託管叢集Pro版後,需手動收斂叢集節點的Worker Role許可權,提升節點安全性。具體操作,請參見手動收斂ACK託管版叢集的Worker RAM角色許可權。
若ACK專有叢集已安裝共用GPU基礎版,在遷移至ACK託管叢集Pro版後需升級為共用GPU專業版。具體操作,請參見在ACK Pro版叢集中將共用GPU基礎版升級為共用GPU專業版。
常見問題
遷移過程中ACK專有叢集的業務是否受影響?
叢集遷移過程中會休眠ACK專有叢集的控制面組件,但不影響正在啟動並執行業務。
遷移流程大概需要多長時間?
叢集遷移主要包括控制面休眠、etcd資料備份以及託管側組件啟動三個階段。整體流程預計耗時10~15分鐘,其中API Server不可用時間預計持續5~10分鐘。
叢集遷移後,訪問鏈路是否會發生變化
遷移後,API Server CLB IP地址不會改變,通過KubeConfig訪問叢集時,叢集地址不發生變化。
前置檢查ACK Virtual Node環境變數配置失敗如何處理
若在ACK專有叢集中安裝了ACK Virtual Node組件,需要在遷移前手動設定kube-apiserver內網端點。具體操作如下:
在叢集資訊頁面,擷取kube-apiserver內網端點資訊。
在無狀態頁面的kube-system命名空間下,找到名為ack-virtual-node-controller的Deployment,然後為該Deployment的
spec.template.spec.containers[0].env欄位添加如下環境變數:KUBERNETES_APISERVER_HOST:kube-apiserver內網IP地址。KUBERNETES_APISERVER_PORT:kube-apiserver內網連接埠,通常取值為6443。

