Kubernetes 기본 개념

2026. 6. 13. 09:13Kubernetes


Ⅰ. Kubernetes 개념


Ⅰ - Ⅰ. Kubernetes

Kubernetes 구분 설명
정의 컨테이너화된 애플리케이션의 배포, 확장, 운영을 자동화하는 오케스트레이션 플랫폼
핵심 역할 여러 서버 (노드)에 배포된 컨테이너들을 중앙에서 효율적으로 관리
장애 복구, 자동 확장, 로드밸런싱 등을 자동으로 수행
비유 Docker가 컨테이너를 만드는 도구라면 Kubernetes는 컨테이너를 관리하는 운영체제 (OS) 역할 수행
등장 배경 컨테이너 수가 증가하고, 수동 배포, 업데이트, 확장 관리가 복잡해짐에 따라

이를 자동화하기 위해 Google이 내부 시스템 Borg를 기반으로 개발
관리 단위 Pod, ReplicaSet, Deployment, Service, Namespace 등 리소스 단위를 통해

컨테이너를 논리적으로 그룹화하고 관리
주요 기능 자동 배포 및 롤백 (Deployment)
서비스 디스커버리 및 로드밸런싱 (Service)
자동 스케일링 (HPA)
셀프 힐링 (Self - Healing) (노드 / 파드 장애 시 자동 복구)
Config 관리 및 시크릿 관리 (ConfigMap, Secret)
운영 방식 마스터 노드가 클러스터 상태 관리
워커 노드에서 실제 컨테이너 실행
장점 애플리케이션 가용성 및 확장성 향상
운영 자동화로 관리 효율성 증가
환경 일관성 보장 (개발 ~ 운영 동일 환경 유지)
대표 구성요소 API Server
Controller Manager
Scheduler
Kubelet
Kube - Proxy
etcd

 


Ⅱ. 핵심 리소스 오브젝트

 

● Pod

Pod 구분 설명
개념 Kubernetes에서 컨테이너가 실제로 실행되는 최소 실행 단위
구성 하나 이상의 컨테이너 + 스토리지 (볼륨) + 네트워크 네임스페이스 공유
특징 같은 Pod 내 컨테이너는 IP, 포트, 파일 시스템 공유
컨테이너 간 통신이 필요할 때 함께 배치
한계 일시적 (비영속적)이라서 장애 시 자동 재생성은 ReplicaSet 또는 Deployment가 담당

 

● ReplicatSet (RS)

ReplicaSet

(RS)
구분 설명
개념 지정된 개수의 동일한 Pod 복제본을 항상 유지하는 리소스
복제 및 업데이트 자동화 실행하는 리소스
역할 Pod 수를 자동으로 조정 (추가 및 삭제 가능)
장애 발생 시 Pod를 자동 재생성
특징 Pod의 스펙은 그대로 유지
직접 사용보다 Deployment 내부에서 자동 관리
비고 Deployment가 내부적으로 ReplicaSet을 생성하여 관리

 

● Deployment

Deployment 구분 설명
개념 Pod와 ReplicaSet을 관리하여 배포, 업데이트, 롤백을 자동화하는 리소스
주요 기능 롤링 업데이트 (Rolling Update)
버전 롤백 (Rollout / Undo)
스케일 아웃 / 인 자동화
특징 HPA (오토 스케일러)와 연동하여 자동 확장
무중단 배포 가능
장점 운영자가 직접 Pod를 관리할 필요 없이 선언형으로 배포 상태 유지 가능

 

● Service

Service 구분 설명
개념 Pod에 안정적인 네트워크 접근 주소 (IP)를 제공하는 추상화 리소스
역할 Pod의 IP가 변경되어도 고정 주소로 접근 가능
로드밸런싱 및 트래픽 분산 수행 (kube-proxy)
유형별 특징 유형 설명
Cluster IP 내부 접근 전용 (기본)
NodePort 외부 접근 가능 (30000 ~ 32767)
LoadBalancer 클라우드 L4 로드밸런서 연동
Headless 고정 IP 없이 DNS 통해 직접 Pod IP 반환
특징 Pod의 동적 IP 문제를 해결하고 안정적 서비스 제공

 

● ConfigMap

