16.5.4. 프로젝트에 Pod 배치 제어


Pod 노드 선택기 승인 컨트롤러를 사용하면 특정 프로젝트와 연결된 노드에 Pod를 강제 적용하고 해당 노드에서 Pod가 예약되지 않도록 할 수 있습니다.

Pod 노드 선택기 승인 컨트롤러는 Pod 에 지정된 프로젝트 및 노드 선택기의 라벨을 사용하여 Pod를 배치할 수 있는 위치를 결정합니다. 포드의 노드 선택기가 프로젝트의 라벨과 일치하는 경우에만 프로젝트와 연결된 노드에 새 포드가 배치됩니다.

Pod가 생성되면 노드 선택기가 Pod에 병합되므로 Pod 사양에 원래 사양에 포함된 라벨과 노드 선택기의 새 라벨이 포함됩니다. 아래 예제에서는 병합 효과를 보여줍니다.

Pod 노드 선택기 승인 컨트롤러를 사용하면 특정 프로젝트에서 허용되는 라벨 목록을 생성할 수도 있습니다. 이 목록은 개발자가 프로젝트에서 사용할 수 있는 레이블을 알 수 있도록 하는 허용 목록 역할을 하며 관리자에게 클러스터에서 레이블 지정을 더욱 효과적으로 제어할 수 있도록 합니다.

Pod 노드 선택기 승인 컨트롤러를 활성화하려면 다음을 수행합니다.

  1. 다음 방법 중 하나를 사용하여 Pod 노드 선택기 승인 컨트롤러 및 허용 목록을 구성합니다.

    • 마스터 구성 파일 /etc/origin/master/master-config.yaml에 다음을 추가합니다.

      admissionConfig:
        pluginConfig:
          PodNodeSelector:
            configuration:
              podNodeSelectorPluginConfig: 
      1
      
                clusterDefaultNodeSelector: "k3=v3" 
      2
      
                ns1: region=west,env=test,infra=fedora,os=fedora 
      3
      Copy to Clipboard Toggle word wrap
      1
      Pod 노드 선택기 승인 컨트롤러 플러그인을 추가합니다.
      2
      모든 노드의 기본 레이블을 생성합니다.
      3
      지정된 프로젝트에서 허용된 라벨의 화이트리스트를 생성합니다. 여기서 프로젝트는 ns1 이고 레이블은 뒤에 오는 key=value 쌍입니다.
    • 승인 컨트롤러 정보가 포함된 파일을 생성합니다.

      podNodeSelectorPluginConfig:
          clusterDefaultNodeSelector: "k3=v3"
           ns1: region=west,env=test,infra=fedora,os=fedora
      Copy to Clipboard Toggle word wrap

      그런 다음 마스터 구성에서 파일을 참조합니다.

      admissionConfig:
        pluginConfig:
          PodNodeSelector:
            location: <path-to-file>
      Copy to Clipboard Toggle word wrap
      참고

      프로젝트에 노드 선택기가 지정되지 않은 경우 기본 노드 선택기(clusterDefaultNodeSelector)를 사용하여 해당 프로젝트와 연결된 Pod가병합됩니다.

  2. 변경 사항을 적용하려면 OpenShift Container Platform을 다시 시작하십시오.

    # master-restart api
    # master-restart controllers
    Copy to Clipboard Toggle word wrap
  3. scheduler.alpha.kubernetes.io/node-selector 주석 및 라벨이 포함된 프로젝트 오브젝트를 생성합니다.

    apiVersion: v1
    kind: Namespace
    metadata
      name: ns1
      annotations:
        scheduler.alpha.kubernetes.io/node-selector: env=test,infra=fedora 
    1
    
    spec: {},
    status: {}
    Copy to Clipboard Toggle word wrap
    1
    프로젝트 레이블 선택기와 일치하도록 라벨을 생성하는 주석입니다. 여기서 키/값 레이블은 env=testinfra=fedora 입니다.
    참고

    Pod 노드 선택기 승인 컨트롤러를 사용하는 경우 프로젝트 노드 선택기를 설정하는 데 oc adm new-project <project-name> 을 사용할 수 없습니다. oc adm new-project myproject --node-selector='type=user-node,region=<region> 명령을 사용하여 프로젝트 노드 선택기를 설정하는 경우 OpenShift Container Platform은 NodeEnv 승인 플러그인에서 처리하는 openshift.io/node-selector 주석을 설정합니다.

  4. 노드 선택기에 라벨을 포함하는 Pod 사양을 생성합니다. 예를 들면 다음과 같습니다.

    apiVersion: v1
    kind: Pod
    metadata:
      labels:
        name: hello-pod
      name: hello-pod
    spec:
      containers:
        - image: "docker.io/ocpqe/hello-pod:latest"
          imagePullPolicy: IfNotPresent
          name: hello-pod
          ports:
            - containerPort: 8080
              protocol: TCP
          resources: {}
          securityContext:
            capabilities: {}
            privileged: false
          terminationMessagePath: /dev/termination-log
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      nodeSelector: 
    1
    
        env: test
        os: fedora
      serviceAccount: ""
    status: {}
    Copy to Clipboard Toggle word wrap
    1
    프로젝트 레이블과 일치하는 노드 선택기입니다.
  5. 프로젝트에서 Pod를 생성합니다.

    # oc create -f pod.yaml --namespace=ns1
    Copy to Clipboard Toggle word wrap
  6. 노드 선택기 레이블이 Pod 구성에 추가되었는지 확인합니다.

    get pod pod1 --namespace=ns1 -o json
    
    nodeSelector": {
     "env": "test",
     "infra": "fedora",
     "os": "fedora"
    }
    Copy to Clipboard Toggle word wrap

    노드 선택기는 Pod에 병합되고 Pod를 적절한 프로젝트에 예약해야 합니다.

프로젝트 사양에 지정되지 않은 라벨을 사용하여 Pod를 생성하는 경우 Pod가 노드에 예약되지 않습니다.

예를 들어 여기서 레이블 env: production 은 프로젝트 사양에 없습니다.

nodeSelector:
 "env: production"
 "infra": "fedora",
 "os": "fedora"
Copy to Clipboard Toggle word wrap

노드 선택기 주석이 없는 노드가 있는 경우 해당 노드에 Pod가 예약됩니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat