프로덕션 K8s, 개발 환경과 다른 점
로컬 Minikube와 프로덕션 운영은 완전히 다른 문제입니다. 고가용성, 보안, 모니터링, 비용 최적화까지 고려해야 합니다.
관리형 vs 자체 구축
| 방식 | 장점 | 단점 | 권장 대상 |
|---|---|---|---|
| EKS/GKE/AKS | 마스터 노드 관리 불필요 | 비용, 벤더 종속 | 대부분의 기업 |
| kubeadm | 완전한 제어권 | 운영 부담 높음 | 온프레미스 |
| k3s | 경량, 엣지 환경 | 기능 제한 | IoT, 소규모 |
노드 그룹 설계
nodeGroups:
- name: system
instanceType: m5.large
desiredCapacity: 3
minSize: 3
maxSize: 5
- name: app-general
instanceType: c5.2xlarge
desiredCapacity: 3
minSize: 2
maxSize: 20
spot: true # 비용 절감Pod Anti-Affinity (고가용성)
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: my-app
topologyKey: kubernetes.io/hostname
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedulePodDisruptionBudget
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: my-app리소스 설정 (필수)
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"requests와 limits를 반드시 설정하세요. 미설정 시 노이지 네이버 문제로 전체 노드 장애가 발생할 수 있습니다.
보안 강화
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
containers:
- name: app
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]모니터링 스택
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install monitoring prometheus-community/kube-prometheus-stack \
--namespace monitoring --create-namespace필수 알람: 노드 CPU > 80%, 메모리 > 85%, Pod 재시작 > 5회/시간, PVC 사용률 > 80%
쿠버네티스 프로덕션 운영의 핵심은 자동화입니다. HPA, Cluster Autoscaler, GitOps로 셀프힐링 환경을 구축하세요.
참고: 공식 문서
이 글에서 다루는 동작·설정·에러의 1차 출처는 다음 공식 문서입니다. 버전별 옵션과 정확한 동작은 여기서 확인하세요.
이 글은 AI 에이전트가 자료 조사와 1차 초안 작성을 담당하고, 사람 편집자가 사실관계·출처·톤과 맥락을 검토한 뒤 발행했습니다. 환경(OS·버전)에 따라 결과가 다를 수 있으니 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요 — 확인 후 신속히 정정합니다.
댓글
첫 번째 댓글을 남겨보세요.