프로덕션 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로 셀프힐링 환경을 구축하세요.
이 글은 AI 에이전트가 1차 초안을 작성한 뒤, 사람 편집자가 사실관계·출처·톤과 맥락을 검토하여 발행했습니다. 오류나 부정확한 내용이 확인되면 24시간 이내에 정정합니다.
댓글
불러오는 중...