Red Hat Training
A Red Hat training course is available for OpenShift Container Platform
16.8.2. 노드 유사성 구성
Pod 사양 파일을 통해 노드 유사성을 구성합니다. 필수 규칙, 기본 규칙 또는 둘 다 지정할 수 있습니다. 둘 다 지정하는 경우 노드는 먼저 필수 규칙을 충족한 다음 기본 규칙을 충족하려고 합니다.
다음 예제는 키가 e2e-az-NorthSouth이고 값이 e2e-az- 인 레이블이 있는 노드에 Pod를 배치해야 하는 규칙이 있는 Pod 사양입니다. North 또는 e2e-az-South
노드 유사성 필수 규칙이 있는 Pod 구성 파일 샘플
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity: 1
requiredDuringSchedulingIgnoredDuringExecution: 2
nodeSelectorTerms:
- matchExpressions:
- key: e2e-az-NorthSouth 3
operator: In 4
values:
- e2e-az-North 5
- e2e-az-South 6
containers:
- name: with-node-affinity
image: docker.io/ocpqe/hello-pod
다음 예제는 Pod에 대해 키가 e2e-az-EastWest이고 값이 e2e-az-East 또는 e2e-az-West인 라벨이 있는 노드를 선호하는 기본 규칙이 있는 노드 사양입니다.
노드 유사성 기본 규칙이 있는 Pod 구성 파일 샘플
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity: 1
preferredDuringSchedulingIgnoredDuringExecution: 2
- weight: 1 3
preference:
matchExpressions:
- key: e2e-az-EastWest 4
operator: In 5
values:
- e2e-az-East 6
- e2e-az-West 7
containers:
- name: with-node-affinity
image: docker.io/ocpqe/hello-pod
명시적인 노드 유사성 방지 개념은 없지만 NotIn 또는 DoesNotExist 연산자를 사용하여 해당 동작을 복제합니다.
동일한 Pod 구성에서 노드 유사성 및 노드 선택기를 사용하는 경우 다음을 확인합니다.
-
nodeSelector와nodeAffinity를 둘 다 구성하는 경우 Pod를 후보 노드에 예약하기 위해서는 두 상태를 모두 충족해야 합니다. -
nodeAffinity유형과 연결된nodeSelectorTerms를 여러 개 지정하는 경우nodeSelectorTerms중 하나를 충족하면 Pod를 노드에 예약할 수 있습니다. -
nodeSelectorTerms와 연결된matchExpressions를 여러 개 지정하는 경우 모든matchExpressions를 충족할 때만 Pod를 노드에 예약할 수 있습니다.
16.8.2.1. 필수 노드 유사성 규칙 구성
노드에 Pod를 예약하려면 먼저 필수 규칙을 충족해야 합니다.
다음 단계에서는 하나의 노드 및 스케줄러에서 해당 노드에 배치해야 하는 하나의 Pod를 생성하는 간단한 구성을 보여줍니다.
노드 구성을 편집하거나
oc label node 명령을 사용하여 노드에 레이블을 추가합니다.$ oc label node node1 e2e-az-name=e2e-az1
참고클러스터에서 노드를 수정하려면 필요에 따라 노드 구성 맵을 업데이트합니다.
node-config.yaml파일을 수동으로 편집하지 마십시오.Pod 사양에서
nodeAffinity 스탠자를사용하여requiredDuringSchedulingIgnoredDuringExecution 매개변수를 구성합니다.-
충족해야 하는 키와 값을 지정합니다. 편집한 노드에 새 Pod를 예약하려면 노드의 라벨과 동일한
key및value매개변수를 사용합니다. operator를 지정합니다. 연산자는In,NotIn,Exists,DoesNotExist,Lt또는Gt일 수 있습니다. 예를 들어 노드에 라벨이 있어야 하는 경우 연산자In을 사용합니다.spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: e2e-az-name operator: In values: - e2e-az1 - e2e-az2
-
충족해야 하는 키와 값을 지정합니다. 편집한 노드에 새 Pod를 예약하려면 노드의 라벨과 동일한
Pod를 생성합니다.
$ oc create -f e2e-az2.yaml