결론부터 말하자면 아니다.
쿠버네티스를 공부하다 보면 자연스럽게 이런 질문에 도달한다.
- containerd는 쿠버네티스의 커널인가?
- containerd는 가상화 OS인가?
- 커널을 가상화하는 도구라고 볼 수 있나?
- 그렇다면 Kubernetes 자체는 가상화인가?
이 글은 위 질문들을 하나의 사고 흐름으로 정리해,
개념을 명확히 분리하는 것을 목표로 한다.
1. 리소스를 실제로 제어하는 주체는 누구인가
쿠버네티스에서 파드에 CPU·메모리 제한을 설정하면,
이를 직접 집행하는 주체는 kubelet이 아니다.
- 실제 집행자: 리눅스 커널
- 집행 기술: cgroup
- 정책 전달자: kubelet
kubelet은 파드 스펙을 해석해
“이 컨테이너는 CPU 500m, 메모리 1Gi”라는 정책을 커널에 전달할 뿐이다.
즉, 리소스 제어의 본질은 언제나 cgroup이다.
2. cgroup 드라이버란 무엇인가
쿠버네티스에서 말하는 cgroup driver는
일반적인 하드웨어 드라이버와 의미가 다르다.
cgroup 드라이버의 정확한 의미
cgroup이라는 커널 기능을
어떤 관리 주체를 통해 조작할 것인가
대표적인 방식은 두 가지다.
cgroupfs 드라이버
- kubelet / container runtime이
- /sys/fs/cgroup 파일시스템을 직접 조작
systemd 드라이버
- kubelet / runtime이
- systemd에게 위임
- systemd가 unit 구조 안에서 cgroup을 관리
중요한 점은 이것이다.
- 리소스 제어 기술은 항상 cgroup
- systemd / cgroupfs는 관리 방식의 차이
그래서 Kubernetes는
“systemd를 쓴다 / cgroupfs를 쓴다”가 아니라
cgroup driver라는 상위 개념으로 표현한다.
3. containerd는 쿠버네티스의 커널인가?
결론부터 말하면 아니다.
커널이 되려면 다음을 수행해야 한다.
- CPU 스케줄링
- 메모리 관리
- 시스템 콜 처리
- 하드웨어 자원에 대한 최종 권한
containerd는:
- 리눅스 커널 위에서 실행되는 유저 공간 데몬
- 커널 기능을 직접 구현하지 않음
- 컨테이너 실행을 커널에 요청할 뿐
따라서 containerd는
쿠버네티스의 커널도, 리눅스의 커널도 아니다.
4. containerd는 OS인가?
이 질문도 자주 나온다.
“쿠버네티스의 OS가 containerd 아닌가?”
역시 아니다.
OS는:
- 하드웨어를 직접 제어하고
- 프로세스·메모리·디바이스를 관리하며
- 시스템 콜 경계를 제공한다.
containerd는 이 중 어느 것도 하지 않는다.
containerd는
리눅스 OS 위에서 동작하는 하나의 데몬일 뿐이다.
컨테이너 내부가 OS처럼 보이는 이유는
namespace로 분리된 커널의 다른 뷰(view) 때문이지,
OS가 따로 존재하기 때문이 아니다.
5. containerd는 커널을 가상화하는 도구인가?
여기서 가장 중요한 구분이 나온다.
커널 가상화란
- 하나의 머신에서 여러 커널 인스턴스 실행
- 각 커널이 자기 스케줄러·메모리 관리 보유
이는 VM과 하이퍼바이저의 영역이다.
containerd의 방식
- 커널은 항상 하나
- namespace / cgroup으로 같은 커널을 분리 사용
- 커널을 복제하거나 에뮬레이션하지 않음
따라서 containerd는
커널 가상화 도구가 아니다.
가장 정확한 표현은 다음이다.
containerd는
커널을 가상화하지 않고,
커널이 제공하는 격리·자원 제어 기능을 조합해
컨테이너 실행 환경을 관리하는 런타임이다.
6. 그렇다면 Kubernetes는 가상화인가?
여기까지 이해했다면 답은 명확하다.
Kubernetes는 가상화가 아니다.
Kubernetes가 하지 않는 것:
- 하드웨어 가상화 ❌
- 커널 분리 ❌
- 리소스 직접 집행 ❌
Kubernetes가 하는 것:
- 컨테이너를 어디에 배치할지
- 몇 개를 유지할지
- 상태를 어떻게 맞출지
즉, 오케스트레이션이다.
Kubernetes는
가상화 기술이 아니라,
가상화처럼 보이는 컨테이너 환경을 관리하는 시스템이다.
7. VM · 컨테이너 · Kubernetes 비교
- VM: 하드웨어/커널 가상화, 각 VM이 독립 OS 보유
- 컨테이너: 커널 공유 + 격리된 프로세스
- Kubernetes: 컨테이너의 배치·상태·수명 관리
8. 최종 정리
- 가상화: 하드웨어 또는 커널을 나눈다
- 컨테이너: 커널을 공유하고 격리한다
- containerd: 커널 격리 기능을 관리한다
- kubelet: 정책과 상태를 전달한다
- Kubernetes: 컨테이너를 오케스트레이션한다
Kubernetes에는 OS도 커널도 없다.
이미 존재하는 리눅스 커널 위에서
컨테이너라는 격리된 프로세스를
효율적으로 운영하기 위한 시스템일 뿐이다.
'K8S' 카테고리의 다른 글
| Kubernetes Windows 지원: 기능 비교와 스케줄링 방식 정리 (0) | 2026.01.23 |
|---|---|
| 쿠버네티스 캐스케이딩 삭제(Cascading Deletion) (0) | 2026.01.22 |
| Kubernetes에서 Stateful 앱에 Blue-Green 배포를 적용할 수 있을까? (0) | 2026.01.19 |
| Kubernetes Pod 부팅 스파이크, 어떻게 해결할까? (0) | 2026.01.15 |
| Kubernetes v1.35 변화 정리 (0) | 2026.01.15 |
댓글