全部產品
Search
文件中心

Container Service for Kubernetes:為節點池配置獨佔ENI網路模式

更新時間:Nov 11, 2025

獨佔ENI模式是為Pod提供最佳網路效能的一種策略,特別適合於那些對網路效能有嚴格需求的情境。例如,在處理巨量資料分析、即時資料流處理或者運行對網路敏感的應用(如視頻流、線上遊戲或科學計算)時,該網路模式可以提供高網路輸送量和極低的網路延遲。在高頻交易類型情境,該網路模式可以提供組播能力。

使用限制

  • 添加ECS執行個體Terway版本需為v1.11.0及以上。添加靈駿執行個體Terway版本需為v1.14.3及以上。如需升級組件版本,請參見Terway

  • 叢集開啟雙棧後,添加節點時會受到共用ENI模式的ECS機型限制。主私網地址+輔助私人IPv4地址和IPv6地址數量需要為1:1。關於ECS執行個體支援的IPv4和IPv6數量,請參見執行個體規格類型系列

  • 靈駿執行個體不支援IPv6雙棧。

  • 獨佔ENI的Pod不支援eBPF網路加速及NetworkPolicy。

  • 使用獨佔 ENI 時,需使用建立節點。若您使用了存量的節點,節點上已有的彈性網卡不會被使用。

  • 獨佔ENI僅對建立節點生效,配置後不可以調整為共用ENI,也不支援將已有共用ENI節點修改為獨佔ENI模式。

配置節點池層級的容器網路

獨佔ENI是Terway提供的一種節點池模式,獨佔ENI與共用ENI的詳細對比請參見共用ENI模式與獨佔ENI模式。請參見以下流程規劃並建立獨佔ENI節點池,建立成功後,您可以指定Pod調度至目標節點池。

1. 規劃獨佔ENI節點池

  • 獨佔ENI模式下,單節點的最大Pod數量較少。Worker節點彈性網卡數量需要大於6才能加入叢集,關於如何計算彈性網卡的數量,請參見執行個體規格類型系列

  • 規劃Pod使用的交換器、安全性群組。

Terway支援多種配置方式,優先順序依次遞減:

2. 建立獨佔ENI節點池並驗證獨佔ENI模式啟用成功

  1. 參見建立和管理節點池建立一個節點池,並在建立過程中為節點添加標籤k8s.aliyun.com/exclusive-mode-eni-type: eniOnly

    推薦您同時配置汙點,避免其他Pod調度到獨佔ENI的節點池中。

    重要

    請在建立節點池時配置標籤。已建立的節點無法切換至獨佔ENI模式。若您配置錯誤,請刪除節點池重建。

  2. 執行以下命令,查詢節點的可分配(allocatable)資源,檢查節點是否已成功開啟獨佔ENI模式。

    kubectl describe node <node-name> 

    預期輸出:

    Capacity:
      aliyun/eni:         7
      cpu:                16
      ephemeral-storage:  123460788Ki
      hugepages-1Gi:      0
      hugepages-2Mi:      0
      memory:             31555380Ki
      pods:               213
    Allocatable:
      aliyun/eni:         7
      cpu:                15890m
      ephemeral-storage:  113781462033
      hugepages-1Gi:      0
      hugepages-2Mi:      0
      memory:             28587828Ki
      pods:               213

    預期輸出中顯示aliyun/eni,表明獨佔ENI模式啟用成功。

3. 指定Pod調度到獨佔ENI節點池

您可以通過NodeAffinity或網路自訂資源PodNetworking配置指定Pod調度到獨佔ENI節點池。

  • NodeAffinity:不支援Pod維度配置(使用固定IP、配置獨立虛擬交換器以及安全性群組)。

  • PodNetworking:支援在Pod維度配置虛擬交換器、安全性群組,以及使用Pod固定IP。具體操作,請參見為Pod配置固定IP及獨立虛擬交換器、安全性群組

    您可以參見下方YAML樣本,在eniOptions欄位中將eniType設定為ENI,指定Pod調度至獨佔ENI節點池。

    apiVersion: network.alibabacloud.com/v1beta1
    kind: PodNetworking
    metadata:
      name: enionly
    spec:
      eniOptions:
        eniType: ENI
      allocationType:
        type: Elastic
      selector:
        podSelector:
          matchLabels:
            network: enionly

常見問題

如何判斷Pod是否使用了獨佔ENI?

Terway會建立Pod同名、同命名空間的PodENI資源,用於記錄所使用的網路設定資訊。

您可以通過以下方式查詢:

kubectl get podeni nginx-9d557694f-rcdzs -oyaml

預期輸出:

apiVersion: network.alibabacloud.com/v1beta1
kind: PodENI
metadata:
  annotations:
    k8s.aliyun.com/pod-uid: 05590939-fc51-47ab-a204-3dd187233bca
  creationTimestamp: "2024-09-13T08:09:27Z"
  finalizers:
  - pod-eni
  generation: 1
  labels:
    k8s.aliyun.com/node: cn-hangzhou.172.XX.XX.25
  name: example-9d557694f-rcdzs
  namespace: default
  resourceVersion: "1131123"
spec:
  allocations:
  - allocationType:
      type: Elastic
    eni:
      attachmentOptions: {}
      id: eni-xxxx
      mac: 00:16:3e:37:xx:xx
      securityGroupIDs:
      - sg-xxxx
      vSwitchID: vsw-xxxx
      zone: cn-hangzhou-j
    ipv4: 172.16.0.30
    ipv4CIDR: 172.16.0.0/24
    ipv6: 2408:4005:xxxx:xxxx:xxxx:xxxx:xxxx:9ad4
    ipv6CIDR: 2408:4005:39c:xxxx::/64
  zone: cn-hangzhou-j
status:
  eniInfos:
    eni-xxxx:
      id: eni-xxxx
      status: Bind
      type: Secondary
  instanceID: i-xxxx
  phase: Bind