16.5.4. 프로젝트에 Pod 배치 제어
Pod 노드 선택기 승인 컨트롤러를 사용하면 특정 프로젝트와 연결된 노드에 Pod를 강제 적용하고 해당 노드에서 Pod가 예약되지 않도록 할 수 있습니다.
Pod 노드 선택기 승인 컨트롤러는 Pod 에 지정된 프로젝트 및 노드 선택기의 라벨을 사용하여 Pod를 배치할 수 있는 위치를 결정합니다. 포드의 노드 선택기가 프로젝트의 라벨과 일치하는 경우에만 프로젝트와 연결된 노드에 새 포드가 배치됩니다.
Pod가 생성되면 노드 선택기가 Pod에 병합되므로 Pod 사양에 원래 사양에 포함된 라벨과 노드 선택기의 새 라벨이 포함됩니다. 아래 예제에서는 병합 효과를 보여줍니다.
Pod 노드 선택기 승인 컨트롤러를 사용하면 특정 프로젝트에서 허용되는 라벨 목록을 생성할 수도 있습니다. 이 목록은 개발자가 프로젝트에서 사용할 수 있는 레이블을 알 수 있도록 하는 허용 목록 역할을 하며 관리자에게 클러스터에서 레이블 지정을 더욱 효과적으로 제어할 수 있도록 합니다.
Pod 노드 선택기 승인 컨트롤러를 활성화하려면 다음을 수행합니다.
다음 방법 중 하나를 사용하여 Pod 노드 선택기 승인 컨트롤러 및 허용 목록을 구성합니다.
마스터 구성 파일 /etc/origin/master/master-config.yaml에 다음을 추가합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 승인 컨트롤러 정보가 포함된 파일을 생성합니다.
podNodeSelectorPluginConfig: clusterDefaultNodeSelector: "k3=v3" ns1: region=west,env=test,infra=fedora,os=fedora
podNodeSelectorPluginConfig: clusterDefaultNodeSelector: "k3=v3" ns1: region=west,env=test,infra=fedora,os=fedora
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그런 다음 마스터 구성에서 파일을 참조합니다.
admissionConfig: pluginConfig: PodNodeSelector: location: <path-to-file>
admissionConfig: pluginConfig: PodNodeSelector: location: <path-to-file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고프로젝트에 노드 선택기가 지정되지 않은 경우 기본 노드 선택기(cluster
DefaultNodeSelector)를 사용하여 해당 프로젝트와 연결된 Pod가
병합됩니다.
변경 사항을 적용하려면 OpenShift Container Platform을 다시 시작하십시오.
master-restart api master-restart controllers
# master-restart api # master-restart controllers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scheduler.alpha.kubernetes.io/node-selector
주석 및 라벨이 포함된 프로젝트 오브젝트를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 프로젝트 레이블 선택기와 일치하도록 라벨을 생성하는 주석입니다. 여기서 키/값 레이블은
env=test
및infra=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
주석을 설정합니다.노드 선택기에 라벨을 포함하는 Pod 사양을 생성합니다. 예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 프로젝트 레이블과 일치하는 노드 선택기입니다.
프로젝트에서 Pod를 생성합니다.
oc create -f pod.yaml --namespace=ns1
# oc create -f pod.yaml --namespace=ns1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드 선택기 레이블이 Pod 구성에 추가되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 노드 선택기는 Pod에 병합되고 Pod를 적절한 프로젝트에 예약해야 합니다.
프로젝트 사양에 지정되지 않은 라벨을 사용하여 Pod를 생성하는 경우 Pod가 노드에 예약되지 않습니다.
예를 들어 여기서 레이블 env: production
은 프로젝트 사양에 없습니다.
nodeSelector: "env: production" "infra": "fedora", "os": "fedora"
nodeSelector:
"env: production"
"infra": "fedora",
"os": "fedora"
노드 선택기 주석이 없는 노드가 있는 경우 해당 노드에 Pod가 예약됩니다.