3.11. Multiarch Tuning Operator를 사용하여 다중 아키텍처 클러스터에서 워크로드 관리
Multiarch Tuning Operator는 다중 아키텍처 클러스터 및 다중 아키텍처 환경으로 전환되는 단일 아키텍처 클러스터에서 워크로드 관리를 최적화합니다.
아키텍처 인식 워크로드 스케줄링을 통해 스케줄러는 Pod 이미지의 아키텍처와 일치하는 노드에 Pod를 배치할 수 있습니다.
기본적으로 스케줄러는 노드에 대한 새 Pod 배치를 결정할 때 Pod의 컨테이너 이미지의 아키텍처를 고려하지 않습니다.
아키텍처 인식 워크로드 스케줄링을 활성화하려면 ClusterPodPlacementConfig 오브젝트를 생성해야 합니다. ClusterPodPlacementConfig 오브젝트를 생성할 때 Multiarch Tuning Operator는 아키텍처 인식 워크로드 스케줄링을 지원하는 데 필요한 피연산자를 배포합니다. ClusterPodPlacementConfig 오브젝트에서 nodeAffinityScoring 플러그인을 사용하여 노드 아키텍처의 클러스터 수준 점수를 설정할 수도 있습니다. nodeAffinityScoring 플러그인을 활성화하면 스케줄러에서 먼저 호환되는 아키텍처로 노드를 필터링한 다음 Pod를 노드에 가장 높은 점수로 배치합니다.
Pod가 생성되면 피연산자는 다음 작업을 수행합니다.
-
Pod 예약을 방지하는
multiarch.openshift.io/scheduling-gate스케줄링 게이트를 추가합니다. -
kubernetes.io/arch레이블에 지원되는 아키텍처 값을 포함하는 스케줄링 서술자를 계산합니다. -
Pod 사양에서 스케줄링 서술자를
nodeAffinity요구 사항으로 통합합니다. - Pod에서 스케줄링 게이트를 제거합니다.
다음 피연산자 동작을 확인합니다.
-
nodeSelector필드가 워크로드에 대해kubernetes.io/arch레이블로 이미 구성된 경우 피연산자는 해당 워크로드에 대한nodeAffinity필드를 업데이트하지 않습니다. -
nodeSelector필드가 워크로드에 대해kubernetes.io/arch레이블로 구성되지 않은 경우 피연산자는 해당 워크로드에 대한nodeAffinity필드를 업데이트합니다. 그러나 해당nodeAffinity필드에서 피연산자는kubernetes.io/arch레이블로 구성되지 않은 노드 선택기 용어만 업데이트합니다. -
nodeName필드가 이미 설정된 경우 Multiarch Tuning Operator에서 Pod를 처리하지 않습니다. -
Pod가 DaemonSet에 속하는 경우 피연산자는
nodeAffinity필드를 업데이트하지 않습니다. -
nodeSelector또는nodeAffinity및preferredAffinity필드가kubernetes.io/arch레이블에 대해 설정된 경우 피연산자에서nodeAffinity필드를 업데이트하지 않습니다. -
nodeSelector또는nodeAffinity필드만kubernetes.io/arch레이블에 설정되어 있고nodeAffinityScoring플러그인이 비활성화된 경우 피연산자에서nodeAffinity필드를 업데이트하지 않습니다. -
nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution필드에kubernetes.io/arch레이블을 기반으로 노드를 점수하는 용어가 이미 포함된 경우 피연산자는nodeAffinityScoring플러그인의 구성을 무시합니다.
3.11.1. CLI를 사용하여 Multiarch Tuning Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift CLI(oc)를 사용하여 Multiarch Tuning Operator를 설치할 수 있습니다.
사전 요구 사항
-
oc가 설치되어 있습니다. -
cluster-admin권한이 있는 사용자로oc에 로그인했습니다.
프로세스
다음 명령을 실행하여
openshift-multiarch-tuning-operator라는 새 프로젝트를 생성합니다.$ oc create ns openshift-multiarch-tuning-operatorOperatorGroup오브젝트를 생성합니다.OperatorGroup오브젝트를 생성하기 위한 구성으로 YAML 파일을 생성합니다.OperatorGroup오브젝트를 생성하기 위한 YAML 구성의 예:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-multiarch-tuning-operator namespace: openshift-multiarch-tuning-operator spec: {}다음 명령을 실행하여
OperatorGroup오브젝트를 생성합니다.$ oc create -f <file_name>1 - 1
- &
lt;file_name>을OperatorGroup오브젝트 구성이 포함된 YAML 파일의 이름으로 바꿉니다.
Subscription오브젝트를 생성합니다.Subscription오브젝트를 생성하기 위한 구성으로 YAML 파일을 생성합니다.Subscription오브젝트를 생성하기 위한 YAML 구성의 예:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-multiarch-tuning-operator namespace: openshift-multiarch-tuning-operator spec: channel: stable name: multiarch-tuning-operator source: redhat-operators sourceNamespace: openshift-marketplace installPlanApproval: Automatic startingCSV: multiarch-tuning-operator.<version>다음 명령을 실행하여 서브스크립션 오브젝트를 생성합니다.
$ oc create -f <file_name>1 - 1
- &
lt;file_name>을Subscription오브젝트 구성이 포함된 YAML 파일의 이름으로 바꿉니다.
Subscription 오브젝트 및 OperatorGroup 오브젝트 구성에 대한 자세한 내용은 "CLI를 사용하여 소프트웨어 카탈로그에서 설치"를 참조하십시오.
검증
Multiarch Tuning Operator가 설치되었는지 확인하려면 다음 명령을 실행합니다.
$ oc get csv -n openshift-multiarch-tuning-operator출력 예
NAME DISPLAY VERSION REPLACES PHASE multiarch-tuning-operator.<version> Multiarch Tuning Operator <version> multiarch-tuning-operator.1.0.0 SucceededOperator가
Succeeded단계에 있는 경우 설치가 성공적으로 수행됩니다.선택 사항:
OperatorGroup오브젝트가 생성되었는지 확인하려면 다음 명령을 실행합니다.$ oc get operatorgroup -n openshift-multiarch-tuning-operator출력 예
NAME AGE openshift-multiarch-tuning-operator-q8zbb 133m선택 사항:
Subscription오브젝트가 생성되었는지 확인하려면 다음 명령을 실행합니다.$ oc get subscription -n openshift-multiarch-tuning-operator출력 예
NAME PACKAGE SOURCE CHANNEL multiarch-tuning-operator multiarch-tuning-operator redhat-operators stable