L2 カーネル アクセス モード インターフェイスの設定例
概要 このトピックでは、アクセス モード インターフェイスを持つ kernel/veth
ユーザー ポッドをクラウドネイティブ ルーターのインスタンスに追加する方法について説明します。
概要
レイヤー2アクセスモード kernel
インターフェイスを持つユーザーポッドを設定し、それをJCNRインスタンスにアタッチすることができます。Juniper Cloud-Native Routerは、導入時にL2インターフェイスが設定されている必要があります。大まかなタスクは次のとおりです。
-
NAD(ネットワークアタッチメント定義)を定義して適用する - NADファイルは、MultusがJCNR-CNIを呼び出し、ポッドインターフェイスを接続するネットワークを作成するために必要な設定を定義します。
-
ポッド YAML ファイルを定義してクラウドネイティブルータークラスターに適用する - ポッド YAML には、ポッドの仕様と、JCNR-CNI によって作成されたネットワークへのアノテーションが含まれています。
メモ:NAD およびポッド YAML ファイルの詳細については 、「JCNR のユースケースと設定の概要 」トピックを参照してください。
設定例
- 次に、スタティック IPAM を使用してレイヤ 2
kernel/veth
アクセス モード インターフェイスを作成する NAD の例を示します。apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: vswitch-pod1-bd100 spec: config: '{ "cniVersion":"0.4.0", "name": "vswitch-pod1-bd100", "plugins": [ { "type": "jcnr", "args": { "instanceName": "vswitch", "instanceType": "virtual-switch", "interfaceType": "veth", "bridgeDomain": "bd100", "bridgeVlanId": "100" }, "ipam": { "type": "static", "addresses":[ { "address":"99.61.0.2/16", "gateway":"99.61.0.1" }, { "address":"1234::99.61.0.2/120", "gateway":"1234::99.61.0.1" } ] }, "kubeConfig":"/etc/kubernetes/kubelet.conf" } ] }'
NAD は、タイプ ポッド インターフェイスを
また、ポッド インターフェイスに割り当てられる静的 IP アドレスも定義します。veth
インスタンスでvirtual-switch
接続する必要があるブリッジ ドメインbd100
を定義します。 - NAD マニフェストを適用してネットワークを作成します。
kubectl apply -f nad-access_mode.yaml networkattachmentdefinition.k8s.cni.cncf.io/vswitch-pod1-bd100 created
- NAD が作成されていることを確認します。
[root@jcnr-01]# kubectl get net-attach-def NAME AGE vswitch-pod1-bd100 59s
- ネットワークに接続された
vswitch-pod1-bd100
ポッドを作成するための yaml の例を次に示します。apiVersion: v1 kind: Pod metadata: name: pod1 annotations: k8s.v1.cni.cncf.io/networks: vswitch-pod1-bd100 spec: containers: - name: pod1 image: ubuntu:latest imagePullPolicy: IfNotPresent securityContext: privileged: false env: - name: KUBERNETES_POD_UID valueFrom: fieldRef: fieldPath: metadata.uid volumeMounts: - name: dpdk mountPath: /dpdk subPathExpr: $(KUBERNETES_POD_UID) volumes: - name: dpdk hostPath: path: /var/run/jcnr/containers
ポッドは、
.k8s.v1.cni.cncf.io/networks
アノテーションを使用してルーターインスタンスにアタッチされます - ポッドマニフェストを適用します。
[root@jcnr-01]# kubectl apply -f pod_access_mode.yaml pod/pod1 created
- ポッドが実行されていることを確認します。
[root@jcnr-01 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE pod1 1/1 Running 0 2m38s
- セカンダリインターフェイスが作成され、
vswitch-pod1-bd100
ネットワークに接続されていることを確認します。(簡潔にするために出力はトリミングされています)。[root@jcnr-01 ~]# kubectl describe pod pod1 Name: pod1 Namespace: default Priority: 0 Node: jcnr-01/10.100.20.25 Start Time: Mon, 26 Jun 2023 09:36:57 -0400 Labels: <none> Annotations: cni.projectcalico.org/containerID: 5b92668a6d7580e587de951d660c99969ce98bc239502afab6f9d191653f1e9b cni.projectcalico.org/podIP: 10.233.91.79/32 cni.projectcalico.org/podIPs: 10.233.91.79/32 k8s.v1.cni.cncf.io/network-status: [{ "name": "k8s-pod-network", "ips": [ "10.233.91.79" ], "default": true, "dns": {} },{ "name": "default/vswitch-pod1-bd100", "interface": "net1", "ips": [ "99.61.0.2", "1234::633d:2" ], "mac": "02:00:00:5D:74:76", "dns": {} }] ...
- vRouter に対応するインターフェイスが作成されていることを確認します。 vRouter CLI にアクセスし 、 コマンドを発行します
vif --list
。vif0/2 Ethernet: jvknet1-7c557fe MTU: 9160 Type:Virtual HWaddr:02:00:00:66:01:56 DDP: OFF SwLB: ON Vrf:0 Flags:L2Vof QOS:-1 Ref:8 RX port packets:20 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Vlan Mode: Access Vlan Id: 100 OVlan Id: 100 RX packets:7 bytes:518 errors:13 TX packets:31 bytes:2438 errors:0 Drops:14 TX port packets:31 errors:0
Virtual
は であり、VLAN モードaccess
は に設定され、VLAN ID は に設定されている100
ことに注意してください。L2 インターフェイスの VRF は常に 0 です。