Kubernetes는 단순히 Container를 실행하는 도구가 아니라 여러 서버와 Container를 하나의 시스템처럼 관리하는 Container Orchestration 플랫폼입니다.
Kubernetes를 제대로 이해하기 위해서는 내부 Architecture 구조를 먼저 알아야 합니다.
Docker Compose는 주로 하나의 서버 환경에서 여러 Container를 구성하는 데 사용하지만, Kubernetes는 여러 서버를 Cluster로 구성하고 대규모 Application을 자동으로 운영합니다.
Kubernetes Architecture는 크게 두 영역으로 나뉩니다.
| 구성 영역 | 역할 |
|---|---|
| Control Plane | Kubernetes 전체 관리 및 제어 |
| Worker Node | 실제 Application 실행 |
Control Plane은 Kubernetes의 관리 영역이고 Worker Node는 실제 서비스가 실행되는 공간입니다.
Kubernetes Cluster란 무엇인가?
Kubernetes Cluster는 여러 서버(Node)를 하나의 운영 환경으로 구성한 시스템입니다.
일반적인 서버 운영 방식에서는 각각의 서버를 개별적으로 관리합니다.
하지만 Kubernetes에서는 여러 서버를 하나의 Cluster로 묶어 중앙에서 관리합니다.
예:
| 구성 요소 | 역할 |
|---|---|
| Control Plane | Cluster 상태 관리 |
| Worker Node 1 | Application 실행 |
| Worker Node 2 | Application 실행 |
| Worker Node 3 | Application 실행 |
이 구조를 통해 서비스 규모가 증가해도 안정적으로 Container를 운영할 수 있습니다.
Kubernetes Control Plane이란?
Control Plane은 Kubernetes Cluster의 중심 관리 영역입니다.
Application Container를 직접 실행하는 역할보다는 전체 시스템 상태를 확인하고 필요한 작업을 결정합니다.
주요 구성 요소:
| 구성 요소 | 역할 |
|---|---|
| API Server | Kubernetes 요청 처리 |
| etcd | Cluster 데이터 저장 |
| Scheduler | Pod 배치 결정 |
| Controller Manager | 원하는 상태 유지 |
쉽게 설명하면 Control Plane은 Kubernetes의 관리자 역할을 담당합니다.
사용자가 원하는 운영 상태를 확인하고 Worker Node에 필요한 작업을 전달합니다.
Kubernetes API Server란?
API Server는 Kubernetes 내부에서 모든 요청이 전달되는 핵심 구성 요소입니다.
사용자가 kubectl 명령어를 실행하거나 새로운 Application을 배포하면 API Server를 통해 Kubernetes에 전달됩니다.
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | 사용자가 Kubernetes 명령 실행 |
| 2단계 | API Server가 요청 확인 |
| 3단계 | Control Plane에서 작업 처리 |
| 4단계 | Worker Node에서 실행 |
API Server는 Kubernetes와 사용자, 그리고 각 구성 요소 사이의 통신 역할을 담당합니다.
Kubernetes etcd란?
etcd는 Kubernetes Cluster의 모든 상태 정보를 저장하는 데이터 저장소입니다.
저장되는 주요 정보:
| 정보 | 설명 |
|---|---|
| Cluster 설정 | 전체 Kubernetes 환경 정보 |
| Node 정보 | 서버 상태 정보 |
| Pod 정보 | 실행 중인 Container 상태 |
| Configuration | 서비스 설정 정보 |
Kubernetes는 etcd에 저장된 데이터를 기준으로 현재 상태를 관리합니다.
따라서 etcd는 Kubernetes 운영에서 매우 중요한 구성 요소이며 정기적인 Backup 관리가 필요합니다.
Kubernetes Scheduler란?
Scheduler는 새롭게 생성되는 Pod가 어떤 Worker Node에서 실행될지 결정하는 역할을 합니다.
Pod 배치 시 확인하는 요소:
| 기준 | 설명 |
|---|---|
| CPU | 사용 가능한 Processor 확인 |
| Memory | 사용 가능한 메모리 확인 |
| Node 상태 | 실행 가능 여부 확인 |
| Policy | 배치 규칙 확인 |
예를 들어 새로운 Web Server Pod가 생성되면 Scheduler는 가장 적합한 Worker Node를 찾아 배치합니다.
Kubernetes Controller Manager란?
Controller Manager는 Kubernetes가 항상 원하는 상태를 유지하도록 관리합니다.
Kubernetes는 현재 상태와 사용자가 설정한 목표 상태를 계속 비교합니다.
예:
원하는 상태:
| 항목 | 목표 |
|---|---|
| Web Server | Container 5개 실행 |
현재 상태:
| 항목 | 상태 |
|---|---|
| Web Server | Container 4개 실행 |
Controller Manager는 부족한 Container 1개를 자동으로 생성하여 원하는 상태를 유지합니다.
이 기능이 Kubernetes 자동 관리의 핵심입니다.
Kubernetes Worker Node란?
Worker Node는 실제 Application Container가 실행되는 서버입니다.
Worker Node 주요 구성 요소:
| 구성 요소 | 역할 |
|---|---|
| kubelet | Control Plane과 통신 및 Pod 관리 |
| Container Runtime | Container 실행 |
| kube-proxy | Network 연결 관리 |
Worker Node는 Control Plane의 지시를 받아 실제 서비스를 실행합니다.
Kubernetes kubelet이란?
kubelet은 Worker Node에서 실행되는 핵심 Agent입니다.
주요 역할:
| 기능 | 설명 |
|---|---|
| Pod 관리 | Pod 실행 및 상태 확인 |
| 상태 보고 | Control Plane에 정보 전달 |
| Container 관리 | 정상 실행 여부 확인 |
kubelet은 Worker Node와 Control Plane 사이에서 중요한 연결 역할을 합니다.
Kubernetes Container Runtime이란?
Container Runtime은 실제 Container를 실행하는 환경입니다.
대표적인 Runtime:
| Runtime | 설명 |
|---|---|
| containerd | 현재 많이 사용하는 Container Runtime |
| CRI-O | Kubernetes 환경에 최적화된 Runtime |
Kubernetes는 Container Runtime을 통해 Application Container를 실행합니다.
Kubernetes kube-proxy란?
kube-proxy는 Kubernetes Network 통신을 관리하는 구성 요소입니다.
역할:
| 기능 | 설명 |
|---|---|
| Service 연결 | Pod 접근 관리 |
| Traffic 전달 | 요청 전달 처리 |
| Network Rule 관리 | 통신 규칙 설정 |
이를 통해 여러 Container가 안정적으로 통신할 수 있습니다.
Kubernetes Architecture 동작 과정
Application을 배포하면 다음 과정으로 동작합니다.
| 단계 | 동작 |
|---|---|
| 1단계 | 사용자가 Deployment 생성 |
| 2단계 | API Server가 요청 처리 |
| 3단계 | etcd에 상태 저장 |
| 4단계 | Scheduler가 Worker Node 선택 |
| 5단계 | Worker Node에서 Pod 실행 |
| 6단계 | Service를 통해 사용자 접근 |
이 과정이 반복되면서 Kubernetes는 Application 상태를 지속적으로 관리합니다.
Kubernetes Architecture의 장점
| 장점 | 설명 |
|---|---|
| 자동 관리 | Cluster 상태 자동 유지 |
| 확장성 | Node 추가 가능 |
| 장애 대응 | 문제 발생 시 자동 복구 |
| 표준화 | Cloud 환경 이동 가능 |
| 대규모 운영 | 많은 Container 관리 가능 |
Kubernetes Architecture의 핵심은 사용자가 원하는 상태를 유지하도록 시스템이 자동으로 관리한다는 점입니다.
자주 묻는 질문
Control Plane과 Worker Node의 차이는 무엇인가요?
Control Plane은 Kubernetes Cluster를 관리하고 제어하는 영역이며 Worker Node는 실제 Application Container를 실행하는 서버입니다.
Kubernetes는 하나의 서버에서도 사용할 수 있나요?
가능합니다. 개발 환경에서는 하나의 Node로 구성할 수 있지만 Production 환경에서는 여러 Worker Node를 사용하는 것이 일반적입니다.
etcd Backup이 중요한 이유는 무엇인가요?
etcd에는 Kubernetes Cluster의 핵심 상태 정보가 저장되기 때문에 장애 복구를 위해 Backup이 필요합니다.
마무리
Kubernetes Architecture는 Control Plane과 Worker Node가 역할을 나누어 Container 환경을 안정적으로 운영하는 구조입니다.
정리하면:
| 구성 요소 | 역할 |
|---|---|
| Control Plane | Kubernetes 전체 관리 |
| Worker Node | Application 실행 |
| Pod | Container 실행 단위 |
| Service | Network 연결 관리 |
| etcd | Cluster 데이터 저장 |
Kubernetes의 핵심은 Container를 실행하는 것보다 안정적으로 관리하고 자동으로 운영하는 것입니다.
다음 글에서는 Kubernetes 환경을 구성하는 기본 단위인 Kubernetes Cluster 구성 방법과 Node 운영 구조에 대해 알아보겠습니다.