이 문서에서는 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 문서를 참고하세요.
대표적인 트래픽 패턴을 포착하기 위해 프로덕션과 유사한 환경에서 최소 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 구성
애플리케이션 복제본에 PodDisruptionBudget (PDB) 객체를 지정하여 자발적 중단을 제한하고 GKE가 축소되거나 노드 업그레이드가 발생할 때 안정성을 보장합니다.
자세한 내용은 애플리케이션에 중단 예산 지정을 참고하세요.
유의미한 준비 상태 및 활성 프로브 설정
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는Google Cloud 콘솔의 AI 기반 인터페이스로, Gemini를 기반으로 하며 GKE의 복원력 있고 비용 효율적인 아키텍처를 설계하는 데 도움이 됩니다.
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 애플리케이션을 실행하기 위한 권장사항을 참조하세요.