5장. 네임스페이스가 지정된 SR-IOV 리소스 구성
네임스페이스가 지정된 SriovNetwork 리소스를 통해 애플리케이션 소유자는 클러스터 관리자가 공유 Operator 네임스페이스에서 이를 수행하는 대신, 네임스페이스 내에서 직접 자체 SriovNetwork 리소스를 생성하고 관리할 수 있습니다. 이 방법은 권한을 단순화하고 보안을 개선하며 애플리케이션을 보다 효과적으로 분리합니다.
5.1. 네임스페이스가 지정된 SriovNetwork 리소스 도입 링크 복사링크가 클립보드에 복사되었습니다!
SR-IOV 네트워크는 애플리케이션 네임스페이스 내에서 직접 생성하고 관리할 수 있습니다. 이 기능을 사용하면 애플리케이션 소유자가 네트워크 구성을 세밀하게 제어하여 워크플로를 단순화할 수 있습니다.
이 접근 방식은 사용자 경험을 향상시키는 몇 가지 주요 이점을 제공합니다.
-
향상된 자동화 및 제어: 애플리케이션 소유자는 네트워크 구성을 직접 제어할 수 있으므로 클러스터 관리자가 대신
SriovNetwork
오브젝트를 생성할 필요가 없습니다. - 보안 강화: 사용자가 자체 네임스페이스 내에서 리소스를 관리할 수 있도록 허용하면 보안이 향상되고 애플리케이션을 보다 효과적으로 분리할 수 있습니다. 또한 다른 애플리케이션의 NetworkAttachmentDefinition 오브젝트에 대한 의도하지 않은 잘못된 구성을 방지하는 데 도움이 됩니다.
-
간소화된 권한: 자체 네임스페이스에서
SriovNetwork
리소스를 직접 관리하면 사용자 권한이 간소화됩니다. 이렇게 하면 워크플로우가 간소화되고 개발자의 운영 오버헤드가 줄어듭니다.
5.1.1. 애플리케이션 네임스페이스에서 SriovNetwork 구성 링크 복사링크가 클립보드에 복사되었습니다!
SriovNetwork CR(사용자 정의 리소스)이 애플리케이션 네임스페이스에 배포된 경우 spec.networkNamespace
필드를 정의하거나 채우지 마십시오. 이 시나리오에서는 NetworkAttachmentDefinition이 SriovNetwork CR과 동일한 네임스페이스에 생성됩니다.
SR-IOV Network Operator 웹 후크는 spec.networkNamespace
필드가 정의된 경우 애플리케이션 네임스페이스에서 SriovNetwork
리소스 생성을 거부합니다.
애플리케이션 네임스페이스에 SriovNetwork
리소스를 생성하고 추가 네트워크에 Pod를 연결하려면 다음 절차를 따르십시오.
사전 요구 사항
애플리케이션 소유자가 네임스페이스가 지정된 SriovNetwork 리소스를 구성하려면 클러스터 관리자가 다음 단계를 완료해야 합니다.
-
SR-IOV Network Operator는
openshift-sriov-network-operator
네임스페이스에 설치됩니다. - SR-IOV 하드웨어가 있는 노드에는 노드를 식별하기 위해 Operator에 레이블이 지정됩니다.
애플리케이션 소유자로서 애플리케이션 네임스페이스에 대한 관리자 권한이 있어야 합니다.
프로세스
SR-IOV 네트워크 노드 정책을 생성하여 노드의 SR-IOV 네트워크 장치 구성을 지정합니다.
SriovNetworkNodePolicy
오브젝트는openshift-sriov-network-operator
네임스페이스에 생성되어 노드의 SR-IOV 네트워크 장치 구성을 정의합니다. Intel DPK 구성에 대한 예는 다음과 같습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 네임스페이스를 생성합니다. 예를 들어 다음 명령을 실행하여
sriov-app
이라는 네임스페이스를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML 파일(예:
sriovnetwork.yaml
)을 생성하여 애플리케이션 네임스페이스에서SriovNetwork
오브젝트를 정의합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
namespace
: 값은 애플리케이션 네임스페이스의 이름과 일치해야 합니다(예:sriov-app
). -
resourceName
: 이 값은 클러스터 관리자가 생성한SriovNetworkNodePolicy
에 정의된spec.resourceName
과 일치해야 합니다. 이 예에서는intelnics
입니다.
-
YAML 파일을 적용하여 애플리케이션 네임스페이스에서
SriovNetwork
오브젝트를 생성합니다.oc create -f sriovnetwork.yaml
$ oc create -f sriovnetwork.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 소유자가 SriovNetwork 리소스를 생성한 후 새로 정의된 네트워크를 사용하는 Pod를 생성할 수 있습니다. Pod의 YAML 매니페스트에 특정 주석을 추가하여 추가 네트워크에 Pod를 연결합니다.
YAML 파일(예:
test-pod.yaml
)을 생성하여 새 네트워크 연결을 사용하는 Pod를 정의합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
namespace
: Pod가 생성된 네임스페이스입니다.SriovNetwork
오브젝트가 생성된 네임스페이스와 동일해야 합니다. -
주석
:k8s.v1.cni.cncf.io/networks
는 Pod가 연결되는 추가 네트워크를 지정합니다. 값은SriovNetwork
오브젝트의metadata.name
과 일치해야 합니다.
-
다음 명령을 실행하여 애플리케이션 네임스페이스에 Pod를 생성하도록 YAML 파일을 적용합니다.
oc create -f test-pod.yaml
$ oc create -f test-pod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 실행하여 NetworkAttachmentDefinition이 동일한 네임스페이스에 생성되었는지 확인합니다.
oc get net-attach-def -n sriov-app
$ oc get net-attach-def -n sriov-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
sriov-app
은SriovNetwork
오브젝트가 생성된 애플리케이션 네임스페이스입니다.출력 예
NAME AGE test-network 2m
NAME AGE test-network 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령으로 Pod를 설명하여 포드가 실행 중인지 확인하고 네트워크 상태를 가져옵니다.
oc describe pod test-pod -n sriov-app
$ oc describe pod test-pod -n sriov-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여기서
sriov-app
은 Pod가 생성된 애플리케이션 네임스페이스입니다.출력에서
k8s.v1.cni.cncf.io/network-status
주석을 찾습니다. 여기에는 네트워크의 이름과 해당 인터페이스의 pod에 할당된 IP가 표시됩니다.다음 명령을 실행하여 Pod에 추가 네트워크 인터페이스가 있는지 확인합니다.
oc exec -it test-pod -n sriov-app -- ip a
$ oc exec -it test-pod -n sriov-app -- ip a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 eth0 인터페이스 외에도 보조 네트워크 인터페이스(예:
net1
또는eth1
)를 찾습니다.net1
인터페이스에는 SriovNetwork 오브젝트에 정의된 서브넷의 IP 주소가 있어야 합니다(예:10.0.0.0/24
). 이렇게 하면 포드에서 새 네트워크 연결 정의를 사용하고 있는지 확인합니다.