이 문서는 Google Kubernetes Engine (GKE) 문서를 탐색하여 비용 최적화를 위한 가이드라인과 권장사항을 찾는 데 도움이 됩니다. GKE는 애플리케이션 안정성을 유지하면서 클러스터 비용을 최소화하는 데 사용할 수 있는 광범위한 자동 확장 및 예약 기능을 제공합니다.
모든 GKE 권장사항의 통합 개요는 GKE 권장사항을 참조하세요.다음 사항에 이미 익숙해야 합니다.
개요
GKE를 구현할 때는 애플리케이션 및 비즈니스 요구사항에 맞게 다양한 기술적 측면을 고려해야 합니다. 네트워킹, 보안, 스토리지, 기타 기술적 측면을 정의하는 것 외에도 비즈니스 요구사항을 충족하기 위해 비용과 성능을 모두 평가해야 합니다. 비용과 성능을 별개의 항목으로 취급하는 대신 인프라 계획의 초기 단계부터 통합하여 안정성과 클라우드 지출을 모두 결정하는 통합 관계를 정의해야 합니다. 저렴한 비용과 높은 안정성이 기대되지만 확장할수록 이러한 절충안을 관리하는 복잡성이 증가합니다.
낮은 비용과 애플리케이션 안정성을 달성하려면 다음 GKE 기능을 설정하거나 조정하면 됩니다.
- GKE 구성
- 워크로드 구성
- 비용 기준 및 가시성
Compute Advisor (미리보기)를 사용하여 비용 최적화 권장사항을 검색하고 구현할 수도 있습니다. 자세한 내용은 Compute Advisor 사용을 참조하세요.
GKE Autopilot 사용
소규모 샌드박스 또는 개발 환경의 경우 Autopilot 클러스터를 선택합니다. Autopilot에서 GKE는 노드를 동적으로 관리하며 요청된 포드 용량에 대해서만 요금이 청구되므로 VM, 노드 운영체제, 시스템 오버헤드 요금을 피할 수 있습니다.
자세한 내용은 GKE Autopilot 개요를 참조하세요.
자동 확장 작동 방식 이해
GKE 자동 확장 컨트롤러는 트래픽 요청이 변경됨에 따라 리소스를 동적으로 조정합니다.
사용률 측정항목을 기반으로 포드 추가 및 삭제
HorizontalPodAutoscaler (HPA)는 CPU 또는 커스텀 측정항목을 기반으로 포드를 추가하고 삭제합니다.
수평형 포드 자동 확장을 이해하고 구성하려면 다음 GKE 문서를 참조하세요.
추가 복제본 포드가 시작되는 동안 트래픽 급증을 처리하는 버퍼를 유지하도록 대상 사용률 임계값 (예: 70% 또는 80%)을 구성합니다.
사용률 측정항목을 기반으로 포드 확장
수평형 포드 자동 확장을 사용하지 않는 워크로드 또는 최대 워크로드를 알 수 없는 경우 VerticalPodAutoscaler (VPA)를 사용하여 컨테이너 CPU 및 메모리 요청의 크기를 동적으로 조정합니다.
수직형 포드 자동 확장을 이해하고 구성하려면 다음 GKE 문서를 참조하세요.
프로덕션과 유사한 환경에서 대표적인 트래픽 패턴을 캡처하려면 VPA를 Off (권장사항 전용) 모드로 최소 24시간 (이상적으로는 1주일) 동안 유지합니다. 불규칙한 크기 조정이 발생하지 않도록 하려면 Initial 또는 Auto 모드를 사용 설정하기 전에 VerticalPodAutoscaler 객체에서 명시적 최소 및 최대 경계를 지정합니다.
클러스터 자동 확장 처리를 사용하여 인프라 확장 자동화
측정항목 부하가 아닌 활성 예약 시뮬레이션을 기반으로 기본 컴퓨팅 노드를 확장하려면 GKE Standard 노드 풀에서 클러스터 자동 확장 처리를 사용 설정합니다. 기준 야간 용량을 지원하도록 최소 노드 매개변수를 지정합니다.
시스템 및 애플리케이션 포드에 항상 PodDisruptionBudget (PDB) 객체를 구성합니다. 이 구성은 클러스터 자동 확장 처리에서 사용률이 낮은 노드 풀을 통합하거나 축소할 때 실수로 서비스 중단을 일으키지 않도록 하는 데 도움이 됩니다.
클러스터 자동 확장 처리를 이해하고 구성하려면 다음 GKE 문서를 참조하세요.
노드 풀 자동 생성을 사용하여 동적 노드 풀 배포
노드 풀 자동 생성을 사용 설정하여 대기 중인 포드의 예약 매개변수에 정확히 맞는 모양, CPU 수 또는 메모리 한도가 있는 커스텀 GKE 노드 풀을 자동으로 생성합니다. 이 기능은 크기가 큰 노드에 남은 리소스를 최소화합니다.
노드 풀 자동 생성을 이해하고 구성하려면 다음 GKE 문서를 참조하세요.
자동 확장 체크리스트
인프라 특성
클러스터 하드웨어, 위치, 노드 네트워크 규칙을 비용 최적화 우선순위에 맞춥니다.
적절한 머신 유형 선택
사용자의 위치와 클러스터에서 액세스해야 하는 데이터의 위치를 기반으로 클러스터에 적합한 머신 유형을 선택합니다.
자세한 내용은 머신 계열 리소스 및 비교 가이드를 참조하세요.
스팟 VM에 내결함성 워크로드 배포
스팟 VM을 사용하여 스테이트리스(Stateless), 내결함성 또는 일괄 워크로드를 주문형 VM 인스턴스에 비해 최대 91% 할인된 가격으로 실행합니다.
자세한 내용은 다음 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을 사용 설정하면 비용이 발생합니다. 로그 및 커스텀 측정항목 수집 볼륨이 크면 예기치 않은 요금이 발생할 수 있습니다. 수집되는 로그 수준 및 커스텀 측정항목을 중앙에서 감사합니다.
높은 Logging API 사용량 또는 로그 쓰기 한도 제한 시간 문제 해결에 대한 자세한 내용은 다음을 참조하세요.
측정항목 서버 상태 모니터링
GKE의 기본 제공 자동 확장 컨트롤러는 CPU 및 메모리 측정항목을 가져오기 위해 측정항목 서버 배포에 의존하므로 측정항목 서버 배포의 상태를 모니터링합니다.
자세한 내용은 수평형 포드 자동 확장 문제 해결을 참조하세요.
비용 절약 문화 조성
개발자에게 클라우드 지출 대시보드에 대한 액세스 권한을 제공하고 FinOps 교육을 설정하여 아키텍처 결정을 비즈니스 비용 예산에 맞춥니다.
조직 비용 효율성 문화에 대한 자세한 내용은 비용 절약 문화 확산을 참조하세요.
비용 기준 및 가시성 체크리스트
Compute Advisor 사용
Compute Advisor는 GKE를 위한 복원력 있고 비용 효율적인 아키텍처를 설계하는 데 도움이 되는 Gemini 기반의 Google Cloud 콘솔에 있는 AI 기반 인터페이스입니다.
Compute Advisor는 배포 전에 조직의 정책 및 리소스 할당량을 확인하면서 flex-start VM 및 스팟 VM에 대한 거의 실시간 가용성 가이드를 제공합니다. Compute Advisor는 주문형 리소스가 필요한 워크로드에 대한 가용성 가이드를 제공하지 않습니다.
콘솔 Google Cloud 에서 Gemini에 액세스하려면 다음 단계를 완료하세요.
-
콘솔 Google Cloud 에서 개요 페이지로 이동합니다.
-
Compute Advisor로 인프라 설계 섹션에서 프롬프트를 제출합니다. Gemini가 응답 생성을 시작합니다.
-
아키텍처 권장사항을 생성하려면 Compute Advisor에서 다음 예시 프롬프트 중 하나를 실행합니다. Compute Advisor에서 프롬프트 실행 버튼을 클릭하면 Google Cloud 콘솔이 로드되는 데 15초 이상 걸릴 수 있습니다.
자동 확장 및 빈 패킹:
사용 사례: 빈 패킹을 최대화하고 유휴 CPU 오버헤드를 최소화하려면 이 프롬프트를 사용하여 GKE 클러스터 자동 확장 및 노드 풀의 전략을 구성합니다.
Configure a GKE cluster to use autoscaler and node pool strategy to maximize bin packing and minimize idle CPU overhead.멀티테넌시 거버넌스:
사용 사례: 개발 네임스페이스를 예산 범위 내로 유지하려면 이 프롬프트를 사용하여 멀티 테넌트 GKE 클러스터의 ResourceQuota 정책 초안을 작성합니다.
Draft a ResourceQuota policy for a multi-tenant GKE cluster to keep development namespaces within budget bounds.워크로드 최적화:
사용 사례: 리소스 수요가 가변적인 일괄 워크로드에 GKE Autopilot 모드와 일반 모드 중 무엇을 사용해야 하는지 결정하는 데 도움이 되도록 이 프롬프트를 사용하여 권장사항을 확인합니다.
Recommend whether to use GKE Autopilot or Standard mode for a batch processing workload with highly variable resource demands.
다음 단계
비용 효율성에 필요한 아키텍처 원칙 및 조직 문화에 대한 자세한 내용은 GKE에서 비용 최적화된 Kubernetes 애플리케이션 실행 권장사항을 참조하세요.