各 Pod に専用の ENI を割り当てることで、高スループット、超低レイテンシー、マルチキャストをサポートします。
制限事項
-
ECS インスタンスには Terway v1.11.0 以降、Lingjun インスタンスには v1.14.3 以降が必要です。アップグレードについては、「Terway」をご参照ください。
-
デュアルスタックが有効な場合、ノードの追加には共有 ENI モードと同じインスタンスタイプの制限が適用されます。つまり、IPv4 アドレス (プライマリおよびセカンダリ) の数は IPv6 アドレスの数と等しくなければなりません。サポートされる数については、「インスタンスファミリー」をご参照ください。
-
Lingjun インスタンスはデュアルスタックをサポートしていません。
-
専用 ENI が割り当てられた Pod は、eBPF ネットワークアクセラレーションまたは Kubernetes NetworkPolicy をサポートしていません。
-
専用 ENI モードには新しいノードが必要です。プールに既存のノードを追加した場合、そのノードにアタッチされている ENI は使用されません。
-
専用 ENI モードは新しいノードにのみ適用されます。ノードプールの作成後に、共有 ENI モードと専用 ENI モードを切り替えることはできません。
-
カスタム CNI チェーンの設定はできません。
ノードプールレベルでのコンテナネットワークの設定
Terway は、ノードプールレベルのネットワークモードとして専用 ENI を提供します。詳細については、「共有 ENI モードと専用 ENI モード」をご参照ください。
1. 専用 ENI ノードプールの計画
-
専用 ENI モードでは、各ノードがサポートする Pod の数が少なくなり、6 つを超える ENI が必要になります。インスタンスタイプごとの ENI 数については、「インスタンスファミリー」をご参照ください。
-
Pod 用の vSwitch とセキュリティグループを計画します。
Terway は、優先度の高い順に、次の設定方法をサポートしています。
-
クラスターのデフォルト設定:Terway 設定パラメーターのカスタマイズ
重要各ノードのゾーンに対応する vSwitch を含めてください。含めない場合、Pod の作成は失敗します。
Lingjun ノードプールは、Pod への固定 IP アドレス、独立した vSwitch、およびセキュリティグループの設定をサポートしていません。
2. 専用 ENI ノードプールの作成と設定の確認
-
「ノードプールの作成と管理」に従ってノードプールを作成し、ノードに
k8s.aliyun.com/exclusive-mode-eni-type: eniOnlyの label を追加します。また、専用 ENI を必要としない Pod がこのプールにスケジューリングされないように、Taint を追加します。
重要label はノードプールの作成中に追加してください。既存のノードを専用 ENI モードに切り替えることはできません。label が正しくない場合は、ノードプールを削除して再作成してください。
-
ノード上の割り当て可能なリソースを照会して、専用 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: 213aliyun/eniフィールドは、専用 ENI モードが有効になっていることを示します。
3. Podの専用 ENI ノードプールへのスケジューリング
NodeAffinity または PodNetworking カスタムリソースを使用して、Pod を専用 ENI ノードプールにスケジューリングします。
-
NodeAffinity:固定 IP、独立した vSwitch、セキュリティグループなどの Pod レベルの設定はサポートされていません。
-
PodNetworking:Pod レベルの vSwitch、セキュリティグループ、および固定 IP の設定をサポートしています。詳細については、「Pod への固定 IP アドレス、独立した vSwitch、およびセキュリティグループの設定」をご参照ください。
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: nginx-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