
Priority Classes는 다양한 워크로드에 대한 우선순위를 정의하여 우선순위가 높은 워크로드가 항상 낮은 개체보다 높은 우선순위를 갖도록 한다.pod를 스케줄링 할수 없는 경우 scheduler는 우선순위가 낮은 워크로드를 종료 하여 이를 실행하려고 시도한다.Priority Classes는 네임스페이스가 아닌 객체로, 특정 네임스페이스 내에서 생성되거나 연결되지 않는다.pod에서 구성할 수 있다.$ kubectl get priorityclass
# priority-class.yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 100000000
description: “Priority class for mission critical pods”
# pod-definition.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
priorityClassName:
high-priority
priority class에 할당된 이 우선순위를 갖는것으로 가정priorityClassName이 없는 경우 모든 파드의 기본 우선순위를 정의하는데 사용할 수 있다.priorityClass로만 정의할 수 있다는 점도 유의global default property는 여러 기본값을 가질 수 없다priority class에서만 정의 한다
# priority-class.yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 100000000
description: “Priority class for mission critical pods”
globalDefault: true // 이 구문 주목
priority class에 정의된 선점 정책에 의해 정의됨preemptionPolicy: PreemptLowerPriority 필드가 정의되어 있다면 우선순위가 낮은 작업을 죽이고 그 자리를 대신할 수 있다.preeptionPolicy: neverpriority class의 pod는 비선점, 즉 다른 파드를 죽일 수 없으며 스케줄링 큐에서 스케줄링 될때까지 대기pod보다 우선 순위가 자동으로 더 높아진다💡 tips. 다음 명령을 사용하여 두 포드의 우선 순위 클래스를 비교할 수 있습니다
$ kubectl get pods -o custom-columns="NAME:.metadata.name,PRIORITY:.spec.priorityClassName"