獨占ENI模式是為Pod提供最佳網絡性能的一種策略,特別適合于那些對網絡性能有嚴格需求的場景。例如,在處理大數據分析、實時流處理或者運行對網絡敏感的應用(如視頻流、在線游戲或科學計算)時,該網絡模式可以提供高網絡吞吐量和極低的網絡延遲。在高頻交易類型場景,該網絡模式可以提供組播能力。
使用限制
配置節點池級別的容器網絡
請參見以下流程規劃并創建獨占ENI節點池,創建成功后,您可以指定Pod調度至目標節點池。
1. 規劃獨占ENI節點池
獨占ENI模式下,單節點的最大Pod數量較少。Worker節點彈性網卡數量需要大于6才能加入集群,關于如何計算彈性網卡的數量,請參見實例規格族。
規劃Pod使用的交換機、安全組。
Terway支持多種配置方式,優先級依次遞減:
集群默認配置自定義Terway配置參數
重要請確保節點可用區對應的交換機已配置到上述配置中。否則Pod將無法創建成功。
2. 創建獨占ENI節點池并驗證獨占ENI模式啟用成功
參見創建節點池新建一個節點池,并在創建過程中為節點添加標簽
k8s.aliyun.com/exclusive-mode-eni-type: eniOnly
。推薦您同時配置污點,避免其他Pod調度到獨占ENI的節點池中。
重要請在創建節點池時配置標簽。已創建的節點無法切換至獨占ENI模式。若您配置錯誤,請刪除節點池重建。
執行以下命令,查詢節點的可分配(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資源,用于記錄所使用的網絡配置信息。您可以通過以下方式查詢。
k 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