피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Ingress 도입을 통한 월 $12k 비용 절감 및 리소스 최적화 전략
Kubernetes for Docker Users
AI 요약
Context
단일 Docker 컨테이너 운영 환경의 수동 관리 한계와 스케일 아웃 시 발생하는 관리 복잡성 증대 상황 분석. 개별 LoadBalancer 과다 사용 및 리소스 제한 설정 부재로 인한 비용 낭비와 시스템 불안정성 문제 직면.
Technical Solution
- Control Plane 기반의 Desired State 관리를 통한 컨테이너 배포 및 복구 자동화 구조 설계
- 개별 Service별 LoadBalancer 할당 방식에서 단일 Ingress Controller 기반 Host-based Routing 체계로 전환하여 네트워크 비용 최적화
- Resource Requests 및 Limits 설정을 통한 노드 자원 고갈 방지 및 Pod Eviction 현상 원천 차단
- Stateless 앱은 Deployment를, 고유 식별자와 지속성 저장소가 필요한 데이터베이스는 StatefulSet을 분리 적용하는 워크로드 최적화
- HPA의 maxReplicas 제한과 Cluster Autoscaler 연동을 통한 무분별한 노드 확장 억제 및 비용 제어
- CPU 집약적 Batch Job의 경우 AKS 대신 Azure Batch를 활용한 비용 효율적 인프라 구성
실천 포인트
- 모든 컨테이너에 CPU/Memory Request 및 Limit 설정 여부 확인 - 메모리 Limit을 노드 전체 용량의 80% 이하로 설정하여 시스템 데몬 가용성 확보 - 서비스 외부 노출 시 LoadBalancer 남용을 피하고 Ingress Controller 도입 검토 - HPA 설정 시 반드시 maxReplicas 상한선을 지정하여 비용 폭증 방지 - 상태 저장 여부에 따라 Deployment와 StatefulSet을 엄격히 구분하여 적용