▪︎ Priority Class
- 파드 배포시 보류 상태가 되어지는 여러가지 요인들이 존재한다.
- Node에 충분한 리소스가 존재하지 않는 경우
- 배포하고자 하는 파드의 port를 실행 중인 어떤 파드가 사용 중인 경우
- 이러한 경우에도 중요한 파드는 배포되어져야만 하는 상황이 발생한다.
- 파드는 우선 순위를 통해 스케줄러가 스케줄링 할 수 있다.
🚨 리소스를 매우 많이 사용하는 파드를 악의적으로 생성하여 높은 우선 순위 설정을 통해 기존 파드의 동작을 모두 멈춰버리는
공격이 가능하다. 따라서 관리자는 ResourceQuota나 RangeLimit의 조합을 통해 사전에 위와 같은 공격을 방지해야 한다.
- 아래와 같은 매니페스트를 통해 high, medium, low의 PriorityClass를 생성하였다.
apiVersion: v1
kind: List
items:
- apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metatdata:
name: "high"
value: 1000000
globalDefault: false
description: "~~~"
- apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metatdata:
name: "medium"
value: 500000
globalDefault: false
description: "~~~"
- apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metatdata:
name: "low"
value: 100000
globalDefault: false
description: "~~~"
- values
- 높으면 높을 수록 우선 순위가 높아진다.
- 1,000,000,000가 MAX
- globalDefault
- 해당 Priority Class가 파드 생성시 Default 값으로 설정되는지 여부
- true인 경우 해당 Priority Class는 클러스터 내에 하나만 존재할 수 있음
- 생성 !
- priority class가 네임스페이스별로 생성되는지 확인해보았는데 클러스터 통합으로 생성되었다.
▪︎ Preemption Policy
- 보통 preemptionPolicy 필드 옵션이 없는 경우 파드의 우선 순위가 낮으면 스케줄링의 비정상 상황일때 파드가 축출되며 삭제된다.
- preemptionPolicy: Never의 옵션을 가지고 있는 파드는 비정상 상황에도 삭제되지 않고 높은 우선 순위를 가지고 있는 파드는 스케줄링이 정상 상태로 돌아갈 때까지 대기한다.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
...
preemptionPolicy: Never
...
▪︎ Default Priority Class
- 기본 Priority Class
- system-cluster-critical
- system-node-critical
- 보시다시피 따로 설정하지 않았는데 기본적으로 PriorityClass에 구성되어 있는 것을 확인할 수 있다.
- 파드를 중요(Critical)로 표시하는 우선 순위 기본 클래스
- system-node-critical의 우선순위가 system-cluster-critical보다 높다.
- system-node-critical(2000001000) > system-cluster-critical(2000000000)
⭐️ 보나스
- 만약 파드에 PriorityClass가 명시가 되지 않았을 경우 value값은 0이며 우선 순위가 최하가 된다.
- 대신 preemptionPolicy 필드가 True인 경우 해당 PriorityClass의 value 값이 default 값으로 파드에 지정된다.
ref.
'Kubernetes' 카테고리의 다른 글
컨테이너에서 JVM은 왜 메모리 먹는 하마였을까? (1) | 2022.11.10 |
---|---|
리소스의 메모리와 CPU 자원 관리 (0) | 2022.11.10 |
Pod 안전하게 생성/배포 및 QoS 정책 설정 (0) | 2022.11.10 |
K8S Service Network - 실습 (0) | 2022.11.10 |
K8S Service Network (0) | 2022.11.08 |