이 문서에서는 Google Kubernetes Engine (GKE) 문서를 탐색하여 비용 최적화 가이드라인과 권장사항을 찾는 방법을 설명합니다. GKE는 애플리케이션 안정성을 유지하면서 클러스터 비용을 최소화하는 데 사용할 수 있는 광범위한 자동 확장 및 예약 기능을 제공합니다.
모든 GKE 권장사항의 통합 개요는 GKE 권장사항을 참고하세요.다음 사항을 이미 알고 있어야 합니다.
개요
GKE를 구현할 때는 애플리케이션 및 비즈니스 요구사항에 맞게 다양한 기술적 측면을 고려해야 합니다. 네트워킹, 보안, 스토리지, 기타 기술적 측면을 정의하는 것 외에도 비즈니스 요구사항을 충족하기 위해 비용과 성능을 모두 평가해야 합니다. 비용과 성능을 별개의 항목으로 취급하는 대신 인프라 계획의 초기 단계부터 통합하여 안정성과 클라우드 지출을 모두 결정하는 통합 관계를 정의해야 합니다. 저렴한 비용과 높은 안정성이 기대되지만 확장할수록 이러한 절충점을 관리하는 복잡성이 증가합니다.
낮은 비용과 애플리케이션 안정성을 달성하려면 다음 GKE 기능을 설정하거나 조정하면 됩니다.
- GKE 구성
- 워크로드 구성
- 비용 기준 및 가시성
GKE Autopilot 사용
소규모 샌드박스 또는 개발 환경의 경우 Autopilot 클러스터를 선택합니다. Autopilot에서 GKE는 노드를 동적으로 관리하며 요청된 포드 용량에 대해서만 요금이 청구되므로 VM, 노드 운영체제, 시스템 오버헤드 요금을 방지할 수 있습니다.
자세한 내용은 GKE Autopilot 개요를 참고하세요.
자동 확장 작동 방식 이해하기
GKE 자동 확장 컨트롤러는 트래픽 요청이 변경되면 리소스를 동적으로 조정합니다.
사용률 측정항목을 기반으로 포드 추가 및 삭제
HorizontalPodAutoscaler (HPA)는 CPU 또는 맞춤 측정항목을 기반으로 포드를 추가하거나 삭제합니다.
수평형 포드 자동 확장을 이해하고 구성하려면 다음 GKE 문서를 참고하세요.
추가 복제본 Pod가 시작되는 동안 트래픽 급증을 처리하는 버퍼를 유지하도록 타겟 사용률 기준 (예: 70% 또는 80%)을 구성합니다.
사용률 측정항목을 기반으로 포드 확장
수평형 포드 자동 확장을 사용하지 않는 워크로드의 경우 또는 피크 워크로드를 알 수 없는 경우 VerticalPodAutoscaler (VPA)를 사용하여 컨테이너 CPU 및 메모리 요청의 크기를 동적으로 조정합니다.
수직형 포드 자동 확장을 이해하고 구성하려면 다음 GKE 문서를 참고하세요.
프로덕션과 유사한 환경에서 최소 24시간 (일주일이 이상적) 동안 Off (추천 전용) 모드로 VPA를 유지하여 대표적인 트래픽 패턴을 포착합니다. 불규칙한 크기 조정이 발생하지 않도록 하려면 Initial 또는 Auto 모드를 사용 설정하기 전에 VerticalPodAutoscaler 객체에서 명시적인 최소 및 최대 경계를 지정하세요.
클러스터 자동 확장 처리를 사용하여 인프라 확장 자동화
측정항목 부하가 아닌 활성 예약 시뮬레이션을 기반으로 기본 컴퓨팅 노드를 확장하려면 GKE Standard 노드 풀에서 클러스터 자동 확장 처리기를 사용 설정하세요. 기준 야간 용량을 지원하는 최소 노드 매개변수를 지정합니다.
시스템 및 애플리케이션 포드에 항상 PodDisruptionBudget (PDB) 객체를 구성하세요. 이 구성을 사용하면 활용도가 낮은 노드 풀을 통합하거나 축소할 때 클러스터 자동 확장 처리로 인해 서비스가 실수로 중단되지 않습니다.
클러스터 자동 확장 처리를 이해하고 구성하려면 다음 GKE 문서를 참고하세요.
노드 풀 자동 생성을 사용하여 동적 노드 풀 배포
노드 풀 자동 생성을 사용 설정하여 대기 중인 포드의 예약 매개변수에 정확히 맞는 모양, CPU 수 또는 메모리 제한이 있는 맞춤 GKE 노드 풀을 자동으로 생성합니다. 이 기능은 크기가 큰 노드에 남아 있는 리소스를 최소화합니다.
노드 풀 자동 생성을 이해하고 구성하려면 다음 GKE 문서를 참고하세요.
자동 확장 체크리스트
인프라 특성
클러스터 하드웨어, 위치, 노드 네트워크 규칙을 비용 최적화 우선순위에 맞게 조정합니다.
적절한 머신 유형 선택
사용자의 위치와 클러스터가 액세스해야 하는 데이터의 위치에 따라 클러스터에 적합한 머신 유형을 선택합니다.
자세한 내용은 머신 계열 리소스 및 비교 가이드를 참고하세요.
스팟 VM에 내결함성 워크로드 배포
스팟 VM을 사용하여 주문형 VM 인스턴스에 비해 최대 91% 할인된 가격으로 스테이트리스(Stateless), 내결함성 또는 일괄 워크로드를 실행하세요.
자세한 내용은 다음 GKE 문서를 참고하세요.
효율적인 머신 계열 및 OS 시스템 설정 매핑
비용 효율적인 인스턴스 프로필 (예: E2 VM 아키텍처)로 노드 풀 머신 설정을 맞춤설정합니다.
노드 크기 조정, 스팟 VM 선점 타이밍 구성, 커널 구성에 대한 자세한 내용은 노드 풀 정보를 참고하세요.
적합한 리전 선택
지연 시간이 사용자에게 영향을 미치지 않는 경우 운영 비용이 낮은 Compute Engine 리전에서 클러스터 워크로드를 실행하세요.
자세한 내용은 Compute Engine 리전 선택 권장사항을 참고하세요.
CUD 가입
약정 사용 할인 (CUD)을 구매하여 1년 또는 3년 동안 기준 컴퓨팅 리소스에 대해 대폭 할인된 가격 (최대 70%)을 확보하세요.
자세한 내용은 리소스 기반 약정 사용 할인을 참고하세요.
네트워킹 비용 고려
리전 및 멀티 영역 GKE 클러스터는 애플리케이션 안정성을 개선하지만 내부 교차 영역 네트워크 이그레스 비용이 발생할 수 있습니다.
네트워킹 비용을 최소화하고 관리하려면 다음을 고려하세요.
- 영역 간 데이터 전송: 리전 클러스터는 영역 간에 워크로드를 분산하여 가용성을 높이지만 이러한 영역 간에 전송되는 데이터와 관련된 비용이 발생합니다.
자세한 내용은 모든 네트워킹 가격 책정을 참조하세요.
비프로덕션 환경에 단일 영역 클러스터 배포
비프로덕션 환경에서는 영역 간 네트워크 요금을 방지하고 VM 오버헤드를 줄이기 위해 리전 또는 멀티 영역 클러스터 대신 단일 영역 클러스터를 배포하세요.
자세한 내용은 클러스터 구성 선택사항 정보를 참고하세요.
클러스터 DNS 확인 경로 및 인그레스 트래픽 최적화
클러스터 DNS 변환 및 인그레스 트래픽을 최적화하려면 NodeLocal DNSCache 및 네트워크 엔드포인트 그룹 (NEG)을 배포하면 됩니다.
DNS 사용량이 많은 워크로드를 실행하면 NodeLocal DNSCache가 각 노드에서 로컬 DNS 데몬을 실행합니다. 이 구성을 사용하면 높은 쿼리 부하로 인해 CoreDNS가 소진되지 않으므로 CoreDNS를 확장할 필요가 없으며 전체 GKE 비용이 절감됩니다.
인그레스 트래픽의 경우 NEG를 통한 컨테이너 기반 부하 분산은 인스턴스 그룹 대신 포드 IP 주소로 트래픽을 직접 라우팅합니다. 이 직접 라우팅은 포드 확장 작업 중에 원활한 트래픽 리디렉션을 지원합니다.
자세한 내용은 다음을 참고하세요.
네임스페이스별 리소스 할당량 적용
멀티 테넌트 클러스터의 네임스페이스별로 표준 Kubernetes ResourceQuota 객체를 배포하여 CPU 및 메모리 모양 임계값을 잠그고 개별 팀이 예기치 않은 컴퓨팅 요금을 유발하는 규정 미준수 워크로드를 예약하지 못하도록 합니다.
자세한 내용은 Kubernetes 문서의 네임스페이스를 참고하세요.
정책 컨트롤러 감사 구현
정책 컨트롤러를 배포하여 기업 표준에 대한 클러스터 준수를 동적으로 감사하고 시행합니다. 정책 컨트롤러는 허용 제어를 사용하여 잘못 구성된 리소스를 거부합니다.
자세한 내용은 다음을 참조하세요.
CI/CD 파이프라인에서 규정을 준수하지 않는 매니페스트 차단
개발 수명 주기 초기에 비용 정책 준수 여부를 검증합니다.
커밋 전 또는 풀 요청 검사에 유효성 검사 스크립트 (예: kpt 파싱)를 통합하여 클러스터에 도달하기 전에 규정을 준수하지 않는 매니페스트를 감사하고 차단합니다.
자세한 내용은 CI 파이프라인에서 회사 정책에 따라 앱 유효성 검사를 참고하세요.
인프라 체크리스트
애플리케이션 및 워크로드 최적화
리소스를 효율적으로 사용하고 운영 오버헤드를 줄이도록 워크로드를 구성합니다.
일치하는 메모리 요청 및 한도 지정
배포 전에 정확한 컨테이너 CPU 및 메모리 요청을 지정합니다. CPU의 경우 서비스 수준 목표 (SLO)를 충족하도록 요청을 구성하되 제한은 무제한으로 둡니다. 메모리의 경우 요청된 할당이 메모리 한도와 일치하는지 확인합니다.
자세한 내용은 Kubernetes 문서의 컨테이너에 할당된 CPU 및 메모리 리소스 크기 조정을 참고하세요.
컨테이너 시작 시간 단축
이미지 다운로드 시간을 최소화하려면 컨테이너 이미지를 최대한 작게 만드세요.
PDB 구성
GKE가 축소되거나 노드 업그레이드가 발생할 때 자발적 중단을 제한하고 안정성을 보장하도록 애플리케이션 복제본의 PodDisruptionBudget (PDB) 객체를 지정합니다.
자세한 내용은 애플리케이션에 중단 예산 지정을 참고하세요.
유의미한 준비 상태 및 활성 프로브 설정
모든 컨테이너의 준비 및 활성 프로브를 구성하여 GKE가 준비된 포드로만 트래픽을 라우팅하고 실패한 인스턴스를 다시 시작하여 자동 확장 중에 트래픽 손실을 방지하도록 합니다.
자세한 내용은 활성, 준비 상태, 시작 프로브 구성을 참고하세요.
단계적 애플리케이션 종료 구성
SIGTERM 신호를 수신하거나, 진행 중인 요청을 종료하기 전에 완료하거나, preStop 후크를 구성하여 단계적 종료를 위해 컨테이너를 준비합니다.
자세한 내용은 선점형 VM의 종료 및 단계적 종료를 참고하세요.
지수 백오프로 재시도 구현
애플리케이션 또는 서비스 메시 수준에서 지수 백오프 재시도를 구현하여 일시적인 오류 또는 잠재적인 스팟 VM 선점을 처리합니다.
자세한 내용은 Istio 문서의 재시도를 참고하세요.
애플리케이션 및 워크로드 최적화 체크리스트
비용 기준 및 가시성
비용을 최적화하려면 먼저 GKE 지출과 지출이 어떻게 할당되는지 파악해야 합니다. 이러한 가시성을 통해 비용을 발생시킨 팀과 비즈니스 단위에 비용을 귀속시킬 수 있습니다.
다음 GKE 문서에서는 GKE 청구, 리소스 사용량, 기준 측정항목에 대한 세부적인 가시성을 확보하는 방법을 설명합니다.
GKE 비용 할당 사용 설정
GKE 비용 할당을 사용 설정하여 워크로드 리소스 요청 및 관련 비용을 파악하세요. 비용 할당은 클러스터 비용을 워크로드의 네임스페이스 및 Kubernetes 라벨에 할당합니다.
이 세부정보를 BigQuery로 내보내 Cloud Billing에서 데이터를 분석하세요. 이 분석을 사용하여 청구 급증을 유발하는 워크로드를 식별하고, 비용을 환불하고, 리소스 요청을 최적화하세요.
자세한 내용은 GKE 리소스 할당 및 클러스터 비용에 관한 주요 지출 통계 보기를 참고하세요.
로그 및 측정항목 수집량 검토
클러스터에 Cloud Logging 및 Cloud Monitoring을 사용 설정하면 비용이 발생합니다. 로그 및 맞춤 측정항목 수집량이 많으면 예상치 못한 요금이 발생할 수 있습니다. 수집되는 로그 수준과 맞춤 측정항목을 중앙에서 감사합니다.
높은 로깅 API 사용량 또는 로그 쓰기 제한 시간 초과 문제 해결에 대한 자세한 내용은 다음을 참고하세요.
측정항목 서버 상태 모니터링
GKE의 기본 제공 자동 확장 컨트롤러는 CPU 및 메모리 측정항목을 가져오기 위해 측정항목 서버 배포에 의존하므로 측정항목 서버 배포의 상태를 모니터링합니다.
자세한 내용은 수평형 포드 자동 확장 문제 해결을 참고하세요.
비용 절감 문화 조성
개발자에게 클라우드 지출 대시보드에 대한 액세스 권한을 제공하고 FinOps 교육을 마련하여 아키텍처 결정을 비즈니스 비용 예산에 맞춥니다.
조직의 비용 효율성 문화에 대한 자세한 내용은 비용 절감 문화 확산을 참고하세요.
비용 기준 및 가시성 체크리스트
다음 단계
비용 효율성에 필요한 아키텍처 원칙 및 조직 문화에 대한 자세한 내용은 GKE에서 비용 최적화된 Kubernetes 애플리케이션을 실행하기 위한 권장사항을 참고하세요.