25.7. SR-IOV 추가 네트워크에 pod 추가
기존 SR-IOV(Single Root I/O Virtualization) 네트워크에 pod를 추가할 수 있습니다.
25.7.1. 네트워크 연결을 위한 런타임 구성 링크 복사링크가 클립보드에 복사되었습니다!
추가 네트워크에 pod를 연결할 때 런타임 구성을 지정하여 pod에 대한 특정 사용자 정의를 수행할 수 있습니다. 예를 들어 특정 MAC 하드웨어 주소를 요청할 수 있습니다.
Pod 사양에서 주석을 설정하여 런타임 구성을 지정합니다. 주석 키는 k8s.v1.cni.cncf.io/networks
이며 런타임 구성을 설명하는 JSON 오브젝트를 허용합니다.
25.7.1.1. 이더넷 기반 SR-IOV 연결을 위한 런타임 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 JSON은 이더넷 기반 SR-IOV 네트워크 연결에 대한 런타임 구성 옵션을 설명합니다.
- 1
- SR-IOV 네트워크 연결 정의 CR의 이름입니다.
- 2
- 선택사항: SR-IOV 네트워크 연결 정의 CR에 정의된 리소스 유형에서 할당된 SR-IOV 장치의 MAC 주소입니다. 이 기능을 사용하려면
SriovNetwork
오브젝트에{ "mac": true }
도 지정해야 합니다. - 3
- 선택사항: SR-IOV 네트워크 연결 정의 CR에 정의된 리소스 유형에서 할당된 SR-IOV 장치의 IP 주소입니다. IPv4 및 IPv6 주소가 모두 지원됩니다. 이 기능을 사용하려면
SriovNetwork
오브젝트에{ "ips": true }
도 지정해야 합니다.
런타임 구성 예
25.7.1.2. InfiniBand 기반 SR-IOV 연결을 위한 런타임 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 JSON은 InfiniBand 기반 SR-IOV 네트워크 연결에 대한 런타임 구성 옵션을 설명합니다.
런타임 구성 예
25.7.2. 추가 네트워크에 Pod 추가 링크 복사링크가 클립보드에 복사되었습니다!
추가 네트워크에 Pod를 추가할 수 있습니다. Pod는 기본 네트워크를 통해 정상적인 클러스터 관련 네트워크 트래픽을 계속 전송합니다.
Pod가 생성되면 추가 네트워크가 연결됩니다. 그러나 Pod가 이미 있는 경우에는 추가 네트워크를 연결할 수 없습니다.
Pod는 추가 네트워크와 동일한 네임스페이스에 있어야 합니다.
SR-IOV Network Resource Injector는 Pod의 첫 번째 컨테이너에 리소스
필드를 자동으로 추가합니다.
DPDK(Data Plane Development Kit) 모드에서 Intel NIC(네트워크 인터페이스 컨트롤러)를 사용하는 경우 Pod의 첫 번째 컨테이너만 NIC에 액세스하도록 구성되어 있습니다. SriovNetworkNodePolicy
오브젝트에서 deviceType
이 vfio-pci
로 설정된 경우 SR-IOV 추가 네트워크는 DPDK 모드에 대해 구성됩니다.
NIC에 액세스해야 하는 컨테이너가 Pod
오브젝트에 정의된 첫 번째 컨테이너인지 확인하거나 Network Resource Injector를 비활성화하여 이 문제를 해결할 수 있습니다. 자세한 내용은 BZ#1990953 에서 참조하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. - 클러스터에 로그인합니다.
- SR-IOV Operator를 설치합니다.
-
Pod를 연결할
SriovNetwork
오브젝트 또는SriovIBNetwork
오브젝트를 생성합니다.
프로세스
Pod
오브젝트에 주석을 추가합니다. 다음 주석 형식 중 하나만 사용할 수 있습니다.사용자 정의 없이 추가 네트워크를 연결하려면 다음 형식으로 주석을 추가합니다.
<network>
를 Pod와 연결할 추가 네트워크의 이름으로 변경합니다.metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]
metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 둘 이상의 추가 네트워크를 지정하려면 각 네트워크를 쉼표로 구분합니다. 쉼표 사이에 공백을 포함하지 마십시오. 동일한 추가 네트워크를 여러 번 지정하면 Pod에 해당 네트워크에 대한 인터페이스가 여러 개 연결됩니다.
사용자 정의된 추가 네트워크를 연결하려면 다음 형식으로 주석을 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod를 생성하려면 다음 명령을 입력합니다.
<name>
을 Pod 이름으로 교체합니다.oc create -f <name>.yaml
$ oc create -f <name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택사항:
Pod
CR에 주석이 있는지 확인하려면 다음 명령을 입력하고<name>
을 Pod 이름으로 교체합니다.oc get pod <name> -o yaml
$ oc get pod <name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예에서
example-pod
Pod는net1
추가 네트워크에 연결되어 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
k8s.v1.cni.cncf.io/network-status
매개변수는 JSON 오브젝트 배열입니다. 각 오브젝트는 Pod에 연결된 추가 네트워크의 상태를 설명합니다. 주석 값은 일반 텍스트 값으로 저장됩니다.
25.7.3. NUMA(Non-Uniform Memory Access) 정렬 SR-IOV Pod 생성 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV 및 제한된
또는 single-numa-node
토폴로지 관리자 정책으로 동일한 NUMA 노드에서 할당된 CPU 리소스를 제한하여 NUMA 정렬 SR-IOV Pod를 생성할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
CPU 관리자 정책을
static
으로 구성했습니다. CPU 관리자에 대한 자세한 내용은 "추가 리소스" 섹션을 참조하십시오. 토폴로지 관리자 정책을
single-numa-node
로 구성했습니다.참고single-numa-node
가 요청을 충족할 수 없는 경우 Topology Manager 정책을restricted
로 구성할 수 있습니다. 보다 유연한 SR-IOV 네트워크 리소스 스케줄링은 추가 리소스 섹션에서 NUMA 인식 스케줄링 중 SR-IOV 네트워크 토폴로지 제외 를 참조하십시오.
프로세스
다음과 같은 SR-IOV Pod 사양을 생성한 다음 YAML을
<name>-sriov-pod.yaml
파일에 저장합니다.<name>
을 이 Pod의 이름으로 바꿉니다.다음 예는 SR-IOV Pod 사양을 보여줍니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 샘플 SR-IOV Pod를 만듭니다.
oc create -f <filename>
$ oc create -f <filename>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<filename>
을 이전 단계에서 생성한 파일 이름으로 바꿉니다.
sample-pod
가 보장된 QoS로 구성되어 있는지 확인하십시오.oc describe pod sample-pod
$ oc describe pod sample-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sample-pod
에 전용 CPU가 할당되어 있는지 확인하십시오.oc exec sample-pod -- cat /sys/fs/cgroup/cpuset/cpuset.cpus
$ oc exec sample-pod -- cat /sys/fs/cgroup/cpuset/cpuset.cpus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sample-pod
에 할당된 SR-IOV 장치 및 CPU가 동일한 NUMA 노드에 있는지 확인하십시오.oc exec sample-pod -- cat /sys/fs/cgroup/cpuset/cpuset.cpus
$ oc exec sample-pod -- cat /sys/fs/cgroup/cpuset/cpuset.cpus
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.7.4. OpenStack에서 SR-IOV를 사용하는 클러스터의 테스트 Pod 템플릿 링크 복사링크가 클립보드에 복사되었습니다!
다음 testpmd
Pod는 대규모 페이지, 예약된 CPU 및 SR-IOV 포트로 컨테이너 생성을 보여줍니다.
testpmd
Pod의 예
- 1
- 이 예에서는 성능 프로필의 이름이
cnf-performance 프로필
이라고 가정합니다.