5.2. OpenShift Virtualization 구성 요소를 위한 노드 지정


베어 메탈 노드의 VM(가상 머신)의 기본 예약이 적합합니다. 선택적으로 노드 배치 규칙을 구성하여 OpenShift Virtualization Operator, 워크로드 및 컨트롤러를 배포할 노드를 지정할 수 있습니다.

참고

OpenShift Virtualization을 설치한 후 일부 구성 요소에 대한 노드 배치 규칙을 구성할 수 있지만 워크로드에 대한 노드 배치 규칙을 구성하려면 가상 머신이 존재할 수 없습니다.

5.2.1. OpenShift Virtualization 구성 요소의 노드 배치 규칙 정보

다음 작업에 노드 배치 규칙을 사용할 수 있습니다.

  • 가상화 워크로드를 위한 노드에만 가상 머신을 배포합니다.
  • 인프라 노드에만 Operator를 배포합니다.
  • 워크로드 분리를 유지 관리합니다.

오브젝트에 따라, 다음 규칙 유형 중 하나 이상을 사용할 수 있습니다.

nodeSelector
이 필드에서 지정하는 키-값 쌍으로 라벨이 지정된 노드에 Pod를 예약할 수 있습니다. 노드에는 나열된 모든 쌍과 정확히 일치하는 라벨이 있어야 합니다.
유사성
더 많은 표현 구문을 사용하여 노드와 Pod의 일치 규칙을 설정할 수 있습니다. 유사성을 사용하면 규칙 적용 방법을 보다 자세하게 설정할 수 있습니다. 예를 들어 규칙은 요구 사항이 아닌 기본 설정임을 지정할 수 있습니다. 규칙이 기본 설정인 경우 규칙이 충족되지 않으면 Pod가 계속 예약됩니다.
허용 오차
일치하는 테인트가 있는 노드에 Pod를 예약할 수 있습니다. 테인트가 노드에 적용되는 경우, 해당 노드는 테인트를 허용하는 Pod만 허용합니다.

5.2.2. 노드 배치 규칙 적용

명령줄을 사용하여 Subscription,HyperConverged 또는 HostPathProvisioner 오브젝트를 편집하여 노드 배치 규칙을 적용할 수 있습니다.

사전 요구 사항

  • oc CLI 툴이 설치되어 있습니다.
  • 클러스터 관리자 권한으로 로그인되어 있습니다.

프로세스

  1. 다음 명령을 실행하여 기본 편집기에서 오브젝트를 편집합니다.

    $ oc edit <resource_type> <resource_name> -n {CNVNamespace}
  2. 파일을 저장하여 변경 사항을 적용합니다.

5.2.3. 노드 배치 규칙 예

Subscription,HyperConverged 또는 HostPathProvisioner 오브젝트를 편집하여 OpenShift Virtualization 구성 요소에 대한 노드 배치 규칙을 지정할 수 있습니다.

5.2.3.1. 서브스크립션 오브젝트 노드 배치 규칙 예

OLM이 OpenShift Virtualization Operator를 배포하는 노드를 지정하려면, OpenShift Virtualization 설치 중에 서브스크립션 오브젝트를 편집합니다.

현재는 웹 콘솔을 사용하여 서브스크립션 오브젝트에 대한 노드 배치 규칙을 구성할 수 없습니다.

Subscription 오브젝트는 유사성 노드 pplacement 규칙을 지원하지 않습니다.

nodeSelector 규칙이 있는 Subscription 오브젝트의 예

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: hco-operatorhub
  namespace: openshift-cnv
spec:
  source: redhat-operators
  sourceNamespace: openshift-marketplace
  name: kubevirt-hyperconverged
  startingCSV: kubevirt-hyperconverged-operator.v4.14.4
  channel: "stable"
  config:
    nodeSelector:
      example.io/example-infra-key: example-infra-value 1

1
OLM은 example.io/example-infra-key = example-infra-value 레이블이 지정된 노드에 OpenShift Virtualization Operator를 배포합니다.

허용 오차 규칙이 있는 Subscription 오브젝트의 예

apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: hco-operatorhub
  namespace: openshift-cnv
spec:
  source:  redhat-operators
  sourceNamespace: openshift-marketplace
  name: kubevirt-hyperconverged
  startingCSV: kubevirt-hyperconverged-operator.v4.14.4
  channel: "stable"
  config:
    tolerations:
    - key: "key"
      operator: "Equal"
      value: "virtualization" 1
      effect: "NoSchedule"

