Terway網路外掛程式中的EIP(Elastic IP Address)功能已被棄用並不再維護,請使用ack-extend-network-controller組件來實現EIP功能。本文介紹如何將EIP從Terway遷移至ack-extend-network-controller。
前提條件
已建立ACK託管叢集或ACK專有叢集,且叢集的網路外掛程式為Terway。具體操作,請參見建立Kubernetes託管版叢集、建立Kubernetes專有版叢集。
影響範圍
遷移過程不會修改您的EIP執行個體資訊,也不會對您的業務產生影響。
如果您的叢集正在使用Terway中的EIP功能,可以先將已指派的資源遷移到ack-extend-network-controller中的EIP控制器中進行管理,然後再進行遷移。
如果您的叢集未使用Terway中的EIP功能,則無需進行遷移操作。
遷移說明
如果在Terway中啟用EIP遷移功能,Terway會為叢集中的每個Pod所關聯的EIP建立一個PodEIP資源。PodEIP是一個資來源物件,用於管理與Pod相關的EIP資訊。當啟用EIP遷移功能後,Terway將不再管理EIP,而是由ack-extend-network-controller來管理。
關於如何在Terway中啟用EIP功能,請參見自動分配EIP情境。
操作步驟
確保叢集中未安裝ack-extend-network-controller組件。如果已安裝ack-extend-network-controller,請先卸載。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Helm頁面,查看是否存在發布名稱為ack-extend-network-controller的組件。如果存在,請單擊ack-extend-network-controller操作列的刪除,完成組件卸載。
將Terway網路外掛程式版本升級至v1.6.0及以上。
升級操作,請參見管理組件。
修改Terway設定檔,以啟用Terway中的EIP遷移功能。
重要如果在Terway中啟用EIP遷移功能,Terway會為叢集中的每個Pod所關聯的EIP建立一個PodEIP資源。啟用EIP遷移功能後,Terway將不再管理EIP。
執行以下命令修改Terway的配置ConfigMap。
kubectl edit cm eni-config -n kube-system
修改eni_conf中配置。
參數
值
說明
enable_eip_pool
"true"
如果此參數未配置,或者配置為
"false"
,則表明未啟用eip
功能,則無須遷移。enable_eip_migrate
true
設定為
true
則啟用遷移功能。設定檔樣本如下,請勿修改其他配置參數。
# 以上內容省略。 eni_conf: | { "version": "1", "enable_eip_pool": "true", "enable_eip_migrate": true, "vswitch_selection_policy": "ordered" } # 以下內容省略。
設定檔修改完成後,執行以下命令重新建立Terway執行個體。
kubectl delete pod -n kube-system -l app=terway-eniip
Terway Pods重新啟動後,Terway外掛程式會自動將叢集中的EIP遷移到ack-extend-network-controller。
在Terway日誌中檢查遷移狀態,輸出
eip migrate finished
表明EIP遷移完成。執行以下命令,擷取Terway Pod的名稱.
kubectl get pods -n kube-system | grep terway
結果會返回一個或多個Terway的Pod名稱。
執行以下命令,輸出Terway Pod的日誌。
kubectl logs -n kube-system <pod_name> # 替換<pod_name>為您實際的Terway Pod名稱。
結果輸出
eip migrate finished
表明EIP遷移完成。
檢查叢集中的PodEIP CRD對象,以查看配置是否成功建立。
執行以下命令,查詢已經遷移的CR。該CR對象與Pod具有相同的名稱和命名空間。
kubectl get podeip -n {namespace} {name} # 將{namespace}和{name}替換為指定Pod(已關聯EIP)的命名空間和名稱。
在應用市場安裝ack-extend-network-controller,並啟用EIP功能。具體操作,請參見在應用市場安裝ack-extend-network-controller。
執行以下命令檢查PodEIP CRD資源狀態是否更新。
kubectl get podeip -n {namespace} {name} -o yaml # 將{namespace}和{name}替換為指定Pod(已關聯EIP)的命名空間和名稱。
如果
status
欄位不為空白,表明EIP功能已經正確運行。如果
status
欄位為空白,請檢查ack-extend-network-controller組件的配置以及日誌。
輸出類似如下結果。
參數說明如下:
參數
取值說明
spec.allocationType.type
Static
:表示使用靜態分配方式,即Pod使用指定的EIP ID。Auto
:表示使用自動分配方式,即EIP由Terway自動建立。
spec.allocationType.releaseStrategy
Follow
:表示在Pod刪除時釋放EIP,即對於無狀態的工作負載,無需保持EIP與Pod的關聯關係。TTL
:表示在一定時間後釋放EIP,即對於有狀態的工作負載,需要保持EIP與Pod的關聯關係。
關閉Terway的EIP功能。執行下面步驟。
將
enable_eip_migrate
參數的值設定為false
或刪除該參數。將
enable_eip_pool
參數的值設定為"false"
或刪除該參數。重新啟動Terway Pods。