17.3.5. 컨테이너 네트워크 네임스페이스에서 마스터 인터페이스 구성 정보
컨테이너 네임스페이스에 있는 마스터 인터페이스를 기반으로 하는 MAC-VLAN, IP-VLAN 또는 VLAN 하위 인터페이스를 생성할 수 있습니다. 별도의 네트워크 연결 정의 CRD에서 Pod 네트워크 구성의 일부로 마스터 인터페이스를 생성할 수도 있습니다.
컨테이너 네임스페이스 마스터 인터페이스를 사용하려면 NetworkAttachmentDefinition CRD의 하위 인터페이스에 존재하는 linkInContainer 매개변수에 대해 true 를 지정해야 합니다.
17.3.5.1. SR-IOV VF에서 여러 VLAN 생성 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV VF를 기반으로 여러 VLAN을 생성할 수 있습니다. 이 구성의 경우 SR-IOV 네트워크를 생성한 다음 VLAN 인터페이스의 네트워크 연결을 정의합니다.
다음 다이어그램에서는 SR-IOV VF에서 여러 VLAN을 생성하는 설정 프로세스를 보여줍니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - SR-IOV Network Operator가 설치되어 있습니다.
프로세스
다음 명령을 사용하여 Pod를 배포하려는 전용 컨테이너 네임스페이스를 생성합니다.
$ oc new-project test-namespaceSR-IOV 노드 정책을 생성합니다.
SriovNetworkNodePolicy오브젝트를 생성한 다음 YAML을sriov-node-network-policy.yaml파일에 저장합니다.apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetworkNodePolicy metadata: name: sriovnic namespace: openshift-sriov-network-operator spec: deviceType: netdevice isRdma: false needVhostNet: true nicSelector: vendor: "15b3" deviceID: "101b" rootDevices: ["00:05.0"] numVfs: 10 priority: 99 resourceName: sriovnic nodeSelector: feature.node.kubernetes.io/network-sriov.capable: "true"다음과 같습니다.
vendor-
SR-IOV 네트워크 장치의 벤더 16진수 코드입니다. 값
15b3은 Mellanox NIC와 연결됩니다. deviceIDSR-IOV 네트워크 장치의 장치 16진수 코드입니다.
참고deviceType: netdevice설정을 사용하는 SR-IOV 네트워크 노드 정책 구성 예제는 Mellanox Network Interface Cards(NIC)에 맞게 조정됩니다.
다음 명령을 실행하여 YAML 구성을 적용합니다.
$ oc apply -f sriov-node-network-policy.yaml참고노드 재부팅 작업으로 인해 YAML 구성을 적용하는 데 시간이 걸릴 수 있습니다.
SR-IOV 네트워크를 생성합니다.
다음 예제 CR에 설명된 대로 추가 보조 SR-IOV 네트워크 연결에 대한
SriovNetworkCR(사용자 정의 리소스)을 생성합니다. YAML을sriov-network-attachment.yaml파일로 저장합니다.apiVersion: sriovnetwork.openshift.io/v1 kind: SriovNetwork metadata: name: sriov-network namespace: openshift-sriov-network-operator spec: networkNamespace: test-namespace resourceName: sriovnic spoofChk: "off" trust: "on"다음 명령을 실행하여 YAML을 적용합니다.
$ oc apply -f sriov-network-attachment.yaml
VLAN 보조 네트워크를 만듭니다.
다음 YAML 예제를 사용하여
vlan100-additional-network-configuration.yaml이라는 파일을 만듭니다.apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: vlan-100 namespace: test-namespace spec: config: | { "cniVersion": "0.4.0", "name": "vlan-100", "plugins": [ { "type": "vlan", "master": "ext0", "mtu": 1500, "vlanId": 100, "linkInContainer": true, "ipam": {"type": "whereabouts", "ipRanges": [{"range": "1.1.1.0/24"}]} } ] }다음과 같습니다.
master-
VLAN 구성은
마스터이름을 지정해야 합니다. Pod의 네트워크 주석에 이름을 지정할 수 있습니다. linkInContainer-
linkInContainer매개변수를 지정해야 합니다.
다음 명령을 실행하여 YAML 파일을 적용합니다.
$ oc apply -f vlan100-additional-network-configuration.yaml
이전 지정된 네트워크를 사용하여 포드 정의를 생성합니다.
다음 YAML 구성 예제를 사용하여
pod-a.yaml파일이라는 파일을 생성합니다.참고매니페스트 예제에는 다음 리소스가 포함됩니다.
- 보안 레이블이 있는 네임스페이스
- 적절한 네트워크 주석이 있는 Pod 정의
apiVersion: v1 kind: Namespace metadata: name: test-namespace labels: pod-security.kubernetes.io/enforce: privileged pod-security.kubernetes.io/audit: privileged pod-security.kubernetes.io/warn: privileged security.openshift.io/scc.podSecurityLabelSync: "false" --- apiVersion: v1 kind: Pod metadata: name: nginx-pod namespace: test-namespace annotations: k8s.v1.cni.cncf.io/networks: '[ { "name": "sriov-network", "namespace": "test-namespace", "interface": "ext0" }, { "name": "vlan-100", "namespace": "test-namespace", "interface": "ext0.100" } ]' spec: securityContext: runAsNonRoot: true containers: - name: nginx-container image: nginxinc/nginx-unprivileged:latest securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] ports: - containerPort: 80 seccompProfile: type: "RuntimeDefault"다음과 같습니다.
interface-
VLAN 인터페이스의
마스터인터페이스로 사용할 이름입니다.
다음 명령을 실행하여 YAML 파일을 적용합니다.
$ oc apply -f pod-a.yaml
다음 명령을 실행하여
test-namespace내에서nginx-pod에 대한 자세한 정보를 가져옵니다.$ oc describe pods nginx-pod -n test-namespaceName: nginx-pod Namespace: test-namespace Priority: 0 Node: worker-1/10.46.186.105 Start Time: Mon, 14 Aug 2023 16:23:13 -0400 Labels: <none> Annotations: k8s.ovn.org/pod-networks: {"default":{"ip_addresses":["10.131.0.26/23"],"mac_address":"0a:58:0a:83:00:1a","gateway_ips":["10.131.0.1"],"routes":[{"dest":"10.128.0.0... k8s.v1.cni.cncf.io/network-status: [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.131.0.26" ], "mac": "0a:58:0a:83:00:1a", "default": true, "dns": {} },{ "name": "test-namespace/sriov-network", "interface": "ext0", "mac": "6e:a7:5e:3f:49:1b", "dns": {}, "device-info": { "type": "pci", "version": "1.0.0", "pci": { "pci-address": "0000:d8:00.2" } } },{ "name": "test-namespace/vlan-100", "interface": "ext0.100", "ips": [ "1.1.1.1" ], "mac": "6e:a7:5e:3f:49:1b", "dns": {} }] k8s.v1.cni.cncf.io/networks: [ { "name": "sriov-network", "namespace": "test-namespace", "interface": "ext0" }, { "name": "vlan-100", "namespace": "test-namespace", "i... openshift.io/scc: privileged Status: Running IP: 10.131.0.26 IPs: IP: 10.131.0.26