검색

4.9. 다중 아키텍처 컴퓨팅 머신으로 클러스터 관리

download PDF

4.9.1. 다중 아키텍처 컴퓨팅 머신을 사용하여 클러스터에서 워크로드 예약

다른 아키텍처의 컴퓨팅 노드를 사용하여 클러스터에 워크로드를 배포하려면 클러스터를 주의하고 모니터링해야 합니다. 클러스터 노드에 Pod를 성공적으로 배치하기 위해 수행해야 할 추가 작업이 있을 수 있습니다.

노드 유사성, 스케줄링, 테인트 및 허용에 대한 자세한 내용은 다음 문서를 참조하십시오.

4.9.1.1. 다중 아키텍처 노드 워크로드 배포 샘플

다른 아키텍처의 컴퓨팅 노드를 사용하여 클러스터에서 워크로드를 예약하기 전에 다음 사용 사례를 고려하십시오.

노드 유사성을 사용하여 노드에서 워크로드 예약

이미지에서 지원하는 노드 세트에서만 워크로드를 예약할 수 있습니다. Pod의 템플릿 사양에 spec.affinity.nodeAffinity 필드를 설정할 수 있습니다.

nodeAffinity 가 특정 아키텍처로 설정된 배포 예

apiVersion: apps/v1
kind: Deployment
metadata: # ...
spec:
   # ...
  template:
     # ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values: 1
                - amd64
                - arm64

1
지원되는 아키텍처를 지정합니다. 유효한 값에는 amd64,arm64 또는 두 값이 모두 포함됩니다.
특정 아키텍처에 대한 모든 노드 테인트

노드에 테인트를 적용하여 해당 아키텍처와 호환되지 않는 워크로드가 해당 노드에 예약되지 않도록 할 수 있습니다. 클러스터가 MachineSet 오브젝트를 사용하는 경우 .spec.template.spec.taints 필드에 매개변수를 추가하여 지원되지 않는 아키텍처가 있는 노드에서 워크로드가 예약되지 않도록 할 수 있습니다.

  • 노드를 테인트하려면 먼저 MachineSet 오브젝트를 축소하거나 사용 가능한 머신을 제거해야 합니다. 다음 명령 중 하나를 사용하여 머신 세트를 축소할 수 있습니다.

    $ oc scale --replicas=0 machineset <machineset> -n openshift-machine-api

    또는 다음을 수행합니다.

    $ oc edit machineset <machineset> -n openshift-machine-api

    머신 세트 스케일링에 대한 자세한 내용은 "컴퓨팅 머신 세트 수정"을 참조하십시오.

테인트가 설정된 MachineSet 의 예

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata: # ...
spec:
  # ...
  template:
    # ...
    spec:
      # ...
      taints:
      - effect: NoSchedule
        key: multi-arch.openshift.io/arch
        value: arm64

다음 명령을 실행하여 특정 노드에 테인트를 설정할 수도 있습니다.

$ oc adm taint nodes <node-name> multi-arch.openshift.io/arch=arm64:NoSchedule
기본 허용 오차 생성

다음 명령을 실행하여 모든 워크로드가 동일한 기본 허용 오차를 갖도록 네임스페이스에 주석을 달 수 있습니다.

$ oc annotate namespace my-namespace \
  'scheduler.alpha.kubernetes.io/defaultTolerations'='[{"operator": "Exists", "effect": "NoSchedule", "key": "multi-arch.openshift.io/arch"}]'
워크로드의 아키텍처 테인트 허용

테인트가 정의된 노드에서는 해당 노드에 워크로드가 예약되지 않습니다. 그러나 Pod 사양에서 허용 오차를 설정하여 예약할 수 있습니다.

허용 오차가 있는 배포 예

apiVersion: apps/v1
kind: Deployment
metadata: # ...
spec:
  # ...
  template:
    # ...
    spec:
      tolerations:
      - key: "multi-arch.openshift.io/arch"
        value: "arm64"
        operator: "Equal"
        effect: "NoSchedule"

이 예제 배포는 multi-arch.openshift.io/arch=arm64 테인트가 지정된 노드에서 허용할 수도 있습니다.

테인트 및 톨러레이션에서 노드 유사성 사용

스케줄러에서 Pod를 예약할 노드 세트를 계산하면 노드 유사성이 설정된 동안 허용 오차가 세트를 확장할 수 있습니다. 특정 아키텍처의 노드에 taint를 설정하는 경우 Pod를 예약하려면 다음 예제 허용 오차가 필요합니다.

노드 유사성 및 허용 오차가 설정된 배포의 예.

apiVersion: apps/v1
kind: Deployment
metadata: # ...
spec:
  # ...
  template:
    # ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - amd64
                - arm64
      tolerations:
      - key: "multi-arch.openshift.io/arch"
        value: "arm64"
        operator: "Equal"
        effect: "NoSchedule"

4.9.2. 다중 아키텍처 컴퓨팅 머신의 이미지 스트림에서 매니페스트 목록 가져오기

다중 아키텍처 컴퓨팅 머신이 있는 OpenShift Container Platform 4.15 클러스터에서 클러스터의 이미지 스트림은 매니페스트 목록을 자동으로 가져오지 않습니다. 매니페스트 목록을 가져오려면 기본 importMode 옵션을 PreserveOriginal 옵션으로 수동으로 변경해야 합니다.

사전 요구 사항

  • OpenShift Container Platform CLI(oc)가 설치되어 있어야 합니다.

프로세스

  • 다음 예제 명령은 cli-artifacts:latest 이미지 스트림 태그가 매니페스트 목록으로 가져오기 위해 ImageStream cli-artifacts를 패치하는 방법을 보여줍니다.

    $ oc patch is/cli-artifacts -n openshift -p '{"spec":{"tags":[{"name":"latest","importPolicy":{"importMode":"PreserveOriginal"}}]}}'

검증

  • 이미지 스트림 태그를 검사하여 매니페스트 목록을 올바르게 가져온지 확인할 수 있습니다. 다음 명령은 특정 태그에 대한 개별 아키텍처 매니페스트를 나열합니다.

    $ oc get istag cli-artifacts:latest -n openshift -oyaml

    dockerImageManifests 오브젝트가 있는 경우 매니페스트 목록 가져오기에 성공했습니다.

    dockerImageManifests 오브젝트 출력 예

    dockerImageManifests:
      - architecture: amd64
        digest: sha256:16d4c96c52923a9968fbfa69425ec703aff711f1db822e4e9788bf5d2bee5d77
        manifestSize: 1252
        mediaType: application/vnd.docker.distribution.manifest.v2+json
        os: linux
      - architecture: arm64
        digest: sha256:6ec8ad0d897bcdf727531f7d0b716931728999492709d19d8b09f0d90d57f626
        manifestSize: 1252
        mediaType: application/vnd.docker.distribution.manifest.v2+json
        os: linux
      - architecture: ppc64le
        digest: sha256:65949e3a80349cdc42acd8c5b34cde6ebc3241eae8daaeea458498fedb359a6a
        manifestSize: 1252
        mediaType: application/vnd.docker.distribution.manifest.v2+json
        os: linux
      - architecture: s390x
        digest: sha256:75f4fa21224b5d5d511bea8f92dfa8e1c00231e5c81ab95e83c3013d245d1719
        manifestSize: 1252
        mediaType: application/vnd.docker.distribution.manifest.v2+json
        os: linux

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.