개요
Kubernetes(쿠버네티스, /ˌk(j)uːbərˈnɛtɪs/)는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 컨테이너 오케스트레이션 시스템입니다. 약칭 K8s("K" + 8글자 + "s")로도 널리 알려져 있습니다.
| 항목 |
내용 |
| 원저작자 |
Google |
| 개발 주체 |
Cloud Native Computing Foundation (CNCF) |
| 최초 공개 |
2014년 6월 6일 (v0.2: 2014년 9월 9일) |
| 최신 안정 버전 |
v1.36.3 (2026년 7월 23일) |
| 개발 언어 |
Go |
| 라이선스 |
Apache License 2.0 |
| 공식 사이트 |
kubernetes.io |
이름의 유래
- 고대 그리스어 κυβερνήτης (kubernḗtēs) — "키잡이, 조종사"에서 유래
- 이 단어는 사이버네틱스(cybernetics)와 거버너(governor)의 어원이기도 함
- 약칭 K8s는 K와 s 사이에 8글자가 있다는 의미의 숫자 축약 표기
역사
| 연도 |
주요 사건 |
| 2003~2014 |
Google 내부 클러스터 관리 시스템 Borg 운영 경험 축적 |
| 2014년 6월 |
Google이 Kubernetes를 오픈소스로 발표 (Joe Beda, Brendan Burns, Craig McLuckie 창안) |
| 2015년 7월 |
v1.0 출시, Linux Foundation과 함께 CNCF 설립, Kubernetes를 시드 기술로 기증 |
| 2017년 |
주요 경쟁사들(Docker, VMware, Mesosphere, AWS, Azure)이 모두 Kubernetes 지원 발표 |
| 2018년 3월 |
CNCF 최초의 졸업(Graduated) 프로젝트 선정 |
| 2022년 5월 |
v1.24에서 dockershim 제거 — Docker를 컨테이너 런타임으로 공식 지원 중단 |
핵심 아키텍처
Kubernetes는 Control Plane(제어 평면) — Node(워커 노드) 구조를 따릅니다.
1. Control Plane (제어 평면)
클러스터의 두뇌 역할을 하며, 전체 상태를 관리하고 워크로드를 스케줄링합니다.
| 구성 요소 |
설명 |
API Server (kube-apiserver) |
모든 내/외부 요청을 처리하는 REST API 게이트웨이. JSON/HTTPS 기반 |
| etcd |
클러스터의 모든 상태 정보를 저장하는 분산 키-값 저장소 (일관성 우선, CAP 정리에서 CP) |
Scheduler (kube-scheduler) |
리소스 가용성과 제약 조건에 따라 Pod를 실행할 노드 선택 |
Controller Manager (kube-controller-manager) |
다양한 컨트롤러(ReplicaSet, DaemonSet, Job 등)를 단일 프로세스로 관리 |
2. Node (워커 노드)
실제 컨테이너가 실행되는 머신입니다.
| 구성 요소 |
설명 |
| kubelet |
각 노드의 에이전트. Pod의 상태를 모니터링하고 컨테이너 생명주기 관리 |
| Container Runtime |
실제 컨테이너 실행 (containerd, CRI-O 등). CRI(Container Runtime Interface)를 통해 kubelet과 통신 |
| kube-proxy |
네트워크 프록시 및 로드 밸런서. Service 추상화와 네트워크 라우팅 담당 |
핵심 개념 (Primitives)
Pod (파드)
- 가장 기본적인 배포 단위 — 하나 이상의 컨테이너를 포함
- 클러스터 내에서 고유한 IP 주소 할당
- 동일 Pod 내 컨테이너는 네트워크와 스토리지를 공유
Workload (워크로드) 추상화
| 종류 |
설명 |
| Deployment |
선언적 업데이트와 롤백을 지원하는 가장 일반적인 워크로드. ReplicaSet 관리 |
| ReplicaSet |
지정된 수의 Pod 복제본을 항상 유지 |
| StatefulSet |
상태 유지가 필요한 애플리케이션(DB 등)을 위한 고유 식별자와 순서 보장 |
| DaemonSet |
모든 노드(또는 일부)에 정확히 하나의 Pod 실행 (로그 수집, 모니터링 등) |
| Job / CronJob |
배치 작업 및 정기 작업 실행 |
Service (서비스)
- Pod 집합에 대한 안정적인 네트워크 엔드포인트 제공
- DNS 이름과 고정 IP를 통해 서비스 디스커버리 지원
- 라운드 로빈 방식의 로드 밸런싱
- ClusterIP(내부), NodePort, LoadBalancer(외부) 등 타입 제공
Storage (스토리지)
- Volume: Pod 내 컨테이너가 공유하는 영구/임시 스토리지
- PersistentVolume (PV) / PersistentVolumeClaim (PVC): 스토리지와 사용 요청을 분리
- CSI (Container Storage Interface): 표준화된 스토리지 플러그인 인터페이스 (v1.9 알파, v1.13 GA)
ConfigMap & Secret
- ConfigMap: 설정 데이터를 컨테이너 이미지와 분리하여 관리
- Secret: 민감한 데이터(비밀번호, 인증서, SSH 키)를 안전하게 저장
- 환경 변수 또는 볼륨 마운트 방식으로 Pod에 전달
Namespace (네임스페이스)
- 클러스터 내 리소스를 논리적으로 분리
- 다중 팀, 다중 프로젝트, 환경(dev/staging/prod) 분리에 사용
주요 기능
| 기능 |
설명 |
| 자동화된 롤아웃/롤백 |
애플리케이션 변경을 점진적으로 배포하고, 문제 발생 시 자동 롤백 |
| 서비스 디스커버리 & 로드 밸런싱 |
Pod에 IP와 DNS 부여, 트래픽 자동 분산 |
| 스토리지 오케스트레이션 |
로컬, 클라우드, 네트워크 스토리지(NFS, iSCSI 등) 자동 마운트 |
| 시크릿 & 설정 관리 |
이미지 재빌드 없이 설정 업데이트, 민감 정보 안전 관리 |
| 자동 빈 패킹 |
리소스 요구사항에 따라 컨테이너를 최적의 노드에 배치 |
| 셀프 힐링 |
장애 발생 시 컨테이너 재시작, Pod 교체, 노드 복구 |
| 수평적 확장 (HPA) |
CPU/메모리/커스텀 메트릭 기반 자동 스케일링 |
| 수직적 확장 (VPA) |
실제 사용량 기반 리소스 요청/제한 자동 조정 |
| IPv4/IPv6 듀얼 스택 |
Pod와 Service에 IPv4와 IPv6 동시 할당 |
| 확장성 |
CRD(Custom Resource Definition), Operator 패턴으로 기능 확장 |
API 보안
| 계층 |
방식 |
| 전송 보안 |
HTTPS (TLS) — v1.20부터 HTTP 포트 완전 제거 |
| 인증 |
X.509 클라이언트 인증서, Bearer 토큰, Service Account 토큰 |
| 인가 |
RBAC (역할 기반), ABAC (속성 기반), Node 인증, Webhook |
배포판 (Distributions)
오픈소스
- k3s — 경량화 (Rancher, IoT/엣지용)
- k0s — 단순 설치
- RKE (Rancher Kubernetes Engine)
- OKD — Red Hat OpenShift의 커뮤니티 버전
- Amazon EKS-D
상용
- Red Hat OpenShift
- Mirantis Kubernetes Engine (구 Docker Enterprise)
- VMware VKS (vSphere Kubernetes Service)
- SUSE Rancher Prime
관리형 (클라우드)
- GKE (Google Kubernetes Engine)
- EKS (Amazon Elastic Kubernetes Service)
- AKS (Azure Kubernetes Service)
- ACK (Alibaba Cloud)
- IBM Cloud Kubernetes Service
- DigitalOcean Managed Kubernetes
- Oracle OKE
비판과 과제
- 복잡성: Google 스스로도 Kubernetes가 너무 복잡하다고 인정. 러닝 커브가 가파름
- 오버헤드: 소규모 배포에는 과도한 인프라가 필요할 수 있음
- 보안: 기본 설정만으로는 완전한 보안을 보장하지 않음 (Secret 기본 암호화 미지원 등)
요약
Kubernetes는 현대 클라우드 네이티브 애플리케이션의 사실상 표준(de facto standard) 오케스트레이션 플랫폼입니다. Google의 15년 이상의 프로덕션 운영 경험(Borg)을 바탕으로 설계되었으며, CNCF의 첫 번째 졸업 프로젝트로서 전 세계 대부분의 클라우드 서비스 제공업체가 관리형 서비스를 제공하고 있습니다. 마이크로서비스 아키텍처, DevOps, 클라우드 네이티브 환경에서 핵심 인프라로 자리잡고 있습니다.