L2 VLAN 하위 인터페이스 구성 예
요약 레이어 2 VLAN 하위 인터페이스가 있는 사용자 포드를 클라우드 네이티브 라우터의 인스턴스에 추가하는 방법을 알아보려면 이 주제를 읽어보십시오.
개요
계층 2 VLAN 하위 인터페이스를 사용하여 사용자 Pod를 구성하고 JCNR 인스턴스에 연결할 수 있습니다. 주니퍼 클라우드 네이티브 라우터는 구축 시 구성된 L2 인터페이스가 있어야 합니다. cRPD는 패브릭 인터페이스에 대한 유효한 VLAN 구성으로 구성되어야 합니다. 예를 들어:
set interfaces eth1 unit 100 vlan-id 100
참고:
장치 번호와 VLAN ID는 일치해야 합니다.
개략적인 작업은 다음과 같습니다.
-
NAD(네트워크 연결 정의) 정의 및 적용 - NAD 파일은 Multus가 JCNR-CNI를 호출하고 Pod 인터페이스를 연결할 네트워크를 생성하는 데 필요한 구성을 정의합니다.
-
클라우드 네이티브 라우터 클러스터에 포드 YAML 파일 정의 및 적용 - 포드 YAML에는 JCNR-CNI에서 생성한 네트워크에 대한 포드 규격 및 주석이 포함되어 있습니다
참고:NAD 및 Pod YAML 파일에 대한 자세한 정보는 JCNR 사용 사례 및 구성 개요 주제를 검토하십시오.
구성 예시
- 다음은 레이어 2 VLAN 하위 인터페이스를 생성하는 NAD의 예입니다. NAD는 상위 인터페이스가
net1
있는 브리지 도메인bd201
과 하위 인터페이스를apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: vswitch-bd201-sub spec: config: '{ "cniVersion":"0.4.0", "name": "vswitch-bd201-sub", "capabilities":{"ips":true}, "plugins": [ { "type": "jcnr", "args": { "instanceName": "vswitch", "instanceType": "virtual-switch", "bridgeDomain": "bd201", "bridgeVlanId": "201", "parentInterface": "net1", "interface": "net1.201" }, "ipam": { "type": "static", "capabilities":{"ips":true}, "addresses":[ { "address":"10.3.0.1/24", "gateway":"10.3.0.254" }, { "address":"2001:db8:3003::10.3.0.1/120", "gateway":"2001:db8:3003::10.3.0.1" } ] }, "kubeConfig":"/etc/kubernetes/kubelet.conf" } ] }'
net1.201
정의합니다. 포드가 인스턴스에 연결됩니다virtual-switch
.. 또한 Pod 인터페이스에 할당할 고정 IP 주소를 정의합니다. - NAD 매니페스트를 적용하여 네트워크를 생성합니다.
kubectl apply -f nad_l2_vlan_subinterface.yaml networkattachmentdefinition.k8s.cni.cncf.io/vswitch-bd201-sub created
- NAD가 생성되었는지 확인합니다.
[root@jcnr-01]# kubectl get net-attach-def NAME AGE vswitch-bd201-sub 43s
- 다음은 네트워크에
apiVersion: v1 kind: Pod metadata: name: pod1 annotations: k8s.v1.cni.cncf.io/networks: "vswitch-bd201-sub" spec: containers: - name: pod1 image: ubuntu:latest imagePullPolicy: IfNotPresent securityContext: privileged: false resources: requests: memory: 2Gi limits: hugepages-1Gi: 2Gi env: - name: KUBERNETES_POD_UID valueFrom: fieldRef: fieldPath: metadata.uid volumeMounts: - name: dpdk mountPath: /dpdk subPathExpr: $(KUBERNETES_POD_UID) - mountPath: /dev/hugepages name: hugepage volumes: - name: dpdk hostPath: path: /var/run/jcnr/containers - name: hugepage emptyDir: medium: HugePages
vswitch-bd201-sub
Pod를 생성하는 yaml의 예입니다. Pod는 주석을 사용하여k8s.v1.cni.cncf.io/networks
라우터 인스턴스에 연결됩니다. - Pod 매니페스트를 적용합니다.
[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 40s
- 보조 인터페이스가 생성되고 네트워크에 연결되었는지 확인하기 위해 포드를
vswitch-bd201-sub
설명합니다. (간결성을 위해 출력이 잘립니다.)[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:53:31 -0400 Labels: <none> Annotations: cni.projectcalico.org/containerID: 58642dd26f85769e14d302153357e84e6900398532d1b82b50a845ac1ede051a cni.projectcalico.org/podIP: cni.projectcalico.org/podIPs: jcnr.juniper.net/dpdk-interfaces: [ { "name": "net1", "vhost-adaptor-path": "/dpdk/vhost-net1.sock", "vhost-adaptor-mode": "client", "ipv4-address": "10.3.0.1/24", "ipv6-address": "2001:db8:3003::a03:1/120", "mac-address": "02:00:00:84:DC:42", "vlan-id": "201" } ] k8s.v1.cni.cncf.io/network-status: [{ "name": "k8s-pod-network", "ips": [ "10.233.91.97" ], "default": true, "dns": {} },{ "name": "default/vswitch-bd201-sub", "interface": "net1", "ips": [ "10.3.0.1", "2001:db8:3003::a03:1" ], "mac": "02:00:00:84:DC:42", "dns": {} }] ...
- vRouter에 해당 인터페이스가 생성되었는지 확인합니다. vRouter CLI에 액세스하고 명령을 실행합니다
vif --list
.vif0/2 PMD: vhostnet1-d5eee4ec-dd7c-4e MTU: 9160 Type:Virtual HWaddr:02:00:00:84:dc:42 DDP: OFF SwLB: ON Vrf:65535 Flags:L2 QOS:-1 Ref:14 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:0 bytes:0 errors:0 TX packets:0 bytes:0 errors:0 Drops:0 TX port packets:0 errors:293 vif0/3 Virtual: vhostnet1-d5eee4ec-dd7c-4e.201 Vlan(o/i)(,S): 201/201 Parent:vif0/2 MTU: 1514 Type:Virtual(Vlan) HWaddr:02:00:00:84:dc:42 DDP: OFF SwLB: ON Vrf:0 Flags:L2 QOS:-1 Ref:1 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:0 bytes:0 errors:0 TX packets:208 bytes:17071 errors:0 Drops:0
Virtual
VLAN ID는 로 설정되어 있습니다201
. 상위 인터페이스는vif0/2
입니다. VRF는 L2 하위 인터페이스의 경우 항상 0입니다.