본문 바로가기
K8S

Kubernetes Windows 지원: 기능 비교와 스케줄링 방식 정리

by Rainbound-IT 2026. 1. 23.
반응형

이 글은 Kubernetes 공식 문서인

  • windows/intro
  • windows/user-guide

를 기준으로 Windows 지원을 기능 단위로 비교하고,
Windows 파드가 실제로 어떻게 스케줄링되는지를 기술적으로 정리한다.


1. Kubernetes Windows 지원 기능 비교

클러스터 구성 요소


 

구성 요소 Linux Windows
Control Plane ✅ 지원 ❌ 미지원
Worker Node ✅ 지원 ✅ 지원
혼합 클러스터 ✅ 가능
  • Windows는 Worker Node 전용
  • Control Plane 컴포넌트(kube-apiserver, etcd 등)는 Linux 필수

컨테이너 런타임


항목 Linux Windows
containerd
Docker ❌ (deprecated)
격리 방식 cgroups + namespaces Process isolation
Hyper-V container

파드 기능 지원 여부


 

기능 Linux Windows
privileged container
hostNetwork
hostPID / hostIPC
initContainer ⚠️ 제한
DaemonSet ⚠️ 제한
CSI Volume ⚠️ 일부
ConfigMap / Secret

2. Windows 파드 스케줄링 구조

기본 전제

  • Kubernetes 스케줄러는 OS를 자동 판별하지 않는다
  • Windows 컨테이너 이미지를 Linux 노드에 스케줄링할 수 있음
  • 결과: 즉시 파드 실패

👉 명시적 스케줄링 설정이 필수


3. OS 기반 스케줄링 방식

1️⃣ Node Label (기본)

모든 노드는 기본적으로 OS 라벨을 가진다.

 
kubernetes.io/os=linux kubernetes.io/os=windows

2️⃣ nodeSelector (필수)

Windows 파드를 Windows 노드에만 스케줄링

 
apiVersion: v1 kind: Pod spec: nodeSelector: kubernetes.io/os: windows
  • 가장 단순
  • 실무에서 필수 수준

3️⃣ Taints & Tolerations (권장)

Windows 노드에 taint 적용

 
kubectl taint nodes win-node os=windows:NoSchedule

Windows 파드에 toleration 추가

 
tolerations: - key: "os" operator: "Equal" value: "windows" effect: "NoSchedule"

 

효과
Linux 파드의 Windows 노드 오배치 방지
Windows 전용 워크로드 격리

4. Windows 버전 기반 스케줄링

문제

  • Windows 컨테이너는 커널 빌드 번호 종속
  • 노드 OS 빌드 ≠ 컨테이너 이미지 빌드 → 실행 실패

해결: Node Label + Selector

노드에 버전 라벨

 
kubectl label node win-node windows-build=10.0.17763

파드에서 명시

 
nodeSelector: kubernetes.io/os: windows windows-build: "10.0.17763"

5. RuntimeClass (보조적)

 
runtimeClassName: windows
  • 런타임 구분용
  • 스케줄링 결정에는 영향 없음
  • nodeSelector 대체 불가

6. 스케줄링 흐름 요약

 
Pod 생성 ├─ nodeSelector 확인 │ ├─ OS=windows ? │ └─ build version 일치 ? ├─ toleration 존재 여부 └─ 조건 충족 노드에만 바인딩

7. 실무 권장 스케줄링 패턴

 

항목목 권장
nodeSelector ✅ 필수
taints/tolerations ✅ 강력 권장
OS 버전 라벨링 ✅ 필수
RuntimeClass ⚠️ 보조
자동 스케줄링 의존 ❌ 금지

8. 정리

  • Kubernetes의 Windows 지원은 기능적으로 제한적
  • 스케줄러는 Windows를 자동 인식하지 않음
  • 모든 Windows 파드는 명시적 스케줄링 설정 필요
  • OS + 버전 단위 스케줄링이 안정성의 핵심
반응형

댓글