3.6. SR-IOV 네트워크 정책 업데이트 중 병렬 노드 드레이닝 구성
기본적으로 SR-IOV 네트워크 운영자는 정책이 변경되기 전에 노드에서 작업 부하를 제거합니다. 운영자는 재구성이 작업 부하에 영향을 미치지 않는지 확인하기 위해 한 번에 한 노드씩 이 작업을 수행합니다.
대규모 클러스터에서 노드를 순차적으로 비우는 작업은 시간이 많이 걸릴 수 있으며, 몇 시간 또는 며칠이 걸릴 수도 있습니다. 시간에 민감한 환경에서는 SriovNetworkPoolConfig 사용자 정의 리소스(CR)에서 병렬 노드 드레이닝을 활성화하여 SR-IOV 네트워크 구성을 더 빠르게 롤아웃할 수 있습니다.
병렬 드레이닝을 구성하려면 SriovNetworkPoolConfig CR을 사용하여 노드 풀을 만듭니다. 그런 다음 풀에 노드를 추가하고 운영자가 병렬로 비울 수 있는 풀의 최대 노드 수를 정의할 수 있습니다. 이 접근 방식을 사용하면 풀에 실행 중인 작업 부하를 처리할 수 있는 충분한 노드가 남아 있는지 확인하는 동시에 더 빠른 재구성을 위해 병렬 드레이닝을 활성화할 수 있습니다.
노드는 하나의 SR-IOV 네트워크 풀 구성에만 속할 수 있습니다. 노드가 풀에 속하지 않으면 해당 노드는 한 번에 하나의 노드만 비우도록 구성된 가상 기본 풀에 추가됩니다.
노드는 배수 과정 중에 다시 시작될 수 있습니다.
이 절차를 수행하려면 SR-IOV 리소스를 만든 다음 노드를 병렬로 비워야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. -
cluster-admin권한이 있는 사용자로 로그인합니다. - SR-IOV Network Operator 설치.
- 노드에는 SR-IOV를 지원하는 하드웨어가 있습니다.
프로세스
SriovNetworkPoolConfig리소스를 정의하는 YAML 파일을 만듭니다.sriov-nw-pool.yaml파일 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
SriovNetworkPoolConfig개체의 이름을 지정합니다.- 2
- SR-IOV Network Operator가 설치된 네임스페이스입니다.
- 3
- 업데이트 중에 풀에서 사용할 수 없는 노드에 대한 정수 또는 백분율 값을 지정합니다. 예를 들어, 노드가 10개이고 사용할 수 없는 최대 노드 수를 2로 설정하면 언제든지 병렬로 비울 수 있는 노드는 2개뿐이고, 작업 부하를 처리할 수 있는 노드는 8개 남습니다.
- 4
- 노드 선택기를 사용하여 풀을 추가할 노드를 지정합니다. 이 예제에서는
작업자역할이 있는 모든 노드를 풀에 추가합니다.
다음 명령을 실행하여
SriovNetworkPoolConfig리소스를 만듭니다.oc create -f sriov-nw-pool.yaml
$ oc create -f sriov-nw-pool.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
sriov-test네임스페이스를 만듭니다.oc create namespace sriov-test
$ oc create namespace sriov-testCopy to Clipboard Copied! Toggle word wrap Toggle overflow SriovNetworkNodePolicy리소스를 정의하는 YAML 파일을 만듭니다.sriov-node-policy.yaml파일 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
SriovNetworkNodePolicy리소스를 만듭니다.oc create -f sriov-node-policy.yaml
$ oc create -f sriov-node-policy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow SriovNetwork리소스를 정의하는 YAML 파일을 만듭니다.sriov-network.yaml파일 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
SriovNetwork리소스를 만듭니다.oc create -f sriov-network.yaml
$ oc create -f sriov-network.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 생성한 노드 풀을 확인하세요.
oc get sriovNetworkpoolConfig -n openshift-sriov-network-operator
$ oc get sriovNetworkpoolConfig -n openshift-sriov-network-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 예상 출력에는 모든 노드에 대한
작업자역할이 포함된 노드 풀의 이름(예:pool-1)과 노드 풀의 수명(예:67s)이 초 단위로 표시됩니다.클러스터에서 작업 부하 감소를 트리거하기 위해
SriovNetworkNodePolicy리소스의 가상 함수 수를 업데이트합니다.oc patch SriovNetworkNodePolicy sriov-nic-1 -n openshift-sriov-network-operator --type merge -p '{"spec": {"numVfs": 4}}'$ oc patch SriovNetworkNodePolicy sriov-nic-1 -n openshift-sriov-network-operator --type merge -p '{"spec": {"numVfs": 4}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 대상 클러스터의 드레이닝 상태를 확인하세요.
oc get sriovNetworkNodeState -n openshift-sriov-network-operator
$ oc get sriovNetworkNodeState -n openshift-sriov-network-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAMESPACE NAME SYNC STATUS DESIRED SYNC STATE CURRENT SYNC STATE AGE openshift-sriov-network-operator worker-0 InProgress Drain_Required DrainComplete 3d10h openshift-sriov-network-operator worker-1 InProgress Drain_Required DrainComplete 3d10h
NAMESPACE NAME SYNC STATUS DESIRED SYNC STATE CURRENT SYNC STATE AGE openshift-sriov-network-operator worker-0 InProgress Drain_Required DrainComplete 3d10h openshift-sriov-network-operator worker-1 InProgress Drain_Required DrainComplete 3d10hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 배수 프로세스가 완료되면
SYNC STATUS가Succeeded로 변경되고DESIRED SYNC STATE와CURRENT SYNC STATE값은IDLE로 돌아갑니다.