이미지 로딩 중...
CodeDeck AI
2025. 11. 8. · 2 Views
Kubernetes 기본 개념 완벽 가이드
Kubernetes의 핵심 개념과 리소스를 실습 중심으로 학습합니다. Pod, Service, Deployment 등 필수 오브젝트를 YAML 예제로 쉽게 이해할 수 있습니다.
들어가며
이 글에서는 Kubernetes 기본 개념 완벽 가이드에 대해 상세히 알아보겠습니다. 총 8가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Pod_기본_구조
- Deployment_생성
- Service_ClusterIP
- Service_LoadBalancer
- ConfigMap_설정관리
- Secret_민감정보관리
- Namespace_격리
- Volume_데이터저장
1. Pod_기본_구조
개요
Pod는 Kubernetes에서 배포할 수 있는 가장 작은 단위로, 하나 이상의 컨테이너를 포함합니다.
코드 예제
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
설명
nginx 웹서버를 실행하는 가장 간단한 Pod 정의입니다. 80 포트로 서비스를 제공합니다.
2. Deployment_생성
개요
Deployment는 Pod의 복제본을 관리하고 롤링 업데이트를 지원하는 핵심 리소스입니다.
코드 예제
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deployment
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.14.2
설명
동일한 nginx Pod를 3개의 복제본으로 실행하여 고가용성을 제공합니다.
3. Service_ClusterIP
개요
Service는 Pod에 안정적인 네트워크 엔드포인트를 제공합니다. ClusterIP는 클러스터 내부 통신용입니다.
코드 예제
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: ClusterIP
selector:
app: web
ports:
- protocol: TCP
port: 80
targetPort: 80
설명
app=web 레이블을 가진 Pod들에 대해 클러스터 내부에서 접근 가능한 서비스를 생성합니다.
4. Service_LoadBalancer
개요
LoadBalancer 타입은 클라우드 환경에서 외부 로드밸런서를 자동으로 프로비저닝합니다.
코드 예제
apiVersion: v1
kind: Service
metadata:
name: web-external
spec:
type: LoadBalancer
selector:
app: web
ports:
- protocol: TCP
port: 80
targetPort: 80
설명
외부 인터넷에서 접근 가능한 공개 IP를 할당받아 애플리케이션을 노출합니다.
5. ConfigMap_설정관리
개요
ConfigMap은 컨테이너에 주입할 설정 데이터를 키-값 쌍으로 저장합니다.
코드 예제
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
database_url: "mysql://db:3306"
log_level: "info"
max_connections: "100"
설명
애플리케이션 설정을 코드와 분리하여 환경별로 다른 값을 쉽게 적용할 수 있습니다.
6. Secret_민감정보관리
개요
Secret은 비밀번호, 토큰 등 민감한 정보를 Base64로 인코딩하여 안전하게 저장합니다.
코드 예제
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
username: YWRtaW4=
password: cGFzc3dvcmQxMjM=
설명
데이터베이스 인증 정보를 암호화하여 저장하고, Pod에서 환경변수나 파일로 마운트할 수 있습니다.
7. Namespace_격리
개요
Namespace는 클러스터 내에서 리소스를 논리적으로 분리하는 가상 클러스터입니다.
코드 예제
apiVersion: v1
kind: Namespace
metadata:
name: development
---
apiVersion: v1
kind: Pod
metadata:
name: app-pod
namespace: development
spec:
containers:
- name: app
image: myapp:1.0
설명
개발/스테이징/프로덕션 환경을 분리하여 리소스 관리와 접근 제어를 독립적으로 할 수 있습니다.
8. Volume_데이터저장
개요
Volume은 Pod의 컨테이너가 재시작되어도 데이터를 유지할 수 있는 저장소입니다.
코드 예제
apiVersion: v1
kind: Pod
metadata:
name: data-pod
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
설명
emptyDir 볼륨은 Pod가 실행되는 동안 임시 데이터를 저장하며, Pod 삭제 시 함께 삭제됩니다.
마치며
이번 글에서는 Kubernetes 기본 개념 완벽 가이드에 대해 알아보았습니다. 총 8가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#Kubernetes #Pod #Service #Deployment #ConfigMap