3.10. 다중 아키텍처 컴퓨팅 머신이 있는 클러스터 관리
여러 아키텍처를 갖춘 노드가 있는 클러스터를 관리하려면 클러스터를 모니터링하고 작업 부하를 관리할 때 노드 아키텍처를 고려해야 합니다. 이를 위해서는 클러스터 리소스 요구 사항과 동작을 구성하거나 다중 아키텍처 클러스터에서 작업 부하를 예약할 때 추가적인 고려 사항이 필요합니다.
3.10.1. 다중 아키텍처 컴퓨팅 머신이 있는 클러스터에서 작업 스케줄링 링크 복사링크가 클립보드에 복사되었습니다!
서로 다른 아키텍처를 사용하는 컴퓨팅 노드가 있는 클러스터에 워크로드를 배포하는 경우, Pod 아키텍처를 기본 노드의 아키텍처에 맞춰야 합니다. 작업 부하에는 기본 노드 아키텍처에 따라 특정 리소스에 대한 추가 구성이 필요할 수도 있습니다.
Multiarch Tuning Operator를 사용하면 다중 아키텍처 컴퓨팅 머신이 있는 클러스터에서 아키텍처 인식 워크로드 스케줄링을 활성화할 수 있습니다. Multiarch Tuning Operator는 포드가 생성 시점에 지원할 수 있는 아키텍처를 기반으로 포드 사양에 추가적인 스케줄러 조건을 구현합니다.
3.10.1.1. 다중 아키텍처 노드 워크로드 배포 샘플 링크 복사링크가 클립보드에 복사되었습니다!
아키텍처에 따라 적절한 노드에 작업 부하를 스케줄링하는 것은 다른 노드 특성에 따라 스케줄링하는 것과 같은 방식으로 작동합니다. 작업 부하를 어떻게 예약할지 결정할 때 다음 옵션을 고려하세요.
nodeAffinity를
사용하여 특정 아키텍처로 노드 예약이미지에서 지원하는 아키텍처를 가진 노드 세트에만 워크로드를 예약하도록 허용하려면 Pod의 템플릿 사양에서
spec.affinity.nodeAffinity
필드를 설정하면 됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 지원되는 아키텍처를 지정하세요. 유효한 값에는
amd64
,arm64
또는 두 값 모두가 포함됩니다.
- 특정 아키텍처에 대한 각 노드 오염
아키텍처와 호환되지 않는 작업 부하가 노드 스케줄링에 포함되지 않도록 노드를 오염시킬 수 있습니다. 클러스터가
MachineSet
객체를 사용하는 경우.spec.template.spec.taints
필드에 매개변수를 추가하여 지원되지 않는 아키텍처가 있는 노드에 워크로드가 예약되는 것을 방지할 수 있습니다.노드에 오염을 추가하기 전에
MachineSet
개체의 규모를 줄이거나 사용 가능한 기존 머신을 제거해야 합니다. 자세한 내용은 컴퓨팅 머신 세트 수정을 참조하세요.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 특정 노드에 오염을 설정할 수도 있습니다.
oc adm taint nodes <node-name> multiarch.openshift.io/arch=arm64:NoSchedule
$ oc adm taint nodes <node-name> multiarch.openshift.io/arch=arm64:NoSchedule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 네임스페이스에 기본 허용 범위 만들기
노드나 머신 세트에 오염이 있는 경우 해당 오염을 허용하는 작업만 예약할 수 있습니다. 다음 명령을 실행하여 네임스페이스에 주석을 달아 모든 워크로드가 동일한 기본 허용 범위를 갖도록 할 수 있습니다.
oc annotate namespace my-namespace \ 'scheduler.alpha.kubernetes.io/defaultTolerations'='[{"operator": "Exists", "effect": "NoSchedule", "key": "multiarch.openshift.io/arch"}]'
$ oc annotate namespace my-namespace \ 'scheduler.alpha.kubernetes.io/defaultTolerations'='[{"operator": "Exists", "effect": "NoSchedule", "key": "multiarch.openshift.io/arch"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 워크로드에서 아키텍처 오염 허용
노드나 머신 세트에 오염이 있는 경우 해당 오염을 허용하는 작업만 예약할 수 있습니다. 특정 아키텍처 문제가 있는 노드에 예약되도록
허용을
통해 작업 부하를 구성할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제 배포는
multiarch.openshift.io/arch=arm64
taint가 지정된 노드와 머신 세트에서 예약될 수 있습니다.
- 오염 및 허용 오차를 사용한 노드 친화성 사용
스케줄러가 포드를 스케줄링하기 위해 노드 세트를 계산할 때, 허용 범위는 세트를 넓힐 수 있는 반면, 노드 친화성은 세트를 제한할 수 있습니다. 특정 아키텍처가 있는 노드에 테인트를 설정하는 경우 해당 노드에 예약하려는 워크로드에 대한 내성도 추가해야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10.2. Red Hat Enterprise Linux CoreOS(RHCOS) 커널에서 64k 페이지 활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터의 64비트 ARM 컴퓨팅 머신에서 Red Hat Enterprise Linux CoreOS(RHCOS) 커널에서 64k 메모리 페이지를 활성화할 수 있습니다. 64k 페이지 크기 커널 사양은 대용량 GPU 또는 높은 메모리 작업 부하에 사용될 수 있습니다. 이 작업은 커널을 업데이트하기 위해 머신 구성 풀을 사용하는 머신 구성 연산자(MCO)를 사용하여 수행됩니다. 64k 페이지 크기를 활성화하려면 커널에서 ARM64를 활성화하기 위한 머신 구성 풀을 전용으로 지정해야 합니다.
64k 페이지를 사용하는 것은 64비트 ARM 머신에 설치된 64비트 ARM 아키텍처 컴퓨팅 노드나 클러스터에만 해당됩니다. 64비트 x86 머신을 사용하여 머신 구성 풀에서 64k 페이지 커널을 구성하는 경우 머신 구성 풀과 MCO가 저하됩니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. - 지원되는 플랫폼 중 하나에서 서로 다른 아키텍처의 컴퓨팅 노드가 있는 클러스터를 생성했습니다.
프로세스
64k 페이지 크기 커널을 실행할 노드에 레이블을 지정합니다.
oc label node <node_name> <label>
$ oc label node <node_name> <label>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 예
oc label node worker-arm64-01 node-role.kubernetes.io/worker-64k-pages=
$ oc label node worker-arm64-01 node-role.kubernetes.io/worker-64k-pages=
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ARM64 아키텍처 및
worker-64k-pages
역할을 사용하는 작업자 역할이 포함된 머신 구성 풀을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 64k
-
pages 매개변수를 사용하여 64k-
pages를 활성화하기 위해 컴퓨팅 노드에 머신 구성을 만듭니다.oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineConfig 예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고64k 페이지
유형은 64비트 ARM 아키텍처 기반 컴퓨팅 노드에서만 지원됩니다.실시간
유형은 64비트 x86 아키텍처 기반 컴퓨팅 노드에서만 지원됩니다.
검증
새로운
worker-64k-pages
머신 구성 풀을 보려면 다음 명령을 실행하세요.oc get mcp
$ oc get mcp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-9d55ac9a91127c36314e1efe7d77fbf8 True False False 3 3 3 0 361d worker rendered-worker-e7b61751c4a5b7ff995d64b967c421ff True False False 7 7 7 0 361d worker-64k-pages rendered-worker-64k-pages-e7b61751c4a5b7ff995d64b967c421ff True False False 2 2 2 0 35m
NAME CONFIG UPDATED UPDATING DEGRADED MACHINECOUNT READYMACHINECOUNT UPDATEDMACHINECOUNT DEGRADEDMACHINECOUNT AGE master rendered-master-9d55ac9a91127c36314e1efe7d77fbf8 True False False 3 3 3 0 361d worker rendered-worker-e7b61751c4a5b7ff995d64b967c421ff True False False 7 7 7 0 361d worker-64k-pages rendered-worker-64k-pages-e7b61751c4a5b7ff995d64b967c421ff True False False 2 2 2 0 35m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10.3. 다중 아키텍처 컴퓨팅 머신의 이미지 스트림에 매니페스트 목록 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
다중 아키텍처 컴퓨팅 머신이 있는 OpenShift Container Platform 4.19 클러스터에서 클러스터의 이미지 스트림은 매니페스트 목록을 자동으로 가져오지 않습니다. 매니페스트 목록을 가져오려면 기본 importMode
옵션을 PreserveOriginal
옵션으로 수동으로 변경해야 합니다.
사전 요구 사항
-
OpenShift Container Platform CLI(
oc
)를 설치했습니다.
프로세스
다음 예제 명령은
ImageStream
cli-artifacts를 패치하여cli-artifacts:latest
이미지 스트림 태그를 매니페스트 목록으로 가져오는 방법을 보여줍니다.oc patch is/cli-artifacts -n openshift -p '{"spec":{"tags":[{"name":"latest","importPolicy":{"importMode":"PreserveOriginal"}}]}}'
$ oc patch is/cli-artifacts -n openshift -p '{"spec":{"tags":[{"name":"latest","importPolicy":{"importMode":"PreserveOriginal"}}]}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
이미지 스트림 태그를 검사하여 매니페스트 목록이 제대로 가져왔는지 확인할 수 있습니다. 다음 명령은 특정 태그에 대한 개별 아키텍처 매니페스트를 나열합니다.
oc get istag cli-artifacts:latest -n openshift -oyaml
$ oc get istag cli-artifacts:latest -n openshift -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dockerImageManifests
객체가 있으면 매니페스트 목록 가져오기가 성공한 것입니다.dockerImageManifests
객체의 출력 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow