4.4.6. 노드 유사성을 사용하여 Operator가 설치된 위치 제어
기본적으로 Operator를 설치할 때 OpenShift Container Platform은 Operator Pod를 임의로 작업자 노드 중 하나에 설치합니다. 그러나 특정 노드 또는 노드 세트에 해당 Pod를 예약하려는 경우가 있을 수 있습니다.
다음 예제에서는 Operator Pod를 특정 노드 또는 노드 세트에 예약해야 하는 상황을 설명합니다.
-
Operator에
amd64또는arm64와 같은 특정 플랫폼이 필요한 경우 - Operator에 Linux 또는 Windows와 같은 특정 운영 체제가 필요한 경우
- 동일한 호스트에서 또는 동일한 랙에 있는 호스트에서 예약된 Operator를 원하는 경우
- 네트워크 또는 하드웨어 문제로 인해 다운타임을 방지하기 위해 인프라 전체에 Operator를 분산하려는 경우
Operator의 Subscription 오브젝트에 노드 유사성, Pod 유사성 또는 Pod 유사성 방지 제약 조건을 추가하여 Operator Pod가 설치된 위치를 제어할 수 있습니다. 노드 유사성은 스케줄러에서 Pod를 배치할 수 있는 위치를 결정하는 데 사용하는 규칙 세트입니다. Pod 유사성을 사용하면 관련 Pod가 동일한 노드에 예약되도록 할 수 있습니다. Pod 유사성 방지를 사용하면 노드에서 Pod가 예약되지 않도록 할 수 있습니다.
Operator의 Subscription 오브젝트에 노드 유사성 제약 조건을 추가하여 Operator Pod가 설치된 위치를 제어할 수 있습니다.
다음 예제에서는 노드 유사성 또는 Pod 유사성 방지를 사용하여 클러스터의 특정 노드에 Custom Metrics Autoscaler Operator 인스턴스를 설치하는 방법을 보여줍니다. 다음 예제에서는 노드 유사성을 사용하여 클러스터의 특정 노드에 Custom Metrics Autoscaler Operator 인스턴스를 설치하는 방법을 보여줍니다.
Operator Pod를 특정 노드에 배치하는 노드 유사성 예
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: openshift-custom-metrics-autoscaler-operator
namespace: openshift-keda
spec:
name: my-package
source: my-operators
sourceNamespace: operator-registries
config:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- ip-10-0-163-94.us-west-2.compute.internal
#...
- 1
ip-10-0-163-94.us-west-2.compute.internal이라는 노드에 Operator의 Pod를 예약해야 하는 노드 유사성입니다.
특정 플랫폼이 있는 노드에 Operator Pod를 배치하는 노드 유사성 예
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: openshift-custom-metrics-autoscaler-operator
namespace: openshift-keda
spec:
name: my-package
source: my-operators
sourceNamespace: operator-registries
config:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/arch
operator: In
values:
- arm64
- key: kubernetes.io/os
operator: In
values:
- linux
#...
- 1
kubernetes.io/arch=arm64및kubernetes.io/os=linux라벨이 있는 노드에 Operator의 Pod를 예약해야 하는 노드 유사성입니다.
프로세스
Operator Pod 배치를 제어하려면 다음 단계를 완료합니다.
- Operator를 정상적으로 설치합니다.
- 필요한 경우 선호도에 올바르게 응답하도록 노드에 레이블이 지정되어 있는지 확인합니다.
Operator
Subscription오브젝트를 편집하여 선호도를 추가합니다.apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-custom-metrics-autoscaler-operator namespace: openshift-keda spec: name: my-package source: my-operators sourceNamespace: operator-registries config: affinity:1 nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - ip-10-0-185-229.ec2.internal #...- 1
nodeAffinity,podAffinity또는podAntiAffinity를 추가합니다. 선호도 생성에 대한 정보는 다음 추가 리소스 섹션을 참조하십시오.nodeAffinity를 추가합니다.
검증
Pod가 특정 노드에 배포되도록 하려면 다음 명령을 실행합니다.
$ oc get pods -o wide출력 예
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>