5.16.2. 다중 아키텍처 컴퓨팅 머신 및 Operator 워크로드의 노드 유사성 규칙 정보


Operator 워크로드를 다중 아키텍처 컴퓨팅 머신에서 실행할 수 있도록 노드 유사성 규칙을 설정해야 합니다. 노드 유사성은 스케줄러에서 Pod 배치를 정의하는 데 사용하는 규칙 세트입니다. 노드 유사성 규칙을 설정하면 Operator의 워크로드가 호환되는 아키텍처가 있는 컴퓨팅 머신에 예약됩니다.

Operator가 특정 아키텍처에서 더 잘 수행하는 경우 기본 노드 유사성 규칙을 설정하여 지정된 아키텍처가 있는 머신에 Pod를 예약할 수 있습니다.

자세한 내용은 "다중 아키텍처 컴퓨팅 머신이 있는 클러스터 수락" 및 "노드 선호도 규칙을 사용하여 노드에 Pod 배치 제어"를 참조하십시오.

Operator에서 다중 아키텍처 컴퓨팅 머신을 지원하려면 Operator의 필수 노드 유사성 규칙을 정의해야 합니다.

사전 요구 사항

  • Operator SDK 1.36.1 이상을 사용하여 Operator 프로젝트를 생성하거나 유지 관리합니다.
  • Operator에서 지원하는 플랫폼을 정의하는 매니페스트 목록입니다.

프로세스

  1. Pod 사양 및 Pod 템플릿 사양 오브젝트를 정의하는 Kubernetes 매니페스트에서 Operator 프로젝트를 검색합니다.

    중요

    오브젝트 유형 이름은 YAML 파일에 선언되지 않으므로 Kubernetes 매니페스트에서 필수 컨테이너 필드를 찾습니다. Pod 사양 및 Pod 템플릿 사양 오브젝트를 둘 다 지정하는 경우 containers 필드가 필요합니다.

    Pod ,Deployment,DaemonSet, StatefulSet 과 같은 오브젝트를 포함하여 Pod 사양 또는 Pod 템플릿 사양을 정의하는 모든 Kubernetes 매니페스트에서 노드 유사성 규칙을 설정해야 합니다.

    Kubernetes 매니페스트의 예

    apiVersion: v1
    kind: Pod
    metadata:
      name: s1
    spec:
      containers:
        - name: <container_name>
          image: docker.io/<org>/<image_name>

  2. 다음 예와 유사하게 Pod 사양 및 Pod 템플릿 사양 오브젝트를 정의하는 Kubernetes 매니페스트에 필요한 노드 유사성 규칙을 설정합니다.

    Kubernetes 매니페스트의 예

    apiVersion: v1
    kind: Pod
    metadata:
      name: s1
    spec:
      containers:
        - name: <container_name>
          image: docker.io/<org>/<image_name>
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution: 
    1
    
            nodeSelectorTerms: 
    2
    
            - matchExpressions: 
    3
    
              - key: kubernetes.io/arch 
    4
    
                operator: In
                values:
                - amd64
                - arm64
                - ppc64le
                - s390x
              - key: kubernetes.io/os 
    5
    
                operator: In
                values:
                    - linux

    1
    필요한 규칙을 정의합니다.
    2
    nodeAffinity 유형과 연결된 nodeSelectorTerms를 여러 개 지정하는 경우 nodeSelectorTerms 중 하나를 충족하면 Pod를 노드에 예약할 수 있습니다.
    3
    nodeSelectorTerms와 연결된 matchExpressions를 여러 개 지정하는 경우 모든 matchExpressions를 충족할 때만 Pod를 노드에 예약할 수 있습니다.
    4
    매니페스트 목록에 정의된 아키텍처를 지정합니다.
    5
    매니페스트 목록에 정의된 운영 체제를 지정합니다.
  3. 동적으로 생성된 워크로드를 사용하는 Go 기반 Operator 프로젝트는 Operator 논리에 Pod 사양 및 Pod 템플릿 사양 오브젝트를 포함할 수 있습니다.

    프로젝트에 Operator 논리에 Pod 사양 또는 Pod 템플릿 사양 오브젝트가 포함된 경우 다음 예와 유사한 Operator의 논리를 편집합니다. 다음 예제에서는 Go API를 사용하여 PodSpec 오브젝트를 업데이트하는 방법을 보여줍니다.

    Template: corev1.PodTemplateSpec{
        ...
        Spec: corev1.PodSpec{
            Affinity: &corev1.Affinity{
                NodeAffinity: &corev1.NodeAffinity{
                    RequiredDuringSchedulingIgnoredDuringExecution: &corev1.NodeSelector{
                        NodeSelectorTerms: []corev1.NodeSelectorTerm{
                            {
                                MatchExpressions: []corev1.NodeSelectorRequirement{
                                    {
                                        Key:      "kubernetes.io/arch",
                                        Operator: "In",
                                        Values:   []string{"amd64","arm64","ppc64le","s390x"},
                                    },
                                    {
                                        Key:      "kubernetes.io/os",
                                        Operator: "In",
                                        Values:   []string{"linux"},
                                    },
                                },
                            },
                        },
                    },
                },
            },
            SecurityContext: &corev1.PodSecurityContext{
                ...
            },
            Containers: []corev1.Container{{
                ...
            }},
        },

    다음과 같습니다.

    RequiredDuringSchedulingIgnoredDuringExecution
    필요한 규칙을 정의합니다.
    NodeSelectorTerms
    nodeAffinity 유형과 연결된 nodeSelectorTerms를 여러 개 지정하는 경우 nodeSelectorTerms 중 하나를 충족하면 Pod를 노드에 예약할 수 있습니다.
    MatchExpressions
    nodeSelectorTerms와 연결된 matchExpressions를 여러 개 지정하는 경우 모든 matchExpressions를 충족할 때만 Pod를 노드에 예약할 수 있습니다.
    kubernetes.io/arch
    매니페스트 목록에 정의된 아키텍처를 지정합니다.
    kubernetes.io/os
    매니페스트 목록에 정의된 운영 체제를 지정합니다.
주의

노드 유사성 규칙을 설정하지 않고 컨테이너가 호환되지 않는 아키텍처가 있는 컴퓨팅 머신에 예약된 경우 Pod가 실패하고 다음 이벤트 중 하나를 트리거합니다.

CrashLoopBackOff
이미지 매니페스트의 진입점이 실행되지 않고 로그에 exec 형식 오류 메시지가 출력되는 경우 발생합니다.
ImagePullBackOff
매니페스트 목록에 Pod가 예약되거나 노드 유사성 용어가 잘못된 값으로 설정된 아키텍처에 대한 매니페스트가 포함되지 않은 경우 발생합니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동