Kubernetes Cluster 구조
쿠버네티스 클러스터는 하나의 Master와 여러 개의 Node로 구성된다.
- Master: 클러스터 전체를 제어 (API Server, Scheduler, Controller Manager, etcd 포함)
- Node: 실제 애플리케이션(Pod)이 실행되는 공간
[ Kubernetes Cluster ]
├── Master (Control Plane)
│ ├─ API Server
│ ├─ Scheduler
│ ├─ Controller Manager
│ └─ etcd (Key-Value Store)
│
└── Node (Worker Node)
├─ Kubelet (노드 에이전트)
├─ Kube-Proxy (네트워크 관리)
└─ Pod
├─ Container (App 실행)
├─ Volume (데이터 영속성)
└─ 연결 : Service 통해 외부/내부 통신
Namespace와 오브젝트
Namespace는 쿠버네티스 오브젝트들을 독립된 공간으로 분리하는 역할을 한다.
이를 통해 팀별 리소스 격리나 환경(dev/prod) 분리가 가능하다.
Namespace 안에는 Pod, Service, ConfigMap, Secret 같은 오브젝트들이 포함된다.
[ Namespace ]
├─ Pod
│ ├─ Container
│ └─ Volume
├─ Service
├─ ConfigMap / Secret
└─ ResourceQuota / LimitRange
Pod와 Volume
Pod는 쿠버네티스의 최소 배포 단위로, 하나 이상의 컨테이너를 포함한다.
- Pod는 IP를 가지고 다른 Pod와 통신 가능하다.
- 단, Pod는 휘발성이기 때문에 삭제되면 데이터가 사라진다.
이를 해결하기 위해 Volume을 연결해 데이터를 영속적으로 보관한다.
Service
Pod는 IP가 변동되기 때문에 직접 접근하기 어렵다.
Service는 Pod들을 묶어 안정적인 네트워크 엔드포인트를 제공한다.
[ Service 타입 ]
├─ ClusterIP (클러스터 내부 통신용)
├─ NodePort (노드 IP:Port 로 접근)
├─ LoadBalancer (클라우드 로드밸런서와 연동)
└─ ExternalName (DNS 이름 매핑)
Controller
쿠버네티스는 Pod를 직접 관리하지 않고, Controller를 통해 관리한다.
- ReplicaSet: 일정 개수의 Pod를 유지
- Deployment: 롤링 업데이트 / 롤백 지원
- DaemonSet: 모든 Node에 1개씩 Pod 배포
- Job: 일회성 작업 실행
- CronJob: 주기적 작업 실행
[ Controller 종류 ]
├─ ReplicaSet
│ └─ 항상 일정 개수의 Pod 유지
├─ Deployment
│ ├─ Pod 업그레이드 (롤링 업데이트)
│ └─ 롤백 지원
├─ DaemonSet
│ └─ 모든 Node에 1개씩 Pod 배포 (모니터링/로그 수집)
├─ Job
│ └─ 일회성 작업 실행
└─ CronJob
└─ 주기적인 작업 실행
ConfigMap / Secret
애플리케이션 설정은 코드와 분리해서 관리하는 것이 좋다.
- ConfigMap: 환경변수, 설정 파일 등 관리
- Secret: 비밀번호, API 키처럼 민감한 정보 저장
'DevOps' 카테고리의 다른 글
| Virtual Machine과 Container의 비교 (0) | 2025.09.08 |
|---|---|
| 아파치 카프카 개발 (0) | 2022.01.25 |
| 아파치 카프카(Apache Kafka) 기초 (0) | 2022.01.19 |
| WebSocket vs HTTP (0) | 2022.01.04 |
| 모놀리식 vs 마이크로서비스 아키텍처 (0) | 2021.11.21 |


댓글