Until recently, the existing vlan/macvlan/ipvlan CNI plugins only allowed users to create a VLAN subinterface based on a master interface in the host network namespace, and place the VLAN subinterface inside the container namespace.
Vlan based on node namespaced master
This approach had several drawbacks, the main being issues connected to configuration:
- A preconfigured master interface had to be present on the nodes.
- The vlan/macvlan/ipvlan configuration required knowledge about the node network configuration.
- Multiple network-attachment-definitions needed to be configured to use with different master/vlan combinations. Effectively a single network-attachment-definition could only be used on only one pod.
- The network-attachment-definitions had to be bound to nodes, since the available masters on different nodes could differ.
- The user had to keep track of which master/vlan combinations were already in use.
A recent feature coming in OpenShift 4.13 (Developer Preview) allows the vlan/macvlan/ipvlan interfaces to be configured using container namespace master interfaces.
Vlan based on container namespaced master.
This allows to create the master interfaces as part of the pod network configuration in a separate network-attachment-definition, and base the vlan/macvlan/ipvlan on this interface without requiring the knowledge of the network configuration of the node.
Installing
The feature will be available in OpenShift 4.13 as Developer Preview. No further installation is required.
Configuring a vlan/macvlan/ipvlan with container namespace master
To request the use of a container namespace master interface a new parameter “linkInContainer” has been added to the vlan/macvlan/ipvlan plugin configuration:
{
"name": "mynet",
"cniVersion": "0.4.0",
"type": "vlan",
"master": "eth0",
"mtu": 1500,
"vlanId": 73,
"linkInContainer": true
}
A sample use case for the use of the new feature is to create VLANs based on SR-IOV Virtual Functions. For this a SR-IOV network must be created, followed by the network-attachment definitions for the VLAN interface:
---
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetwork
metadata:
name: sriov-network
namespace: openshift-sriov-network-operator
spec:
networkNamespace: mynamespace
resourceName: sriovnic
spoofChk: "off"
trust: "on"
---
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: sriovnic
namespace: openshift-sriov-network-operator
spec:
deviceType: netdevice
isRdma: false
needVhostNet: true
nicSelector:
pfNames:
- ens3f0#0-4
numVfs: 10
priority: 99
resourceName: sriovnic
Followed by a VLAN network-attachment definition:
apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
name: vlan-73
namespace: mynamespace
spec:
config: '{
"cniVersion": "0.4.0",
"name": "vlan-73",
"plugins": [
{
"type": "vlan",
"master": "ext0", ⓿
"mtu": 1500,
"vlanId": 73,
"linkInContainer": true, ❶
"ipam": {...}
}
]
}'
Note ⓿: the vlan configuration needs to specify the master name. This can be configured in the pod networks annotation, as shown below.
Note ❶: the linkInContainer parameter must be specified
The pod definition using the above specified networks must use the following networks annotation:
---
apiVersion: v1
kind: Pod
metadata:
annotations:
k8s.v1.cni.cncf.io/networks: '[
{
"name": "sriov-network",
"namespace": "mmirecki",
"interface": "ext0" ❷
},
{
"name": "vlan-73",
"namespace": "mmirecki",
"interface": "ext0.73"
}
]'
Note ❷: The name to be used as the master for the vlan interface.
Use case example
A example use case for this feature is the use of the vlan/macvlan/ipvlan based on SR-IOV virtual functions.
Multiple VLANs can be used with a single virtual function as the master interface. To allow additional configuration the tuning plugin can be used to further tune the created VLAN interfaces. The entire process can be performed in an automated manner, with no knowledge about the node interfaces other than that required to configure the SRIOV plugin.
Status
The TAP device feature will be available in OpenShift 4.13 as Developer Preview.
The use cases for the feature and available options are based on limited customer feedback. Additional feedback on possible use cases and missing functionality are welcome. Please contact your Red Hat account manager for further details.
執筆者紹介
チャンネル別に見る
自動化
テクノロジー、チームおよび環境に関する IT 自動化の最新情報
AI (人工知能)
お客様が AI ワークロードをどこでも自由に実行することを可能にするプラットフォームについてのアップデート
オープン・ハイブリッドクラウド
ハイブリッドクラウドで柔軟に未来を築く方法をご確認ください。
セキュリティ
環境やテクノロジー全体に及ぶリスクを軽減する方法に関する最新情報
エッジコンピューティング
エッジでの運用を単純化するプラットフォームのアップデート
インフラストラクチャ
世界有数のエンタープライズ向け Linux プラットフォームの最新情報
アプリケーション
アプリケーションの最も困難な課題に対する Red Hat ソリューションの詳細
オリジナル番組
エンタープライズ向けテクノロジーのメーカーやリーダーによるストーリー
製品
ツール
試用、購入、販売
コミュニケーション
Red Hat について
エンタープライズ・オープンソース・ソリューションのプロバイダーとして世界をリードする Red Hat は、Linux、クラウド、コンテナ、Kubernetes などのテクノロジーを提供しています。Red Hat は強化されたソリューションを提供し、コアデータセンターからネットワークエッジまで、企業が複数のプラットフォームおよび環境間で容易に運用できるようにしています。
言語を選択してください
Red Hat legal and privacy links
- Red Hat について
- 採用情報
- イベント
- 各国のオフィス
- Red Hat へのお問い合わせ
- Red Hat ブログ
- ダイバーシティ、エクイティ、およびインクルージョン
- Cool Stuff Store
- Red Hat Summit