全部產品
Search
文件中心

Container Service for Kubernetes:將ACK專有叢集熱遷移至ACK託管叢集Pro版

更新時間:Mar 25, 2025

您可以將ACK專有叢集熱遷移至ACK託管叢集Pro版。熱遷移無需中斷業務,不影響叢集業務的正常運行。

Container Service for Kubernetes已於2024年08月21日起停止ACK專有叢集的建立。推薦您在生產環境中使用具有更高可靠性、安全性和調度效率的ACK託管叢集Pro版,以享受ACK託管叢集Pro版的功能和特性,例如控制面託管、高可用等。

前提條件

  • 已有ACK專有叢集(待遷移叢集),且版本為1.18及以上。如需升級叢集,請參見手動升級叢集

    遷移後,叢集版本保持不變。如同時有遷移叢集和升級叢集版本的需求,建議先完成遷移,再升級叢集版本
  • 遷移前,請務必在叢集的基本資料頁面完成叢集時區的設定,以確保遷移後ACK託管叢集Pro版的控制面時區與遷移前一致,避免因時區變化導致的CronJob執行時間變化等異常問題。

  • 已在待遷移叢集的同一地區下建立一個OSS Bucket,且沒有為該Bucket設定防盜鏈(防盜鏈可能導致遷移失敗)。更多資訊,請參見建立儲存空間防盜鏈

注意事項

注意項

說明

計費說明

  • 叢集遷移成功後,涉及的計費會發生變化,已經移除的Master節點的費用將不再收取,同時將新增收取叢集管理費用(由ACK收取),其他雲資源計費保持不變。

  • 建立儲存空間本身不收取任何費用,僅收取上傳至儲存空間中Object的少量儲存費用或者訪問Object產生的流量費用等,請參見計費概述

公網訪問

  • 叢集遷移成功後,通過EIP暴露 API Server實現公網訪問的叢集,訪問叢集地址不會發生變化。

  • 部分早期ACK專有叢集使用公網SLB訪問API Server,此類叢集遷移到ACK託管叢集Pro版後需手動切換為EIP模式(將EIP綁定到API Server內網CLB),具體操作,請參見控制叢集API Server的公網訪問能力

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專有叢集

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面的操作列,單擊待遷移叢集對應的更多>遷移至Pro版

  3. 遷移至Pro版對話方塊,完成前置檢查和RAM授權,選擇為熱遷移準備的OSS Bucket的名稱,仔細閱讀遷移注意事項,然後單擊確定

    展開查看如何完成前置檢查

    單擊前置檢查,跳轉至容器智能營運控制台,然後單擊執行遷移檢查,在面板中確認檢查項後勾選我已知曉並同意,然後單擊執行檢查

    如前置檢查未通過,可按照控制台頁面指引修複問題。

    前置檢查.png

    展開查看如何完成熱遷移RAM授權

    1. 單擊存取控制台(RAM),前往完成熱遷移所需的授權。同時,擷取OSS Bucket名稱,供下一步策略內容修改使用。migrate

    2. 單擊以k8sMasterRolePolicy開頭的任一授權策略名稱稱,在策略詳情頁的策略內容頁簽,單擊修改策略內容,然後在指令碼編輯地區的Statement欄位中補充以下策略內容,然後單擊確定

      請將以下代碼中的<YOUR_BUCKET_NAME>替換為您在該地區下為目的地組群建立的Bucket的名稱(刪去<>),即在遷移至Pro版對話方塊指定的Bucket的名稱。

      ,
              {
                  "Action": [
                      "oss:PutObject",
                      "oss:GetObject"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:<YOUR_BUCKET_NAME>/*"  
                  ]
              }

    遷移完成後,遷移至Pro版對話方塊將提示遷移已完成。您可以觀察叢集類型和Master節點狀態變更。

    • 叢集類型:返回叢集列表頁面,在叢集類型列查看類型由ACK專有叢集自動變更為ACK託管叢集,且叢集規格列顯示為Pro版

    • Master節點狀態:在叢集列表頁面的操作列,單擊目的地組群對應的詳情,然後在左側導覽列單擊節點管理>節點。在節點列表的角色/狀態列下,查看原有的Master節點狀態變成未知,表明該Master節點已脫離叢集,終止使用。您可以參見步驟二:移除ACK專有叢集熱遷移後的Master節點,移除叢集熱遷移後的Master節點。

步驟二:移除ACK專有叢集熱遷移後的Master節點

完成熱遷移後,您可以通過控制台或kubectl命令手動將Master節點從ACK專有叢集中移除。

控制台

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點

  3. 節點頁面的操作列,單擊待移除Master節點對應的更多>移除,或選中多個Master節點後單擊下方的大量移除,然後按照對話方塊指引選擇配置,仔細閱讀對話方塊的注意事項,並單擊確定

kubectl

執行命令前,請確保已通過kubectl串連叢集。體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集

  1. 查看並記錄待移除的Master節點名稱。

    kubectl get node | grep control-plane
  2. 移除目標Master節點,將<MASTER_NAME>替換為上一步記錄的Master節點名稱。

    kubectl delete node <MASTER_NAME>

    如需大量刪除多個Master節點,可將以下命令中的多個<MASTER_NAME>替換。例如,需要同時刪除Master節點cn-hangzhou.192.xx.xx.65cn-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組件,如有,則需要重新安裝或遷移。

  1. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

  2. 組件管理頁面確認,如果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組件也遷移至託管版。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇營運管理 > 組件管理

    3. 組件管理頁面,安裝ACK Virtual Node組件。

    4. 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
    5. 遷移完成後,您可以通過建立新Pod測試叢集是否正常運行。

後續步驟

常見問題

遷移過程中ACK專有叢集的業務是否受影響?

叢集遷移過程中會休眠ACK專有叢集的控制面組件,但不影響正在啟動並執行業務。

遷移流程大概需要多長時間?

叢集遷移主要包括控制面休眠、etcd資料備份以及託管側組件啟動三個階段。整體流程預計耗時10~15分鐘,其中API Server不可用時間預計持續5~10分鐘。

叢集遷移後,訪問鏈路是否會發生變化

遷移後,API Server CLB IP地址不會改變,通過KubeConfig訪問叢集時,叢集地址不發生變化。

前置檢查ACK Virtual Node環境變數配置失敗如何處理

若在ACK專有叢集中安裝了ACK Virtual Node組件,需要在遷移前手動設定kube-apiserver內網端點。具體操作如下:

  1. 叢集資訊頁面,擷取kube-apiserver內網端點資訊。

  2. 無狀態頁面的kube-system命名空間下,找到名為ack-virtual-node-controller的Deployment,然後為該Deployment的spec.template.spec.containers[0].env欄位添加如下環境變數:

    • KUBERNETES_APISERVER_HOSTkube-apiserver內網IP地址。

    • KUBERNETES_APISERVER_PORTkube-apiserver內網連接埠,通常取值為6443。