1
OLM은 key = virtualization:NoSchedule 테인트에 레이블이 지정된 노드에 OpenShift Virtualization Operator를 배포합니다. 허용 오차가 일치하는 Pod만 이러한 노드에 예약됩니다.

5.2.3.2. HyperConverged 오브젝트 노드 배치 규칙 예

OpenShift Virtualization이 구성 요소를 배포하는 노드를 지정하려면 OpenShift Virtualization을 설치하는 동안 생성한 HyperConverged CR(사용자 정의 리소스) 파일에서 nodePlacement 오브젝트를 편집할 수 있습니다.

nodeSelector 규칙이 있는 HyperConverged 오브젝트의 예

apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
  name: kubevirt-hyperconverged
  namespace: openshift-cnv
spec:
  infra:
    nodePlacement:
      nodeSelector:
        example.io/example-infra-key: example-infra-value 1
  workloads:
    nodePlacement:
      nodeSelector:
        example.io/example-workloads-key: example-workloads-value 2

1
인프라 리소스는 example.io/example-infra-key = example-infra-value 레이블이 지정된 노드에 배치됩니다.
2
워크로드는 example.io/example-workloads-key = example-workloads-value 라벨이 지정된 노드에 배치됩니다.

유사성 규칙이 있는 HyperConverged 오브젝트의 예

apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
  name: kubevirt-hyperconverged
  namespace: openshift-cnv
spec:
  infra:
    nodePlacement:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: example.io/example-infra-key
                operator: In
                values:
                - example-infra-value 1
  workloads:
    nodePlacement:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: example.io/example-workloads-key 2
                operator: In
                values:
                - example-workloads-value
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: example.io/num-cpus
                operator: Gt
                values:
                - 8 3

1
인프라 리소스는 example.io/example-infra-key = example-value 레이블이 지정된 노드에 배치됩니다.
2
워크로드는 example.io/example-workloads-key = example-workloads-value 라벨이 지정된 노드에 배치됩니다.
3
워크로드에 9개 이상의 CPU를 사용하는 것이 좋지만, 사용할 수 없는 경우에도 Pod가 예약됩니다.

허용 오차 규칙이 있는 HyperConverged 오브젝트의 예

apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
  name: kubevirt-hyperconverged
  namespace: openshift-cnv
spec:
  workloads:
    nodePlacement:
      tolerations: 1
      - key: "key"
        operator: "Equal"
        value: "virtualization"
        effect: "NoSchedule"

1
OpenShift Virtualization 구성 요소로 예약된 노드는 key = virtualization:NoSchedule 테인트로 레이블이 지정됩니다. 허용 오차가 일치하는 Pod만 예약된 노드에 예약됩니다.

5.2.3.3. HostPathProvisioner 오브젝트 노드 배치 규칙의 예

직접 또는 웹 콘솔을 사용하여 HostPathProvisioner 오브젝트를 편집할 수 있습니다.

주의

동일한 노드에 hostpath 프로비전 프로그램 및 OpenShift Virtualization 구성 요소를 예약해야 합니다. 예약하지 않으면 hostpath 프로비전 프로그램을 사용하는 가상화 Pod를 실행할 수 없습니다. 가상 머신을 실행할 수 없습니다.

HPP(Hostpath provisioner) 스토리지 클래스를 사용하여 VM(가상 머신)을 배포한 후 노드 선택기를 사용하여 동일한 노드에서 hostpath 프로비저너 Pod를 제거할 수 있습니다. 그러나 VM을 삭제하기 전에 먼저 특정 노드의 경우 해당 변경 사항을 되돌리고 Pod가 실행될 때까지 기다려야 합니다.

hostpath 프로비전 프로그램을 설치할 때 생성하는 HostPathProvisioner 오브젝트의 spec.workload 필드에 nodeSelector,affinity 또는 tolerations 를 지정하여 노드 배치 규칙을 구성할 수 있습니다.

nodeSelector 규칙이 있는 HostPathProvisioner 오브젝트의 예

apiVersion: hostpathprovisioner.kubevirt.io/v1beta1
kind: HostPathProvisioner
metadata:
  name: hostpath-provisioner
spec:
  imagePullPolicy: IfNotPresent
  pathConfig:
    path: "</path/to/backing/directory>"
    useNamingPrefix: false
  workload:
    nodeSelector:
      example.io/example-workloads-key: example-workloads-value 1

1
워크로드는 example.io/example-workloads-key = example-workloads-value 라벨이 지정된 노드에 배치됩니다.

5.2.4. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.