본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 11. 3. · 36 Views
Kubernetes 실무 활용 팁
쿠버네티스 실무 환경에서 자주 사용하는 핵심 명령어와 설정 방법을 소개합니다. 초급 개발자가 실제 프로젝트에서 바로 활용할 수 있는 실용적인 예제들을 담았습니다.
들어가며
이 글에서는 Kubernetes 실무 활용 팁에 대해 상세히 알아보겠습니다. 총 10가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Pod_생성과_조회
- Deployment로_애플리케이션_배포
- Service로_네트워크_노출
- ConfigMap으로_설정_관리
- Secret으로_민감정보_관리
- Resource_제한_설정
- Health_Check_설정
- Namespace로_환경_분리
- 자주_사용하는_kubectl_명령어
- Rolling_Update와_Rollback
1. Pod 생성과 조회
개요
Pod는 쿠버네티스에서 배포할 수 있는 가장 작은 단위입니다. YAML 파일로 간단하게 Pod를 정의하고 생성할 수 있습니다.
코드 예제
# pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: nginx
image: nginx:latest
설명
apiVersion과 kind로 리소스 타입을 지정하고, metadata에 이름을, spec에 컨테이너 정보를 작성합니다. kubectl apply -f pod.yaml 명령으로 생성합니다.
2. Deployment로 애플리케이션 배포
개요
Deployment는 Pod의 복제본을 관리하고 자동으로 재시작해주는 리소스입니다. 실무에서 가장 많이 사용하는 배포 방식입니다.
코드 예제
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: nginx
image: nginx:1.21
설명
replicas로 Pod 개수를 지정하고, selector로 관리할 Pod를 선택합니다. Rolling Update 방식으로 무중단 배포가 가능합니다.
3. Service로 네트워크 노출
개요
Service는 Pod들을 네트워크로 노출시켜 외부에서 접근할 수 있게 합니다. ClusterIP, NodePort, LoadBalancer 타입을 선택할 수 있습니다.
코드 예제
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: LoadBalancer
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
설명
selector로 연결할 Pod를 지정하고, port로 외부 포트와 내부 targetPort를 매핑합니다. LoadBalancer 타입은 클라우드에서 자동으로 외부 IP를 할당합니다.
4. ConfigMap으로 설정 관리
개요
ConfigMap은 환경 변수나 설정 파일을 코드와 분리해서 관리할 수 있게 해줍니다. 환경별로 다른 설정을 쉽게 적용할 수 있습니다.
코드 예제
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
DATABASE_URL: "postgres://db:5432"
API_KEY: "dev-key-123"
---
# Pod에서 사용
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: DATABASE_URL
설명
ConfigMap에 key-value 형태로 설정을 저장하고, Pod에서 환경 변수로 주입받아 사용합니다. 코드 수정 없이 설정만 변경할 수 있습니다.
5. Secret으로 민감정보 관리
개요
Secret은 비밀번호, API 키 같은 민감한 정보를 안전하게 저장하는 리소스입니다. Base64로 인코딩되어 저장됩니다.
코드 예제
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
password: cGFzc3dvcmQxMjM=
---
# Pod에서 사용
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
설명
Secret에 민감 정보를 저장하고 Pod에서 환경 변수로 주입받습니다. ConfigMap과 사용법은 비슷하지만 보안이 강화되었습니다.
6. Resource 제한 설정
개요
CPU와 메모리 리소스를 제한하여 Pod가 과도한 자원을 사용하지 않도록 합니다. 안정적인 클러스터 운영에 필수적입니다.
코드 예제
containers:
- name: my-app
image: nginx:latest
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"
설명
requests는 Pod가 보장받는 최소 리소스이고, limits는 최대 사용 가능한 리소스입니다. limits를 초과하면 Pod가 재시작될 수 있습니다.
7. Health Check 설정
개요
Liveness와 Readiness Probe로 Pod의 상태를 체크하고 문제가 있으면 자동으로 재시작하거나 트래픽을 차단합니다.
코드 예제
containers:
- name: my-app
image: my-app:latest
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
periodSeconds: 5
설명
livenessProbe는 컨테이너가 살아있는지 체크하고, readinessProbe는 트래픽을 받을 준비가 됐는지 확인합니다. 실패 시 자동으로 처리됩니다.
8. Namespace로 환경 분리
개요
Namespace는 클러스터 내에서 리소스를 논리적으로 분리하는 방법입니다. 개발, 스테이징, 프로덕션 환경을 나눌 수 있습니다.
코드 예제
apiVersion: v1
kind: Namespace
metadata:
name: development
---
# 특정 Namespace에 리소스 생성
kubectl apply -f deployment.yaml -n development
# Namespace 내 Pod 조회
kubectl get pods -n development
설명
Namespace를 생성하고 -n 옵션으로 특정 Namespace에 리소스를 배포합니다. 환경별로 격리하여 관리할 수 있습니다.
9. 자주 사용하는 kubectl 명령어
개요
실무에서 매일 사용하는 필수 kubectl 명령어들입니다. 로그 확인, Pod 상태 조회, 디버깅에 활용됩니다.
코드 예제
# Pod 목록 조회
kubectl get pods
# Pod 로그 확인
kubectl logs my-app-pod
# Pod 내부 접속
kubectl exec -it my-app-pod -- /bin/bash
# Pod 상세 정보
kubectl describe pod my-app-pod
설명
get으로 리소스 목록을 보고, logs로 로그를 확인하며, exec로 컨테이너 내부에 접속합니다. describe로 상세한 이벤트와 상태를 확인할 수 있습니다.
10. Rolling Update와 Rollback
개요
애플리케이션을 무중단으로 업데이트하고, 문제가 생기면 이전 버전으로 되돌릴 수 있습니다. 안전한 배포를 위한 필수 기능입니다.
코드 예제
# 이미지 업데이트
kubectl set image deployment/my-app nginx=nginx:1.22
# Rollout 상태 확인
kubectl rollout status deployment/my-app
# 이전 버전으로 롤백
kubectl rollout undo deployment/my-app
설명
set image로 새 버전을 배포하면 자동으로 Rolling Update가 진행됩니다. rollout status로 진행 상황을 확인하고, 문제 시 undo로 즉시 롤백할 수 있습니다.
마치며
이번 글에서는 Kubernetes 실무 활용 팁에 대해 알아보았습니다. 총 10가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#Kubernetes #Pod #Deployment #Service #ConfigMap
이 카드뉴스가 포함된 코스
댓글 (0)
함께 보면 좋은 카드 뉴스
UX와 협업 패턴 완벽 가이드
AI 에이전트와 사용자 간의 효과적인 협업을 위한 UX 패턴을 다룹니다. 프롬프트 핸드오프부터 인터럽트 처리까지, 현대적인 에이전트 시스템 설계의 핵심을 배웁니다.
자가 치유 및 재시도 패턴 완벽 가이드
AI 에이전트와 분산 시스템에서 필수적인 자가 치유 패턴을 다룹니다. 에러 감지부터 서킷 브레이커까지, 시스템을 스스로 복구하는 탄력적인 코드 작성법을 배워봅니다.
Feedback Loops 컴파일러와 CI/CD 완벽 가이드
컴파일러 피드백 루프부터 CI/CD 파이프라인, 테스트 자동화, 자가 치유 빌드까지 현대 개발 워크플로우의 핵심을 다룹니다. 초급 개발자도 쉽게 이해할 수 있도록 실무 예제와 함께 설명합니다.
실전 MCP 통합 프로젝트 완벽 가이드
Model Context Protocol을 활용한 실전 통합 프로젝트를 처음부터 끝까지 구축하는 방법을 다룹니다. 아키텍처 설계부터 멀티 서버 통합, 모니터링, 배포까지 운영 레벨의 MCP 시스템을 구축하는 노하우를 담았습니다.
MCP 동적 도구 업데이트 완벽 가이드
AI 에이전트의 도구를 런타임에 동적으로 로딩하고 관리하는 방법을 알아봅니다. 플러그인 시스템 설계부터 핫 리로딩, 보안까지 실무에서 바로 적용할 수 있는 내용을 다룹니다.