Kubernetes의 구조
0. Kubernetes Cluster란?
여러 대의 서버(Node)를 묶어 하나의 통합된 시스템처럼 동작하게 만든 집합
Kubernetes는 클러스터를 통해 컨테이너를 자동으로 관리함
✅ Kubernetes Cluster의 구성 요소
구성 요소 | 설명 |
Master Node | 클러스터 전체를 제어하고 관리하는 중심 노드 |
Worker Node | 실제로 애플리케이션(Pod)을 실행하는 노드 |
네트워크 & 스토리지 | 노드 간 통신과 데이터 공유를 위한 인프라 |
1. Physical Machine이란?
쿠버네티스(Kubernetes) 클러스터는 여러 대의 물리적인 서버 위에서 동작한다.
이러한 물리 서버를 Kubernetes에 등록하면 "Node"로 인식된다.
*Node : kubelet이 설치되고 클러스터에 등록된 물리 머신
*kubelet : Node에서 실행되는 핵심 에이전트 / Pod를 실행하고 상태를 체크하는 역할
✅ 쿠버네티스에서의 Physical Machine 구성
쿠버네티스 클러스터는 보통 두 가지 유형의 노드로 나뉜다.
종류 | 설명 | 컴포넌트 |
Master Node | 클러스터를 제어하고 관리하는 중앙 관리자 실제로 컨테이너를 실행하진 않는다. |
|
Worker Node | 실제로 컨테이너(Pod)를 실행하는 서버 |
|
2. Namespace란?
Kubernetes 클러스터 내부를 논리적으로 분리할 수 있는 공간 단위
- 여러 팀, 환경(개발/운영 등), 서비스를 하나의 클러스터에서 독립적으로 운영할 수 있게 도와줌
- 리소스 제한, 보안 분리, 네트워크 격리 등을 위한 기본 단위로 활용됨
✅ Namespace의 특징
기능 | 설명 |
리소스 격리 | Pod, Service, ConfigMap 등은 기본적으로 네임스페이스 내에서만 접근 가능
|
리소스 제한 | ResourceQuota나 LimitRange를 통해 네임스페이스 단위로 자원 제한 가능
|
서비스 구분 | dev, staging, prod 등 환경별로 나누어 운영 가능
|
기본 네임스페이스 | default, kube-system, kube-public 등은 기본 제공됨
|
*ConfigMap: 애플리케이션의 일반 설정값을 저장하고 Pod에 주입하는 Kubernetes 리소스
*Secret: 비밀번호, 토큰 등 민감한 정보를 안전하게 저장하고 Pod에 주입하는 Kubernetes 리소스
3. Pod란?
Kubernetes에서 가장 작은 배포 단위이며, 하나 이상의 컨테이너를 담는 논리적인 실행 단위
- 같은 Pod 안에 있는 컨테이너들은 같은 IP 주소, 포트, Volume을 공유
- 보통은 컨테이너 하나만 들어가지만, 밀접하게 연관된 컨테이너(예: 앱 + 로그 수집기)를 함께 배치할 수도 있음
- 하나의 Pod 안에 있는 컨테이너는 함께 시작되고 함께 종료
✅ Pod의 특징
기능 | 설명 |
단일 IP 공간 | Pod 안의 컨테이너들은 동일한 IP를 사용하여 통신함 |
단일 네트워크 단위 | Pod는 하나의 네트워크 엔드포인트로 외부와 통신함 |
공유 스토리지 | Pod 내의 컨테이너들은 공유된 Volume에 접근 가능 |
데이터 휘발성 | Pod가 삭제되면 내부 데이터는 사라짐 → Volume 사용 필요 |
운명 공동체 | 컨테이너 중 하나라도 문제가 생기면 Pod 전체가 재시작됨 |
4. Service란?
Kubernetes에서 Pod에 안정적으로 접근하기 위한 고정된 엔드포인트 역할을 한다.
Pod는 죽었다가 다시 생성되면 IP가 바뀐다.
- 사용자가 Pod에 직접 접근하면 → IP 변경으로 인해 통신 끊김 발생 가능
- 여러 Pod가 같은 서비스를 제공하는 경우 → 하나하나 접근하기 어려움
→ Pod 앞단에 고정된 네트워크 주소인 Service가 필요하다.
✅ Service의 기능
기능 | 설명 |
고정 IP 제공 | Pod가 재시작되어도, Service IP는 변하지 않음 |
로드밸런싱 | 동일한 Label을 가진 여러 Pod로 트래픽 자동 분산 (Round-Robin 방식) |
디스커버리 | DNS를 통해 my-service.default.svc.cluster.local 형식으로 접근 가능 |
Pod 선택 | Label Selector를 사용해 Service가 연결할 Pod를 선택함 |
5. Controller란?
Kubernetes에서 리소스(Pod 등)의 상태를 자동으로 유지, 관리해주는 역할을 한다.
사용자가 정의한 "원하는 상태(Desired State)"를 지속적으로 감시하고, 실제 상태와 다르면 자동으로 조정한다.
✅ 대표적인 Controller 종류
컨트롤러 | 설명 |
ReplicaSet | 지정된 개수만큼 Pod를 항상 유지함. Pod가 죽으면 자동으로 새로 생성함. 단독으로 사용하기보다는 Deployment 내부에서 동작하는 경우가 많음. |
Deployment | 애플리케이션의 버전 관리, 롤링 업데이트, 스케일링을 담당. 내부적으로 ReplicaSet을 사용하며, 실무에서 가장 자주 쓰이는 컨트롤러. |
StatefulSet | 각 Pod에 고유한 이름, 네트워크 주소, Volume을 부여하여 관리. DB, Kafka, Elasticsearch처럼 상태를 가지는 서비스에 사용. |
DaemonSet | 클러스터의 모든 노드에 1개씩 Pod을 배포. 노드 모니터링, 로그 수집 등 Node 단위로 실행되는 데몬 역할에 사용. |
Job / CronJob | 일정 작업을 한 번만 실행(Job) 하거나, 주기적으로 실행(CronJob) 함. 예: 백업, 배치 처리, 보고서 생성 작업 등 일회성 또는 반복 작업에 사용. |
'IT_Study > Ops' 카테고리의 다른 글
[Kubernetes] Object : Service (0) | 2025.04.17 |
---|---|
[Kubernetes] Object : Pod (0) | 2025.04.17 |
[Kubernetes] 가상화 기술의 history 및 Virtual Machine과 Container의 차이 (0) | 2025.04.14 |
[DevOps] DevOps의 기본적 이해와 철학 (0) | 2023.12.24 |
[MLOps] Kubeflow 활용을 위한 Kubernetes에 대한 이해 (0) | 2023.11.21 |