ConfigMap 구분 설명
개념 비민감한 설정값 (Key - Value)을 Pod에 주입하기 위한 리소스
사용 방법 Pod에 환경변수 (envFrom) 또는 파일 볼륨 (volumeMounts)로 주입
이미지 불변
이미지 외부에서 설정 관리 가능
설정 외부 주입
보안상 민감하지 않은 설정 데이터를 키와 값의 쌍으로 저장
볼륨 마운트는 수 초 ~ 분 내 파일 생신 (컨테이너 자동 재시작은 아님)
env 주입은 Pod 재시작 필요 (일반적으로 Deployment Rollout)
특징 코드와 이미지 설정을 분리해 환경별 설정 관리 용이
변경 시 Pod 재시작 필요 (자동 반영은 안 됨)

 

● Secret

Secret 구분 설명
개념 비밀번호, 토큰, 인증서 등 민감정보를 안전하게 저장하는 리소스
특징 데이터는 Base64로 인코딩 저장
ConfigMap과 동일하게 환경변수 또는 파일로 주입 가능
권한 제한 (RBAC)으로 보안 강화 필요
사용 예시 데이터베이스 접속 정보
API Key
인증서 (SSL / TLS) 저장

 

● NameSpace

Namespace 구분 설명
개념 클러스터 내 리소스를 논리적으로 격리하기 위한 단위
역할 동일한 이름의 리소스 중복 생성 가능
팀 / 환경별 (dev, stage, prod) 네임스페이스 분리하여 운영
정책 설정 ResourceQuota, LimitRange로 과다 사용 방지하여 자원 사용 제한
NetworkPolicy로 네임스페이스 / 라벨 단위 트래픽 제어하여 네트워크 통신 제한

(CNI 자원 필요)
특징 하나의 소프트웨어 인스턴스가 여러 테넌트를 서비스하는 아키텍처인

멀티테넌시 (Multi-Tenancy) 환경에서 자원 격리 필수 요소

 

● Ingress

Ingress 구분 설명
개념 외부에서 클러스터 내부 Service로 도메인 / 경로 기반 HTTP(S) 요청 라우팅
역할 URL Path 또는 호스트 이름 기반으로 트래픽 분배
Ingress Controller (nginx, HAProxy 등)가 필수
핵심 요소 요소 설명
IngressClass 어떤 Controller를 사용할지 지정
TLS HTTPS 인증서 연동
Path Type Prefix / Exact 매칭 지원
특징 Service보다 상위 개념 - 도메인 기반 라우팅 관리

 

● DaemonSet

DaemonSet 구분 설명
개념 클러스터 내 모든 노드 (또는 지정 노드)에 하나씩 Pod를 배포하는 리소스
특징 새 노드 추가 시 자동 배포
삭제 시 자동 정리
노드별 공통 서비스 운영용
장점 노드 레벨에서 항상 필요한 시스템 Pod 관리용
사용 예시 로그 수집기 (Fluentd)
모니터링 에이전트 (Prometheus Node Exporter)
CNI 네트워크 플러그인

 

● StatefulSet

StatefulSet 구분 설명
개념 Pod를 순서대로 생성하고, 고정된 이름과 스토리지, 네트워크 정체성을 유지하는 리소스
특징 Pod 이름과 스토리지가 일정
순서 있는 배포 및 업데이트
Headless Service와 함께 사용
비교 Deployment는 Stateless, StatefulSet은 Stateful 관리용
사용 예시 데이터베이스 (MySQL, MongoDB, Redis)
메시지 큐 (Kafka, RabbitMQ)
분산 스토리지 (Ceph) 

 

● Job

Job 구분 설명
개념 한 번 실행 후 종료되는 단발성 작업 수행 리소스
특징 작업 완료 시 Pod 자동 종료
실패 시 재시도 가능
사용 예시 데이터 백업
로그 집계
데이터 마이그레이션

 

● CronJob

CronJob 구분 설명
개념 Job을 정해진 스케줄 (cron 표현식)에 맞춰 반복 실행
특징 Linux cron과 동일한 일정 설정
동시 실행 제한 및 실패 시 재시작 설정 가능
사용 예시 주기적 로그 정리
정시 백업
모니터링 데이터 수집

Ⅲ. Kubernetes 주요 리소스 간 차이점

 

