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