Kubernetes 운영 체크리스트 — 프로덕션 배포 전 필수 점검 항목
Kubernetes 클러스터를 프로덕션에서 안정적으로 운영하기 위한 34가지 체크리스트. 리소스, 보안, 네트워크, 모니터링 영역별 정리.
TestForge Team ·
왜 체크리스트가 필요한가
Kubernetes는 기능이 방대해서 “일단 동작하는” 수준과 “프로덕션 수준”의 차이가 큽니다.
장애의 70%는 예측 가능한 설정 누락에서 발생합니다.
1. 리소스 관리
- 모든 Deployment에
resources.requests와resources.limits설정 - HorizontalPodAutoscaler(HPA) 설정 (CPU/메모리 기반)
- PodDisruptionBudget(PDB) 설정 — 롤링 업데이트 중 최소 가용 Pod 보장
- LimitRange로 네임스페이스 기본 리소스 제한
- ResourceQuota로 네임스페이스 총량 제한
# PodDisruptionBudget 예시
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-app-pdb
spec:
minAvailable: 2 # 최소 2개 Pod 유지
selector:
matchLabels:
app: my-app
2. 가용성
-
replicas최소 2 이상 (단일 Pod는 SPOF) -
topologySpreadConstraints로 AZ 분산 배치 - RollingUpdate 전략 설정 (
maxSurge,maxUnavailable) - Liveness / Readiness Probe 설정
-
terminationGracePeriodSeconds설정 (기본 30초)
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app: my-app
3. 보안
-
runAsNonRoot: true설정 -
readOnlyRootFilesystem: true설정 -
allowPrivilegeEscalation: false설정 - ServiceAccount 최소 권한 원칙 (RBAC)
- Secret은 환경변수 대신 파일 마운트로 사용
- NetworkPolicy로 Pod 간 통신 제한
- 이미지 취약점 스캔 (Trivy, Snyk)
securityContext:
runAsNonRoot: true
runAsUser: 1000
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
4. 네트워크
- Ingress에 TLS 설정 (cert-manager)
- Service type은
ClusterIP기본, 외부 노출 필요 시만LoadBalancer - NetworkPolicy로 네임스페이스 간 접근 제어
- DNS TTL 설정 확인 (ndots 설정)
5. 스토리지
- PersistentVolume의
reclaimPolicy확인 (Retain권장) - StorageClass에
allowVolumeExpansion: true - StatefulSet 사용 시
volumeClaimTemplates설정
6. 모니터링 & 알림
- Prometheus + Grafana 설치
- 핵심 알림 설정: Pod 재시작, Node NotReady, HPA 최대값 도달
- 로그 수집: Fluent Bit → Elasticsearch/Loki
-
kubectl top nodes/kubectl top pods동작 확인
# 알림 예시 (Prometheus Alert Rule)
- alert: PodCrashLooping
expr: rate(kube_pod_container_status_restarts_total[15m]) > 0
for: 5m
labels:
severity: critical
7. 배포 프로세스
-
latest태그 사용 금지 — 버전 태그 고정 -
imagePullPolicy: Always설정 - Helm Chart 또는 Kustomize로 환경별 설정 분리
- GitOps (ArgoCD/Flux) 적용
- Rollback 절차 문서화 및 테스트
# 빠른 롤백
kubectl rollout undo deployment/my-app
# 특정 버전으로 롤백
kubectl rollout undo deployment/my-app --to-revision=3
8. 비용 최적화
- Spot/Preemptible 인스턴스 활용 (비중요 워크로드)
- 미사용 네임스페이스/리소스 정리
- VPA(VerticalPodAutoscaler)로 requests 최적화
- Cluster Autoscaler 설정
빠른 클러스터 건강 점검
# Node 상태
kubectl get nodes -o wide
# 재시작 많은 Pod
kubectl get pods -A | grep -v Running | grep -v Completed
# 리소스 사용률
kubectl top nodes
kubectl top pods -A --sort-by=memory
# 최근 이벤트 (경고만)
kubectl get events -A --field-selector type=Warning --sort-by='.lastTimestamp'