● Pod vs ReplicaSet vs Deployment

구분 Pod ReplicaSet (RS) Deployment
역할 컨테이너 최소 실행 단위 Pod 복제본 유지 및 관리 Pod / RS를 버전 단위로 배포, 업데이트, 롤백
관리 범위 개별 Pod 직접 관리 동일 스펙 Pod 여러 개 관리 RS를 통해 여러 Pod 버전 및 배포 이력 관리
자동 복구 없음 있음 (Pod 수 유지) 있음 (자동 롤백, 업데이트 지원)
주 사용 목적 실습용 단순 복제 / 스케일링 서비스 운영용 (실제 배포 단위)
단일 테스트용
상위 리소스 없음 Deployment가 관리 없음 (최상위)
설정 변경 시 반영 기존 Pod 삭제 후 재생성 필요 기존 RS 수정 새 RS 생성 후 롤링 업데이트 수행

 

● Deployment vs StatefulSet vs DaemonSet

구분 Deployment StatefulSet DaemonSet
목적 무상태 (stateless) 서비스 배포 상태 유지 (stateful) 서비스 배포 모든 노드에서 공통 Pod 실행
Pod 이름 임의 자동 생성 (랜덤) 고정 이름 부여 (pod-0, pod-1 등) 노드마다 1개씩 생성
스토리지 임시 볼륨 사용

(삭제 시 사라짐)
PersistentVolume과 연결 필요시 로컬 스토리지 사용
배포 순서 병렬 배포 가능 순차 배포 (Ordered) 전체 노드에 자동 배포
대표 예시 웹 서버 DB, Redis 로그 수집기
API 서버 Kafka 모니터링 에이전트
스케일링 방식 Pod 수 조절 자유로움 순서 유지하며 스케일 조정 노드 추가 시 자동 배포
롤백 지원 지원 지원 (단, 순서 보장) 지원 안 함 (단순 배포 구조)

 

● Service vs Ingress

구분 Service Ingress
역할 Pod 간 통신을 위한 내부 IP 제공 HTTP / HTTPS 기반의 외부 접근 제어
접근 범위 내부 (L4) 통신 중심 외부 (L7) 트래픽 제어 중심
라우팅 단위 포트 기반 도메인 / 경로 기반 (Host / Path)
지원 프로토콜 TCP / UDP HTTP / HTTPS
구현 방식 kube - proxy가 IPVS / iptables로 분산 처리 Ingress Controller (nginx, HAProxy 등)가 라우팅 담당
대표 예시 클러스터 내부 서비스 연결 외부 사용자가 example.com으로 접속할 때 라우팅
로드밸런싱 L4 (IP / Port 단위) L7 (URL / 도메인 단위)

 

● ConfigMap vs Secret

구분 ConfigMap Secret
목적 비밀이 아닌 설정값 관리 민감한 정보 (비밀번호, 토큰 등) 관리
저장 데이터 일반 Key - Value Base64 인코딩된 Key - Value
보안 수준 일반 수준 높은 보안 필요 (RBAC 연동 필수)
Pod 주입 방식

환경 변수 (env) 환경 변수 (env)
파일 (volumeMount) 파일 (volumeMount)
예시
DB_HOST DB_PASSWORD
PORT API_KEY
LOG_LEVEL TLS 인증서
변경 반영 시 Pod 재시작 필요 Pod 재시작 필요

 

● Job vs CronJob

구분 Job CronJob
목적 단발성 (1회성) 작업 실행 스케줄 기반 반복 작업 실행
실행 방식 즉시 실행 후 완료 Cron 표현식에 따라 주기적 실행
예시 데이터 백업 매일 0시 자동 백업

(0       0       *       *       *)
로그 정리 1회 실행
실패 처리 재시도 횟수 설정 가능

(backoffLimit)
실패 시 다음 스케줄 때 재시도 가능
Pod 개수 1개 실행 시마다 새 Job 생성

'Kubernetes' 카테고리의 다른 글

Kubernetes Label과 Annotation  (0) 2026.06.13
Kubernetes Ingress  (0) 2026.06.13
Kubernetes Service  (0) 2026.06.13
kubernetes Controller  (0) 2026.06.13
Minikube  (0) 2026.06.13