4.4. 노드 유사성 규칙을 사용하여 노드에 대한 Pod 배치 제어
유사성은 예약할 노드를 제어하는 Pod의 속성입니다.
OpenShift Container Platform 노드 유사성은 스케줄러에서 Pod를 배치할 수 있는 위치를 결정하는 데 사용하는 규칙 집합입니다. 규칙은 노드의 사용자 정의 라벨과 Pod에 지정된 라벨 선택기를 사용하여 정의합니다.
4.4.1. 노드 유사성 이해 링크 복사링크가 클립보드에 복사되었습니다!
노드 유사성을 사용하면 Pod에서 Pod를 배치할 수 있는 노드 그룹에 대한 유사성을 지정할 수 있습니다. 노드는 배치를 제어할 수 없습니다.
예를 들어 특정 CPU 또는 특정 가용성 영역이 있는 노드에서만 실행하도록 Pod를 구성할 수 있습니다.
노드 유사성 규칙에는 필수 및 기본 두 가지의 유형이 있습니다.
노드에 Pod를 예약하려면 먼저 필수 규칙을 충족해야 합니다. 기본 규칙은 규칙이 충족되는 경우 스케줄러가 규칙을 적용하려고 하지만 반드시 적용되는 것은 아닙니다.
노드의 라벨이 런타임에 변경되어 Pod에 대한 노드 유사성 규칙이 더 이상 충족되지 않으면 Pod가 해당 노드에서 계속 실행됩니다.
노드 유사성은 Pod
사양 파일을 통해 구성합니다. 필수 규칙, 기본 규칙 또는 둘 다 지정할 수 있습니다. 둘 다 지정하는 경우 노드는 먼저 필수 규칙을 충족한 다음 기본 규칙을 충족하려고 합니다.
다음 예제는 키가 e2e-az-NorthSouth
이고 값이 e2e-az-North
또는 e2e-az-South
인 라벨이 있는 노드에 Pod를 배치해야 하는 규칙이 있는 Pod
사양입니다.
노드 유사성 필수 규칙이 있는 Pod 구성 파일의 예
다음 예제는 Pod에 대해 키가 e2e-az-EastWest
이고 값이 e2e-az-East
또는 e2e-az-West
인 라벨이 있는 노드를 선호하는 기본 규칙이 있는 노드 사양입니다.
노드 유사성 기본 규칙이 있는 Pod 구성 파일의 예
명시적인 노드 유사성 방지 개념은 없지만 NotIn
또는 DoesNotExist
연산자를 사용하여 해당 동작을 복제합니다.
노드 유사성 및 노드 선택기를 동일한 Pod 구성으로 사용하는 경우 다음 사항에 유의하십시오.
-
nodeSelector
와nodeAffinity
를 둘 다 구성하는 경우 Pod를 후보 노드에 예약하기 위해서는 두 상태를 모두 충족해야 합니다. -
nodeAffinity
유형과 연결된nodeSelectorTerms
를 여러 개 지정하는 경우nodeSelectorTerms
중 하나를 충족하면 Pod를 노드에 예약할 수 있습니다. -
nodeSelectorTerms
와 연결된matchExpressions
를 여러 개 지정하는 경우 모든matchExpressions
를 충족할 때만 Pod를 노드에 예약할 수 있습니다.
4.4.2. 필수 노드 유사성 규칙 구성 링크 복사링크가 클립보드에 복사되었습니다!
노드에 Pod를 예약하려면 먼저 필수 규칙을 충족해야 합니다.
프로세스
다음 단계에서는 하나의 노드 및 스케줄러에서 해당 노드에 배치해야 하는 하나의 Pod를 생성하는 간단한 구성을 보여줍니다.
oc label node
명령을 사용하여 노드에 라벨을 추가합니다.oc label node node1 e2e-az-name=e2e-az1
$ oc label node node1 e2e-az-name=e2e-az1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보다음 YAML을 적용하여 레이블을 추가할 수도 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod 사양에서 특정 라벨을 사용하여 Pod를 생성합니다.
다음 콘텐츠를 사용하여 YAML 파일을 생성합니다.
참고예약된 Pod에 선호도를 직접 추가할 수 없습니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod를 생성합니다.
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3. 기본 노드 유사성 규칙 구성 링크 복사링크가 클립보드에 복사되었습니다!
기본 규칙은 규칙이 충족되는 경우 스케줄러가 규칙을 적용하려고 하지만 반드시 적용되는 것은 아닙니다.
프로세스
다음 단계에서는 하나의 노드 및 스케줄러에서 해당 노드에 배치하려고 하는 하나의 Pod를 생성하는 간단한 구성을 보여줍니다.
oc label node
명령을 사용하여 노드에 라벨을 추가합니다.oc label node node1 e2e-az-name=e2e-az3
$ oc label node node1 e2e-az-name=e2e-az3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 라벨이 있는 포드를 만듭니다.
다음 콘텐츠를 사용하여 YAML 파일을 생성합니다.
참고예약된 Pod에 직접 친화성을 추가할 수 없습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 포드 친화성을 추가합니다.
- 2
preferredDuringSchedulingIgnoredDuringExecution
매개변수를 구성합니다.- 3
- 1~100 사이의 숫자로 노드의 가중치를 지정합니다. 가중치가 높은 노드가 우선합니다.
- 4
- 충족해야 하는
키
와값을
지정합니다. 편집한 노드에 새 Pod를 예약하려면 노드의 레이블과 동일한키
와값
매개변수를 사용하세요. - 5
연산자를
지정합니다. 연산자는In
,NotIn
,Exists
또는DoesNotExist
일 수 있습니다. 예를 들어 노드에 라벨이 있어야 하는 경우 연산자In
을 사용합니다.
Pod를 생성합니다.
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.4. 노드 유사성 규칙 샘플 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 노드 유사성을 보여줍니다.
4.4.4.1. 일치하는 라벨이 있는 노드 유사성 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 일치하는 라벨이 있는 노드 및 Pod의 노드 유사성을 보여줍니다.
Node1 노드에는 라벨
zone:us
가 있습니다.oc label node node1 zone=us
$ oc label node node1 zone=us
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보또는 다음 YAML을 적용하여 레이블을 추가할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod-s1 Pod에는 필수 노드 유사성 규칙에 따라
zone
및us
키/값 쌍이 있습니다.cat pod-s1.yaml
$ cat pod-s1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod-s1 Pod를 Node1에 예약할 수 있습니다.
oc get pod -o wide
$ oc get pod -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE IP NODE pod-s1 1/1 Running 0 4m IP1 node1
NAME READY STATUS RESTARTS AGE IP NODE pod-s1 1/1 Running 0 4m IP1 node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.4.2. 일치하는 라벨이 없는 노드 유사성 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 일치하는 라벨이 없는 노드 및 Pod의 노드 유사성을 보여줍니다.
Node1 노드에는 라벨
zone:emea
가 있습니다.oc label node node1 zone=emea
$ oc label node node1 zone=emea
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보또는 다음 YAML을 적용하여 레이블을 추가할 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod-s1 Pod에는 필수 노드 유사성 규칙에 따라
zone
및us
키/값 쌍이 있습니다.cat pod-s1.yaml
$ cat pod-s1.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pod-s1 Pod는 Node1에 예약할 수 없습니다.
oc describe pod pod-s1
$ oc describe pod pod-s1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.5. 노드 친화성을 사용하여 운영자가 설치된 위치 제어 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Operator를 설치하면 OpenShift Container Platform은 작업자 노드 중 하나에 Operator Pod를 무작위로 설치합니다. 하지만 특정 노드나 노드 세트에 해당 Pod를 예약하려는 상황이 있을 수도 있습니다.
다음 예에서는 Operator Pod를 특정 노드 또는 노드 세트에 예약하려는 상황을 설명합니다.
-
운영자가
amd64
또는arm64
와 같은 특정 플랫폼을 필요로 하는 경우 - 운영자가 Linux나 Windows와 같은 특정 운영 체제를 필요로 하는 경우
- 동일한 호스트 또는 동일한 랙에 있는 호스트에서 함께 작업하는 운영자를 예약하려는 경우
- 네트워크 또는 하드웨어 문제로 인한 가동 중지를 방지하기 위해 인프라 전반에 걸쳐 운영자를 분산하려는 경우
Operator의 구독
개체에 노드 친화성 제약 조건을 추가하여 Operator Pod가 설치되는 위치를 제어할 수 있습니다.
다음 예제에서는 노드 친화성을 사용하여 클러스터의 특정 노드에 Custom Metrics Autoscaler Operator의 인스턴스를 설치하는 방법을 보여줍니다.
특정 노드에 Operator Pod를 배치하는 노드 친화성 예
- 1
- 운영자의 Pod가
ip-10-0-163-94.us-west-2.compute.internal
이라는 노드에 예약되어야 하는 노드 친화성입니다.
특정 플랫폼이 있는 노드에 Operator Pod를 배치하는 노드 친화성 예
- 1
- 운영자의 Pod가
kubernetes.io/arch=arm64
및kubernetes.io/os=linux
레이블이 있는 노드에 예약되어야 하는 노드 친화성입니다.
프로세스
Operator Pod의 배치를 제어하려면 다음 단계를 완료하세요.
- 평소와 같이 Operator를 설치합니다.
- 필요한 경우, 친화성에 적절하게 응답할 수 있도록 노드에 레이블이 지정되었는지 확인하세요.
연산자
구독
객체를 편집하여 친화성을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
nodeAffinity를
추가합니다.
검증
특정 노드에 포드가 배포되었는지 확인하려면 다음 명령을 실행하세요.
$ oc get pods -o wide
$ oc get pods -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES custom-metrics-autoscaler-operator-5dcc45d656-bhshg 1/1 Running 0 50s 10.131.0.20 ip-10-0-185-229.ec2.internal <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES custom-metrics-autoscaler-operator-5dcc45d656-bhshg 1/1 Running 0 50s 10.131.0.20 ip-10-0-185-229.ec2.internal <none> <none>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow