Kubernetes Pod Priority And Priority Class
Kubernetes Pod Priority And Priority Class
개념
Pod들에 Priority를 설정해 Pod별 중요도를 나타낸다. 스케쥴링 시 Priority가 높은 Pod이 낮은 Pod보다 빨리 스케쥴링 될 확률이 높으며 다음과 같은 경우 Priority가 사용 된다.
- Node의 자원이 부족하여 Pod들을 Eviction할 경우
- Pod들의 CPU, Memory의 Request 설정값 대비 사용률이 동일할 경우, Priority에 의해 Eviction 우선순위가 결정된다.
- 새로운 Pod 스케쥴링 시에, Node 자원이 부족할 경우, 새로운 Pod의 Priority보다 더 낮은 Priority를 가지는 Pod들이 Preempt(선점, Eviction)될 수 있다.
PriorityClass
priority를 설정하는 object이다. 특정 namespace에 속하지 않으며, value 필드에 pod에 설정할 priority를 추가한다.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: sunny-priority
value: 1000000
globalDefault: false
description: "It's my first priority."
Fields 상세
- metadata.name
- 유효한 DNS subdomain name 규칙을 따라야한다.
- 최대 63자
- 소문자와 영숫자 또는
-
만 포함 - 영숫자로 시작
- 영숫자로 끝나야함
- ‘system-‘ prefix를 사용할 수 없음
- 유효한 DNS subdomain name 규칙을 따라야한다.
- value
- 값이 클수록 priority가 높음
- any 32-bit integer value smaller than or equal to 1 billion (10억)
- 10억 이상의 숫자들은 critical system Pod들에 의해 예약 되어 있음
- globalDefault
- priorityClassName없이 생성된 Pod의 PriorityClass value를 설정
- 생성 이전에 생성된 Pod들의 Priority들에는 영향이 없음
- 해당 값이 설정된 priority class는 시스템에 최대 하나만 존재 가능
- 설정된 priorityClass가 없다면, priorityClassName이 설정되지 않은 Pod의 기본 priority값은 0
- description
- 임의의 문자열
- 클러스터 사용자에게 priority class 사용 용도를 알려주기 위해 사용
Default System PriorityClass
Critical System Pod들을 위해 예약된 Default System Priority Class이다. 또한 kube-system namespace에 Pod을 생성할 경우만 사용이 가능하다.
- system-cluster-critical
- value : 2,000,000,000
- system-node-critical
- value : 2,000,001,000
Pod Priority 설정 방법
- Priority Class 생성
- priorityClassName을 Pod 명세에 추가 하여 Pod을 생성한다.
apiVersion: v1 kind: Pod metadata: name: nginx labels: app: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent priorityClassName: sunny-priority
참고
- Priority Class 삭제 시, 삭제된 PriorityClass를 사용하던 기존 Pod들은 그대로 남아 있다.
- Pod 명세에 priorityClassName을 설정하지 않을 경우
Priority
Admission Controller에 의해 자동으로 ‘0’ 또는 기본값으로 설정된 priority 값이 설정된다.
Source
- https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
Leave a comment