파드 우선순위와 선점
PriorityClasses가 파드의 순위를 정하는 방식과 스케줄러가 중요한 워크로드를 위한 공간을 확보하려고 우선순위가 낮은 파드를 선점하는 방식을 배워 보세요.
파드 우선순위와 선점은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
모든 파드가 같은 것은 아닙니다
클러스터가 가득 차면 일부 워크로드가 다른 워크로드보다 더 중요합니다. 파드 우선순위를 사용하면 리소스를 차지하기 위한 경쟁에서 어떤 파드가 우선해야 하는지 쿠버네티스에 지정할 수 있습니다.
PriorityClass란 무엇인가
PriorityClass는 이름을 정수 값에 연결하는 클러스터 전체 객체입니다. 숫자가 높을수록 우선순위가 높습니다.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'파드에 우선순위 할당
파드는 priorityClassName을 사용하여 클래스에 참여합니다. 스케줄러는 참조된 클래스에서 숫자 값을 읽습니다.
apiVersion: v1
kind: Pod
metadata:
name: critical-app
spec:
priorityClassName: high-priority
containers:
- name: app
image: myapp:1.0우선순위가 스케줄링에 미치는 영향
여러 파드가 대기 중이면 스케줄러는 우선순위가 높은 파드를 먼저 배치하려고 합니다. 우선순위는 파드가 스케줄링되는 순서에 영향을 줍니다.
선점이란 무엇인가
클러스터가 가득 차서 우선순위가 높은 파드를 스케줄링할 수 없으면 스케줄러가 공간을 확보하기 위해 우선순위가 낮은 파드를 선점(축출)할 수 있습니다.
축출된 파드는 다시 대기 상태가 되며 다른 곳에서 다시 스케줄링될 수 있습니다.
선점 작동 방식
노드가 우선순위 100인 파드로 가득 찬 상태에서 우선순위 1000000인 파드가 도착한다고 가정해 보겠습니다. 스케줄러는 중요한 파드를 배치할 수 있도록 우선순위가 낮은 파드를 필요한 만큼 제거할 수 있습니다.
kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-app선점 비활성화
PriorityClass에서 preemptionPolicy: Never를 사용하면 다른 파드를 선점하지 않도록 설정할 수 있습니다. 이러한 파드는 여전히 우선순위 순서대로 스케줄링되지만 아무도 축출하지 않습니다.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-no-preempt
value: 1000000
preemptionPolicy: Never전역 기본값
PriorityClass에서 globalDefault: true를 설정하면 우선순위 클래스를 지정하지 않은 모든 파드에 해당 값이 적용됩니다. 전역 기본값이 될 수 있는 클래스는 하나뿐입니다.
기본 제공 시스템 클래스
쿠버네티스에는 필수 구성 요소를 위한 system-cluster-critical 및 system-node-critical와 같은 예약된 클래스가 포함되어 있습니다. 애플리케이션에 이러한 클래스를 재사용하지 마세요.
kubectl get priorityclass
# system-node-critical 2000001000
# system-cluster-critical 2000000000권장 사항
- 명확한 계층을 소수로 정의합니다(예: 중요, 일반, 일괄 처리)
- 정말 중요한 워크로드에만 선점을 사용합니다
- 정확한 스케줄링 결정을 위해 리소스 요청과 함께 사용합니다
- 모든 항목을 높은 우선순위로 설정하지 않습니다. 그러면 우선순위의 의미가 사라집니다
우선순위와 서비스 품질
우선순위는 스케줄링과 선점을 제어합니다. 요청과 제한에서 비롯되는 서비스 품질 클래스는 노드에 압박이 발생했을 때의 축출을 제어합니다. 서로 관련되어 있지만 별개의 메커니즘입니다.
간단한 확인
선점에 대해 이해한 내용을 테스트해 보세요.
복습
PriorityClass가 정수 값으로 파드의 순위를 정하고 스케줄링 순서에 영향을 준다는 것을 배웠습니다. 클러스터가 가득 차면 선점을 통해 중요한 파드가 우선순위가 낮은 파드를 축출할 수 있습니다. 명확한 계층을 몇 개만 사용하고 우선순위를 정확한 리소스 요청과 함께 사용하세요.
자주 묻는 질문
“파드 우선순위와 선점” 강의는 무료인가요?
네 — “파드 우선순위와 선점” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“파드 우선순위와 선점”에서 뭘 배우나요?
PriorityClasses가 파드의 순위를 정하는 방식과 스케줄러가 중요한 워크로드를 위한 공간을 확보하려고 우선순위가 낮은 파드를 선점하는 방식을 배워 보세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“파드 우선순위와 선점” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 리소스 요청 및 제한
- 노드 선택기 및 어피니티
- 테인트 및 톨러레이션
- 파드 우선순위와 선점