如果您有存量的ACK專有叢集,但同時希望享受ACK叢集Pro版的功能和特性,例如控制面託管、控制面高可用等,您可以將ACK專有叢集熱遷移至ACK叢集Pro版,不中斷叢集業務的正常運行。
前提條件
條件項 | 說明 |
叢集 | 已有ACK專有叢集(待遷移叢集),且叢集版本為1.18及以上。如需升級叢集,請參見手動升級叢集。 |
OSS Bucket | 已在待遷移叢集的同一地區下建立一個OSS Bucket,且沒有為該Bucket設定防盜鏈(防盜鏈可能導致遷移失敗)。更多資訊,請參見建立儲存空間、防盜鏈。 |
注意事項
注意項 | 說明 |
公網訪問 | 部分時間較早的ACK專有叢集仍使用公網SLB訪問API Server,此類叢集遷移到ACK叢集Pro版後無法繼續通過公網SLB訪問。請手動切換為EIP模式(將EIP綁定到API Server內網SLB),以支援公網訪問API Server。關於手動切換EIP模式的具體操作,請參見控制叢集API Server的公網訪問能力。 |
Pod自訂配置 | ACK專有叢集啟用Pod自訂配置後,不能隨即轉移至ACK叢集Pro版。您需要在遷移前停止terway-controlplane,並在遷移後啟用terway-controlplane。具體操作, 請參見ACK專有叢集遷移時,停止terway-controlplane,關於如何自訂配置Pod,請參見為Pod配置固定IP及獨立虛擬交換器、安全性群組。 |
Master節點 | 部分時間較早的叢集的Master節點未預設安裝雲助手,需手動安裝。具體操作,請參見安裝雲助手Agent。叢集遷移完成後,Master節點將變為Not Ready 。 |
ECS執行個體釋放 | 如您在刪除遷移後的Master節點時勾選釋放ECS執行個體,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命令串連叢集。關於如何使用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
步驟三:組件處理
重新安裝ALB Ingress Controller組件
若ACK專有叢集中安裝了組件ALB Ingress Controller,您需要在遷移成功後重新安裝該組件。關於如何安裝ALB Ingress Controller組件,請參見管理組件。安裝完成後需要通過kubectl刪除原來的應用,刪除具體操作可以通過執行以下命令完成。執行命令前,請確保您可以使用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基礎版升級為共用GPU專業版。具體操作,請參見在ACK Pro版叢集中將共用GPU基礎版升級為共用GPU專業版。
常見問題
ACK專有叢集遷移後支援回退嗎?
叢集遷移成功後不支援回退。若叢集遷移失敗,系統會自動復原。
遷移過程中ACK專有叢集的業務是否受影響?
叢集遷移過程中會休眠ACK專有叢集的管控組件,但不影響正在啟動並執行業務。
遷移流程大概需要多長時間?
叢集遷移主要包括控制面休眠、etcd資料備份以及託管側組件啟動三個階段。整體流程預計耗時10~15分鐘,其中API Server不可用時間預計持續5~10分鐘。
叢集遷移後,訪問鏈路是否會變
遷移後,API Server SLB 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。