6.9. SR-IOV Operator
6.9.1. SR-IOV Network Operator 설치
SR-IOV(Single Root I/O Virtualization) Network Operator를 클러스터에 설치하여 SR-IOV 네트워크 장치 및 네트워크 연결을 관리할 수 있습니다.
6.9.1.1. SR-IOV Network Operator 설치
클러스터 관리자는 OpenShift Container Platform CLI 또는 웹 콘솔을 사용하여 SR-IOV(Single Root I/O Virtualization) Network Operator를 설치할 수 있습니다.
6.9.1.1.1. CLI: SR-IOV Network Operator 설치
클러스터 관리자는 CLI를 사용하여 Operator를 설치할 수 있습니다.
사전 요구 사항
- SR-IOV를 지원하는 하드웨어가 있는 노드로 베어 메탈 하드웨어에 설치된 클러스터.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 계정.
프로세스
다음 명령을 입력하여
openshift-sriov-network-operator
네임스페이스를 생성합니다.$ cat << EOF| oc create -f - apiVersion: v1 kind: Namespace metadata: name: openshift-sriov-network-operator annotations: workload.openshift.io/allowed: management EOF
다음 명령을 입력하여
OperatorGroup
CR(사용자 정의 리소스)을 생성합니다.$ cat << EOF| oc create -f - apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: sriov-network-operators namespace: openshift-sriov-network-operator spec: targetNamespaces: - openshift-sriov-network-operator EOF
다음 명령을 입력하여 SR-IOV Network Operator에 대한
서브스크립션
CR을 생성합니다.$ cat << EOF| oc create -f - apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: sriov-network-operator-subscription namespace: openshift-sriov-network-operator spec: channel: stable name: sriov-network-operator source: redhat-operators sourceNamespace: openshift-marketplace EOF
다음 명령을 입력하여
SriovoperatorConfig
리소스를 생성합니다.$ cat <<EOF | oc create -f - apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: enableInjector: true enableOperatorWebhook: true logLevel: 2 disableDrain: false EOF
검증
다음 명령을 입력하여 Operator가 설치되었는지 확인합니다.
$ oc get csv -n openshift-sriov-network-operator \ -o custom-columns=Name:.metadata.name,Phase:.status.phase
출력 예
Name Phase sriov-network-operator.4.16.0-202406131906 Succeeded
6.9.1.1.2. 웹 콘솔 : SR-IOV Network Operator 설치
클러스터 관리자는 웹 콘솔을 사용하여 Operator를 설치할 수 있습니다.
사전 요구 사항
- SR-IOV를 지원하는 하드웨어가 있는 노드로 베어 메탈 하드웨어에 설치된 클러스터.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 계정.
프로세스
SR-IOV Network Operator 설치:
-
OpenShift Container Platform 웹 콘솔에서 Operator
OperatorHub를 클릭합니다. - 사용 가능한 Operator 목록에서 SR-IOV Network Operator를 선택한 다음 설치를 클릭합니다.
- Operator 설치 페이지의 설치된 네임스페이스 에서 Operator 권장 네임스페이스를 선택합니다.
- 설치를 클릭합니다.
-
OpenShift Container Platform 웹 콘솔에서 Operator
SR-IOV Network Operator가 설치되었는지 확인하십시오.
-
Operator
설치된 Operator 페이지로 이동합니다. SR-IOV Network Operator가 openshift-sriov-network-operator 프로젝트에 InstallSucceeded 상태로 나열되어 있는지 확인하십시오.
참고설치 중에 Operator는 실패 상태를 표시할 수 있습니다. 나중에 InstallSucceeded 메시지와 함께 설치에 성공하면 이 실패 메시지를 무시할 수 있습니다.
Operator가 설치된 것으로 나타나지 않으면 다음과 같이 추가 문제 해결을 수행합니다.
- Operator 서브스크립션 및 설치 계획 탭의 상태 아래에서 장애 또는 오류가 있는지 점검합니다.
-
Workloads
Pod 페이지로 이동하여 openshift-sriov-network-operator
프로젝트에서 Pod 로그를 확인하십시오. YAML 파일의 네임스페이스를 확인합니다. 주석이 없는 경우 다음 명령을 사용하여 주석
workload.openshift.io/allowed=management
를 Operator 네임스페이스에 추가할 수 있습니다.$ oc annotate ns/openshift-sriov-network-operator workload.openshift.io/allowed=management
참고단일 노드 OpenShift 클러스터의 경우 네임스페이스에 주석
workload.openshift.io/allowed=management
가 필요합니다.
-
Operator
6.9.1.2. 다음 단계
6.9.2. SR-IOV Network Operator 구성
SR-IOV(Single Root I/O Virtualization) Network Operator는 클러스터의 SR-IOV 네트워크 장치 및 네트워크 첨부 파일을 관리합니다.
6.9.2.1. SR-IOV Network Operator 구성
SriovOperatorConfig
CR(사용자 정의 리소스)을 생성하여 모든 SR-IOV Operator 구성 요소를 배포합니다.다음 YAML을 사용하여
sriovOperatorConfig.yaml
이라는 파일을 생성합니다.apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: disableDrain: false enableInjector: true enableOperatorWebhook: true logLevel: 2
참고SriovOperatorConfig
리소스에 대한 유일한 유효한 이름은default
이며 Operator가 배포된 네임스페이스에 있어야 합니다.다음 명령을 실행하여 리소스를 생성합니다.
$ oc apply -f sriovOperatorConfig.yaml
6.9.2.1.1. SR-IOV Network Operator 구성 사용자 정의 리소스
sriovoperatorconfig
사용자 정의 리소스의 필드는 다음 표에 설명되어 있습니다.
필드 | 유형 | 설명 |
---|---|---|
|
|
SR-IOV Network Operator 인스턴스의 이름을 지정합니다. 기본값은 |
|
|
SR-IOV Network Operator 인스턴스의 네임스페이스를 지정합니다. 기본값은 |
|
| 선택한 노드에서 SR-IOV 네트워크 구성 데몬 예약을 제어하는 노드 선택을 지정합니다. 기본적으로 이 필드는 설정되지 않으며 Operator는 작업자 노드에 SR-IOV Network Config 데몬 세트를 배포합니다. |
|
|
새 정책을 적용하여 노드에 NIC를 구성할 때 노드 드레이닝 프로세스를 비활성화하거나 노드 드레이닝 프로세스를 활성화할지 여부를 지정합니다. 이 필드를
단일 노드 클러스터의 경우 Operator를 설치한 후 이 필드를 |
|
|
Network Resources Injector 데몬 세트를 활성화하거나 비활성화할지 여부를 지정합니다. 기본적으로 이 필드는 |
|
|
Operator Admission Controller webhook 데몬 세트를 활성화하거나 비활성화할지 여부를 지정합니다. 기본적으로 이 필드는 |
|
|
Operator의 로그 상세 정보 표시 수준을 지정합니다. 기본 로그만 표시하려면 |
6.9.2.1.2. Network Resources Injector 정보
Network Resources Injector는 Kubernetes Dynamic Admission Controller 애플리케이션입니다. 다음과 같은 기능을 제공합니다.
- SR-IOV 네트워크 연결 정의 주석에 따라 SR-IOV 리소스 이름을 추가하기 위해 Pod 사양의 리소스 요청 및 제한 변경
-
Pod 사양을 Downward API 볼륨으로 변경하여 Pod 주석, 라벨 및 대규모 페이지 요청 및 제한을 노출합니다. pod에서 실행되는 컨테이너는
/etc/podnetinfo
경로에 있는 파일로 노출된 정보에 액세스할 수 있습니다.
기본적으로 Network Resources Injector는 SR-IOV Network Operator에 의해 활성화되며 모든 컨트롤 플레인 노드에서 데몬 세트로 실행됩니다. 다음은 3개의 컨트롤 플레인 노드가 있는 클러스터에서 실행 중인 Network Resources Injector Pod의 예입니다.
$ oc get pods -n openshift-sriov-network-operator
출력 예
NAME READY STATUS RESTARTS AGE network-resources-injector-5cz5p 1/1 Running 0 10m network-resources-injector-dwqpx 1/1 Running 0 10m network-resources-injector-lktz5 1/1 Running 0 10m
6.9.2.1.3. SR-IOV 네트워크 Operator Admission Controller webhook 정보
SR-IOV 네트워크 Operator Admission Controller webhook은 Kubernetes Dynamic Admission Controller 애플리케이션입니다. 다음과 같은 기능을 제공합니다.
-
SriovNetworkNodePolicy
CR이 생성 또는 업데이트될 때 유효성 검사 -
CR을 만들거나 업데이트할 때
priority
및deviceType
필드의 기본값을 설정하여SriovNetworkNodePolicy
CR 변경
기본적으로 SR-IOV 네트워크 Operator Admission Controller 웹 후크는 Operator에서 활성화하며 모든 컨트롤 플레인 노드에서 데몬 세트로 실행됩니다.
SR-IOV 네트워크 Operator Admission Controller 웹 후크를 비활성화할 때 주의하십시오. 문제 해결 또는 지원되지 않는 장치를 사용하려는 경우 특정 상황에서 Webhook를 비활성화할 수 있습니다. 지원되지 않는 장치 구성에 대한 자세한 내용은 지원되지 않는 NIC를 사용하도록 SR-IOV Network Operator 구성을 참조하십시오.
다음은 3개의 컨트롤 플레인 노드가 있는 클러스터에서 실행되는 Operator Admission Controller 웹 후크 Pod의 예입니다.
$ oc get pods -n openshift-sriov-network-operator
출력 예
NAME READY STATUS RESTARTS AGE operator-webhook-9jkw6 1/1 Running 0 16m operator-webhook-kbr5p 1/1 Running 0 16m operator-webhook-rpfrl 1/1 Running 0 16m
6.9.2.1.4. 사용자 정의 노드 선택기 정보
SR-IOV Network Config 데몬은 클러스터 노드에서 SR-IOV 네트워크 장치를 검색하고 구성합니다. 기본적으로 클러스터의 모든 worker
노드에 배포됩니다. 노드 레이블을 사용하여 SR-IOV Network Config 데몬이 실행되는 노드를 지정할 수 있습니다.
6.9.2.1.5. Network Resources Injector 비활성화 또는 활성화
기본적으로 활성화되어 있는 Network Resources Injector를 비활성화하거나 활성화하려면 다음 절차를 완료하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다. - SR-IOV Network Operator가 설치되어 있어야 합니다.
프로세스
enableInjector
필드를 설정합니다. 기능을 비활성화하려면<value>
를false
로 바꾸고 기능을 활성화하려면true
로 바꿉니다.$ oc patch sriovoperatorconfig default \ --type=merge -n openshift-sriov-network-operator \ --patch '{ "spec": { "enableInjector": <value> } }'
작은 정보또는 다음 YAML을 적용하여 Operator를 업데이트할 수 있습니다.
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: enableInjector: <value>
6.9.2.1.6. SR-IOV 네트워크 Operator Admission Controller webhook 비활성화 또는 활성화
Admission Controller webhook를 비활성화하거나 활성화하려면(기본적으로 활성화되어 있음) 다음 절차를 완료하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다. - SR-IOV Network Operator가 설치되어 있어야 합니다.
프로세스
enableOperatorWebhook
필드를 설정합니다. 기능을 비활성화하려면<value>
를false
로 바꾸고 활성화하려면true
로 바꿉니다.$ oc patch sriovoperatorconfig default --type=merge \ -n openshift-sriov-network-operator \ --patch '{ "spec": { "enableOperatorWebhook": <value> } }'
작은 정보또는 다음 YAML을 적용하여 Operator를 업데이트할 수 있습니다.
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: enableOperatorWebhook: <value>
6.9.2.1.7. SR-IOV Network Config 데몬에 대한 사용자 정의 NodeSelector 구성
SR-IOV Network Config 데몬은 클러스터 노드에서 SR-IOV 네트워크 장치를 검색하고 구성합니다. 기본적으로 클러스터의 모든 worker
노드에 배포됩니다. 노드 레이블을 사용하여 SR-IOV Network Config 데몬이 실행되는 노드를 지정할 수 있습니다.
SR-IOV Network Config 데몬이 배포된 노드를 지정하려면 다음 절차를 완료하십시오.
configDaemonNodeSelector
필드를 업데이트하면 선택한 각 노드에서 SR-IOV Network Config 데몬이 다시 생성됩니다. 데몬이 다시 생성되는 동안 클러스터 사용자는 새로운 SR-IOV 네트워크 노드 정책을 적용하거나 새로운 SR-IOV Pod를 만들 수 없습니다.
프로세스
Operator의 노드 선택기를 업데이트하려면 다음 명령을 입력합니다.
$ oc patch sriovoperatorconfig default --type=json \ -n openshift-sriov-network-operator \ --patch '[{ "op": "replace", "path": "/spec/configDaemonNodeSelector", "value": {<node_label>} }]'
"node-role.kubernetes.io/worker": ""
에서와 같이 적용하려면<node_label>
을 레이블로 바꿉니다.작은 정보또는 다음 YAML을 적용하여 Operator를 업데이트할 수 있습니다.
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: configDaemonNodeSelector: <node_label>
6.9.2.1.8. 단일 노드 설치를 위한 SR-IOV Network Operator 구성
기본적으로 SR-IOV Network Operator는 모든 정책이 변경되기 전에 노드에서 워크로드를 드레이닝합니다. Operator는 이 작업을 수행하여 재구성 전에 가상 기능을 사용하여 워크로드가 없는지 확인합니다.
단일 노드에 설치하는 경우 워크로드를 수신할 다른 노드가 없습니다. 결과적으로 단일 노드에서 워크로드를 드레이닝하지 않도록 Operator를 구성해야 합니다.
워크로드 드레이닝을 비활성화하려면 SR-IOV 네트워크 노드 정책을 변경하기 전에 SR-IOV 네트워크 인터페이스를 사용하는 모든 워크로드를 제거해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로 로그인합니다. - SR-IOV Network Operator가 설치되어 있어야 합니다.
프로세스
disableDrain
필드를true
로 설정하고configDaemonNodeSelector
필드를node-role.kubernetes.io/master: ""
로 설정하려면 다음 명령을 입력합니다.$ oc patch sriovoperatorconfig default --type=merge -n openshift-sriov-network-operator --patch '{ "spec": { "disableDrain": true, "configDaemonNodeSelector": { "node-role.kubernetes.io/master": "" } } }'
작은 정보또는 다음 YAML을 적용하여 Operator를 업데이트할 수 있습니다.
apiVersion: sriovnetwork.openshift.io/v1 kind: SriovOperatorConfig metadata: name: default namespace: openshift-sriov-network-operator spec: disableDrain: true configDaemonNodeSelector: node-role.kubernetes.io/master: ""
6.9.2.1.9. 호스트된 컨트롤 플레인을 위한 SR-IOV Operator 배포
AWS 플랫폼의 호스팅 컨트롤 플레인은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
호스팅 서비스 클러스터를 구성하고 배포한 후 호스팅된 클러스터에서 SR-IOV Operator에 대한 서브스크립션을 생성할 수 있습니다. SR-IOV Pod는 컨트롤 플레인이 아닌 작업자 머신에서 실행됩니다.
사전 요구 사항
AWS에 호스팅 클러스터를 구성하고 배포해야 합니다. 자세한 내용은 AWS에서 호스팅 클러스터 구성 (기술 프리뷰) 을 참조하십시오.
프로세스
네임스페이스 및 Operator 그룹을 생성합니다.
apiVersion: v1 kind: Namespace metadata: name: openshift-sriov-network-operator --- apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: sriov-network-operators namespace: openshift-sriov-network-operator spec: targetNamespaces: - openshift-sriov-network-operator
SR-IOV Operator에 대한 서브스크립션을 생성합니다.
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: sriov-network-operator-subsription namespace: openshift-sriov-network-operator spec: channel: stable name: sriov-network-operator config: nodeSelector: node-role.kubernetes.io/worker: "" source: s/qe-app-registry/redhat-operators sourceNamespace: openshift-marketplace
검증
SR-IOV Operator가 준비되었는지 확인하려면 다음 명령을 실행하고 결과 출력을 확인합니다.
$ oc get csv -n openshift-sriov-network-operator
출력 예
NAME DISPLAY VERSION REPLACES PHASE sriov-network-operator.4.16.0-202211021237 SR-IOV Network Operator 4.16.0-202211021237 sriov-network-operator.4.16.0-202210290517 Succeeded
SR-IOV Pod가 배포되었는지 확인하려면 다음 명령을 실행합니다.
$ oc get pods -n openshift-sriov-network-operator
6.9.2.2. 다음 단계
6.9.3. SR-IOV Network Operator 설치 제거
SR-IOV Network Operator를 설치 제거하려면 실행 중인 SR-IOV 워크로드를 삭제하고 Operator를 제거한 후 Operator에서 사용하는 Webhook를 삭제해야 합니다.
6.9.3.1. SR-IOV Network Operator 설치 제거
클러스터 관리자는 SR-IOV Network Operator를 제거할 수 있습니다.
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - SR-IOV Network Operator가 설치되어 있어야 합니다.
프로세스
모든 SR-IOV CR(사용자 정의 리소스)을 삭제합니다.
$ oc delete sriovnetwork -n openshift-sriov-network-operator --all
$ oc delete sriovnetworknodepolicy -n openshift-sriov-network-operator --all
$ oc delete sriovibnetwork -n openshift-sriov-network-operator --all
- "클러스터에서 Operator 삭제" 섹션의 지침에 따라 클러스터에서 SR-IOV Network Operator를 제거합니다.
SR-IOV Network Operator를 제거한 후 클러스터에 남아 있는 SR-IOV 사용자 정의 리소스 정의를 삭제합니다.
$ oc delete crd sriovibnetworks.sriovnetwork.openshift.io
$ oc delete crd sriovnetworknodepolicies.sriovnetwork.openshift.io
$ oc delete crd sriovnetworknodestates.sriovnetwork.openshift.io
$ oc delete crd sriovnetworkpoolconfigs.sriovnetwork.openshift.io
$ oc delete crd sriovnetworks.sriovnetwork.openshift.io
$ oc delete crd sriovoperatorconfigs.sriovnetwork.openshift.io
SR-IOV Webhook를 삭제합니다.
$ oc delete mutatingwebhookconfigurations network-resources-injector-config
$ oc delete MutatingWebhookConfiguration sriov-operator-webhook-config
$ oc delete ValidatingWebhookConfiguration sriov-operator-webhook-config
SR-IOV Network Operator 네임스페이스를 삭제합니다.
$ oc delete namespace openshift-sriov-network-operator
추가 리소스