3장. 전용 노드 지정
Kubernetes 클러스터는 많은 가상 머신 또는 노드(일반적으로 2~20개 노드)에서 실행됩니다. Pod는 이러한 노드에서 예약할 수 있습니다. 새 Pod를 생성하거나 예약할 때 topology_spread_constraints
설정을 사용하여 예약 또는 생성될 때 새 Pod가 기본 노드에 배포되는 방법을 구성합니다.
해당 노드가 실패하면 해당 Pod에서 제공하는 서비스도 실패하므로 단일 노드에 Pod를 예약하지 마십시오.
자동화 작업 Pod에 대해 다른 노드에서 실행되도록 컨트롤 플레인 노드를 예약합니다. 컨트롤 플레인 Pod가 작업 Pod와 노드를 공유하는 경우 컨트롤 플레인이 리소스가 부족하여 전체 애플리케이션의 성능이 저하될 수 있습니다.
3.1. 특정 노드에 Pod 할당
Operator에서 생성한 자동화 컨트롤러 Pod를 특정 노드 하위 집합에서 실행하도록 제한할 수 있습니다.
-
node_selector
및postgres_selector
는 지정된 모든 키 또는 값, 쌍과 일치하는 노드에서만 실행되도록 자동화 컨트롤러 Pod를 제한합니다. -
허용 오차
및postgres_tolerations
를 사용하면 자동화 컨트롤러 Pod를 일치하는 테인트가 있는 노드에 예약할 수 있습니다. 자세한 내용은 Kubernetes 문서 의 테인트 및 허용 오차를 참조하십시오.
다음 표는 YAML의 자동화 컨트롤러 사양 섹션에 설정할 수 있는 설정 및 필드(또는 OpenShift UI 양식 사용)를 보여줍니다.
이름 | 설명 | Default |
---|---|---|
| 가져올 이미지의 경로 | Postgres |
| 가져올 이미지 버전 | 13 |
| AutomationController Pod의 nodeSelector | “”’’ |
| AutomationController Pod의 topologySpreadConstraints | “”’’ |
| AutomationController Pod의 허용 오차 | “”’’ |
| AutomationController Pod의 주석 | “”’’ |
| Postgres Pod의 nodeSelector | “”’’ |
| Postgres Pod의 허용 오차 | “”’’ |
topology_spread_constraints
를 사용하면 노드 선택기와 일치하는 컴퓨팅 노드에서 컨트롤 플레인 Pod를 분배하는 데 도움이 될 수 있습니다. 예를 들어 이 옵션의 maxSkew
매개변수가 100
으로 설정된 경우 사용 가능한 노드에 최대 분배를 의미합니다. 따라서 일치하는 컴퓨팅 노드와 세 개의 포드가 있는 경우 하나의 포드가 각 계산 노드에 할당됩니다. 이 매개변수를 사용하면 컨트롤 플레인 Pod가 서로 리소스에 대해 경쟁하지 못하도록 합니다.
컨트롤러 Pod를 특정 노드로 제한하는 사용자 정의 구성의 예
spec: ... node_selector: | disktype: ssd kubernetes.io/arch: amd64 kubernetes.io/os: linux topology_spread_constraints: | - maxSkew: 100 topologyKey: "topology.kubernetes.io/zone" whenUnsatisfiable: "ScheduleAnyway" labelSelector: matchLabels: app.kubernetes.io/name: "<resourcename>" tolerations: | - key: "dedicated" operator: "Equal" value: "AutomationController" effect: "NoSchedule" postgres_selector: | disktype: ssd kubernetes.io/arch: amd64 kubernetes.io/os: linux postgres_tolerations: | - key: "dedicated" operator: "Equal" value: "AutomationController" effect: "NoSchedule"