全部產品
Search
文件中心

Container Service for Kubernetes:將EIP從Terway遷移至ack-extend-network-controller

更新時間:Jun 19, 2024

Terway網路外掛程式中的EIP(Elastic IP Address)功能已被棄用並不再維護,請使用ack-extend-network-controller組件來實現EIP功能。本文介紹如何將EIP從Terway遷移至ack-extend-network-controller。

前提條件

影響範圍

重要

遷移過程不會修改您的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情境

操作步驟

  1. 確保叢集中未安裝ack-extend-network-controller組件。如果已安裝ack-extend-network-controller,請先卸載。

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

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

    3. Helm頁面,查看是否存在發布名稱為ack-extend-network-controller的組件。如果存在,請單擊ack-extend-network-controller操作列的刪除,完成組件卸載。

  2. 將Terway網路外掛程式版本升級至v1.6.0及以上。

    升級操作,請參見管理組件

  3. 修改Terway設定檔,以啟用Terway中的EIP遷移功能。

    重要

    如果在Terway中啟用EIP遷移功能,Terway會為叢集中的每個Pod所關聯的EIP建立一個PodEIP資源。啟用EIP遷移功能後,Terway將不再管理EIP。

    1. 執行以下命令修改Terway的配置ConfigMap。

      kubectl edit cm eni-config -n kube-system
    2. 修改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"
          }
      # 以下內容省略。

    1. 設定檔修改完成後,執行以下命令重新建立Terway執行個體。

      kubectl delete pod -n kube-system -l app=terway-eniip

      Terway Pods重新啟動後,Terway外掛程式會自動將叢集中的EIP遷移到ack-extend-network-controller。

  4. 在Terway日誌中檢查遷移狀態,輸出eip migrate finished表明EIP遷移完成。

    1. 執行以下命令,擷取Terway Pod的名稱.

      kubectl get pods -n kube-system | grep terway

      結果會返回一個或多個Terway的Pod名稱。

    2. 執行以下命令,輸出Terway Pod的日誌。

      kubectl logs -n kube-system <pod_name> # 替換<pod_name>為您實際的Terway Pod名稱。

      結果輸出eip migrate finished表明EIP遷移完成。

      image.png

  5. 檢查叢集中的PodEIP CRD對象,以查看配置是否成功建立。

    執行以下命令,查詢已經遷移的CR。該CR對象與Pod具有相同的名稱和命名空間。

    kubectl get podeip -n {namespace} {name} # 將{namespace}和{name}替換為指定Pod(已關聯EIP)的命名空間和名稱。
  6. 應用市場安裝ack-extend-network-controller,並啟用EIP功能。具體操作,請參見在應用市場安裝ack-extend-network-controller

  7. 執行以下命令檢查PodEIP CRD資源狀態是否更新。

    kubectl get podeip -n {namespace} {name} -o yaml # 將{namespace}和{name}替換為指定Pod(已關聯EIP)的命名空間和名稱。
    • 如果status欄位不為空白,表明EIP功能已經正確運行。

    • 如果status欄位為空白,請檢查ack-extend-network-controller組件的配置以及日誌。

    輸出類似如下結果。

    展開查看PodEIP的輸出結果

    apiVersion: alibabacloud.com/v1beta1
    kind: PodEIP
    metadata:
      creationTimestamp: "2023-10-24T08:24:37Z"
      finalizers:
      - podeip-controller.alibabacloud.com/finalizer
      generation: 1
      name: example-xxx-xx
      namespace: default
      resourceVersion: "44013"
      uid: 4744a7af-***-***-ad06-***17aecce
    spec:
      allocationID: eip-xxxxxx
      allocationType:
        releaseStrategy: Follow
        type: Auto
    status:
      eipAddress: 47.XX.XX.XX
      internetChargeType: PayByTraffic
      isp: BGP
      networkInterfaceID: eni-xxxxxxx
      podLastSeen: "2023-10-24T08:31:22Z"
      privateIPAddress: 192.XX.XX.XX
      resourceGroupID: rg-xxxxxx
      status: InUse

    參數說明如下:

    參數

    取值說明

    spec.allocationType.type

    • Static:表示使用靜態分配方式,即Pod使用指定的EIP ID。

    • Auto:表示使用自動分配方式,即EIP由Terway自動建立。

    spec.allocationType.releaseStrategy

    • Follow:表示在Pod刪除時釋放EIP,即對於無狀態的工作負載,無需保持EIP與Pod的關聯關係。

    • TTL:表示在一定時間後釋放EIP,即對於有狀態的工作負載,需要保持EIP與Pod的關聯關係。

  8. 關閉Terway的EIP功能。執行下面步驟。

    1. enable_eip_migrate參數的值設定為false或刪除該參數。

    2. enable_eip_pool參數的值設定為"false"或刪除該參數。

    3. 重新啟動Terway Pods。