AKS(Azure Kubernetes Service)에서 비용 최적화

비용 최적화는 클라우드 환경 내에서 불필요한 비용을 최소화하면서 리소스의 가치를 극대화하는 것을 뜻합니다. 이 프로세스에는 비용 효율적인 구성 옵션을 식별하고 운영 효율성을 개선하기 위한 모범 사례를 구현하는 작업이 포함됩니다. AKS 환경은 성능과 안정성 요구 사항을 고려하면서 비용을 최소화하도록 최적화할 수 있습니다.

이 문서에서는 다음에 대해 알아봅니다.

  • 전략적 인프라 선택
  • 적절한 동적 크기 조정 및 자동 크기 조정
  • Azure 할인을 활용한 상당한 절약 달성
  • 전체적인 모니터링 및 FinOps 사례

애플리케이션 환경 준비

SKU 제품군 평가

애플리케이션의 리소스를 배포하기 전에 애플리케이션의 리소스 요구 사항을 평가해야 합니다. 소규모 개발 워크로드에는 프로덕션에 바로 사용할 수 있는 대규모 워크로드와는 다른 인프라 요구 사항이 있습니다. CPU와 메모리, 네트워킹 용량 구성의 조합은 SKU의 비용 효율성에 큰 영향을 주지만 다음 VM 유형을 고려해 보세요.

  • Azure Spot Virtual Machines - 스폿 노드 풀은 Azure Spot Virtual Machine 확장 집합의 지원을 받으며, 고가용성 또는 SLA 보장 없이 단일 장애 도메인에 배포됩니다. 스폿 VM을 사용하면 상당한 할인을 통해 사용하지 않는 Azure 용량을 활용할 수 있습니다(종량제 가격 대비 최대 90%). Azure에 용량이 다시 필요한 경우 Azure 인프라는 스폿 노드를 제거합니다. 개발/테스트 환경, 일괄 처리 작업과 같은 중단을 감당할 수 있는 워크로드, 유연한 실행 시간이 있는 워크로드에 가장 적합합니다.
  • Ampere Altra Arm 기반 프로세서(ARM64) - ARM64 VM은 전력 효율적이고 비용 효율적이면서도 성능을 희생하지 않습니다. AKS AMR64 노드 풀 지원을 사용하면 ARM64 Ubuntu 에이전트 노드를 만들고 클러스터 내에서 Intel과 ARM 아키텍처 노드를 혼합할 수도 있습니다. 이러한 ARM VM은 동적 워크로드와 확장 가능한 워크로드를 효율적으로 실행하도록 설계되었으며, 스케일 아웃 워크로드에 비교 가능한 x86 기반 VM보다 최대 50% 더 나은 가격 성능을 제공할 수 있습니다. 웹 또는 애플리케이션 서버, 오픈 소스 데이터베이스, 클라우드 네이티브 애플리케이션, 게임 서버 등에 가장 적합합니다.
  • GPU 최적화 SKU - 워크로드의 특성에 따라 컴퓨팅 최적화, 메모리 최적화, 스토리지 최적화 또는 GPU(그래픽 처리 장치) 최적화 VM SKU를 사용하는 것이 좋습니다. GPU VM 크기는 단일, 다중 및 소수 GPU에서 사용할 수 있는 특수 VM입니다. AKS의 GPU 지원 Linux 노드 풀은 그래픽 렌더링, 대규모 모델 학습 및 추론과 같은 계산 집약적 워크로드에 가장 적합합니다.

참고 항목

컴퓨팅 비용은 지역에 따라 다릅니다. 워크로드를 실행하기 위해 비용이 저렴한 지역을 선택할 때는 대기 시간과 데이터 전송 비용의 잠재적 영향을 고려해야 합니다. VM SKU와 해당 특성에 관한 자세한 내용은 Azure의 가상 머신 크기를 참조하세요.

클러스터 사전 설정 구성 사용

올바른 VM SKU와 지역, 노드 수, 기타 구성 옵션을 선택하기는 쉽지 않을 수 있습니다. Azure Portal의 클러스터 사전 설정 구성은 비용에 민감하고 성능이 좋은 다양한 애플리케이션 환경에 권장되는 구성을 제공하여 설정 초반에 겪을 수 있는 이 어려움을 덜어줍니다. 개발/테스트 사전 설정은 새 워크로드를 개발하거나 기존 워크로드를 테스트하는 데 가장 적합합니다. 프로덕션 경제 사전 설정은 워크로드가 중단을 허용할 수 있는 경우 비용을 우선하여 고려하는 방식으로 프로덕션 트래픽을 제공하는 데 가장 적합합니다. 기본적으로 중요하지 않은 기능을 사용하지 않으며, 미리 설정된 값은 언제든지 수정할 수 있습니다.

다중 테넌시 고려

AKS를 사용하면 유연하게 다중 테넌트 클러스터를 실행하고 리소스를 격리할 수 있습니다. 호의적인 다중 테넌시의 경우 논리적 격리를 통해 팀과 사업부 간에 클러스터와 인프라를 공유할 수 있습니다. Kubernetes 네임스페이스는 워크로드 및 리소스의 논리적 격리 경계를 형성합니다. 인프라를 공유하면 클러스터 관리 오버헤드가 줄어들고 클러스터 내의 리소스 사용률과 Pod 밀도도 향상됩니다. AKS의 다중 테넌시에 관해 자세히 알아보고 조직의 필요에 적합한지 확인하려면 다중 테넌시를 위한 AKS 고려 사항다중 테넌시용 디자인 클러스터를 참조하세요.

Warning

Kubernetes 환경은 적대적인 다중 테넌시에서 완전히 안전하지 않습니다. 공유 인프라의 테넌트를 신뢰할 수 없는 경우 테넌트가 다른 서비스의 보안에 영향을 주지 않도록 추가 계획이 필요합니다.

물리적 격리 경계를 사용하는 것이 좋습니다. 이 모델에서는 팀 또는 워크로드가 자체 클러스터에 할당됩니다. 추가된 관리와 재무 오버헤드는 교환이 됩니다.

클라우드 네이티브 애플리케이션 빌드

컨테이너를 최대한 가볍게 만들기

가벼운 컨테이너는 컨테이너화된 애플리케이션의 크기와 리소스 공간을 최적화하는 것을 의미합니다. 기본 이미지가 최소이며, 필요한 종속성만 포함되어 있는지 확인하세요. 불필요한 라이브러리와 패키지를 제거하세요. 컨테이너 이미지가 작을수록 배포 시간이 단축되고 크기 조정 작업 효율성이 향상됩니다. 한 단계 더 나아가 AKS의 아티팩트 스트리밍을 사용하면 ACR(Azure Container Registry)에서 컨테이너 이미지를 스트리밍할 수 있습니다. 초기 Pod 시작에 필요한 계층만 끌어오면 더 큰 이미지를 끌어오는 시간이 분에서 초 단위로 줄어듭니다.

리소스 할당량 적용

리소스 할당량은 개발 팀 또는 프로젝트에서 리소스를 예약하고 제한하는 방법을 제공합니다. 할당량은 네임스페이스에 정의되며 컴퓨팅 리소스와 스토리지 리소스, 개체 수에 설정할 수 있습니다. 리소스 할당량을 정의하면 개별 네임스페이스가 할당된 것보다 더 많은 리소스를 사용할 수 없게 됩니다. 이는 팀이 인프라를 공유하는 다중 테넌트 클러스터에 특히 중요합니다.

클러스터 시작 중지 사용

소규모 개발과 테스트 클러스터를 방치할 경우 많은 양의 불필요한 지출이 발생할 수 있습니다. 클러스터 시작 및 중지를 사용하여 항상 실행할 필요가 없는 클러스터를 끄세요. 이렇게 하면 추가 컴퓨팅 비용을 지불하지 않도록 모든 시스템과 사용자 노드 풀이 종료됩니다’. 클러스터를 다시 시작하면 모든 개체와 클러스터 상태가 유지 관리됩니다.

용량 예약 사용

용량 예약을 사용하면 Azure 지역 또는 가용성 영역에서 일정 기간 동안 컴퓨팅 용량을 예약할 수 있습니다. 예약된 용량은 예약을 삭제할 때까지 즉시 사용할 수 있습니다. 기존 용량 예약 그룹을 노드 풀에 연결하면 노드 풀에 할당된 용량을 보장하고 컴퓨팅 수요가 많은 기간 동안 잠재적인 주문형 가격 책정 급증을 방지할 수 있습니다.

환경 모니터링 및 지출

Microsoft Cost Management를 사용하여 가시성 향상

Microsoft Cost Management는 클러스터 내부와 외부 비용의 클라우드 예산, 예측 및 가시성에 도움이 되는 광범위한 기능을 제공합니다. 적절한 가시성은 지출 추세를 분석하고, 최적화 기회를 식별하고, 애플리케이션 개발자와 플랫폼 팀 간의 책임을 높이는 데 필수적입니다. AKS 비용 분석 추가 기능을 사용하도록 설정하여 Azure Compute와 Network, Storage 범주와 더불어 Kubernetes 구문별로 세분화된 클러스터 비용 분석을 받아보세요.

Azure Monitor

Container Insights를 통해 메트릭 데이터를 수집하는 경우 관리되는 Prometheus 메트릭으로 마이그레이션하여 상당한 비용을 절감하는 것이 좋습니다. DCR(데이터 수집 규칙)을 사용하여 Container Insights 메트릭을 사용하지 않도록 설정하고 Azure Resource Manager와 Azure CLI, Azure Portal, Terraform을 통한 구성을 지원하는 관리되는 Prometheus 추가 기능을 배포할 수 있습니다.

로그 수집을 사용하는 경우 Log Analytics 비용을 줄이기 위해 기본 로그 API를 사용하는 것이 좋습니다. 자세한 내용은 Azure Monitor 모범 사례Container insights에 대한 비용 관리를 참조하세요.

자동 크기 조정을 통해 워크로드 최적화

애플리케이션 자동 크기 조정 사용

Vertical Pod 자동 크기 조정

실제 사용량보다 훨씬 높은 요청과 제한을 사용하면 워크로드가 과도하게 프로비전되고 리소스가 낭비될 수 있습니다. 반대로 너무 낮은 요청과 제한을 사용하면 메모리 부족으로 인한 제한과 워크로드 문제가 발생할 수 있습니다. VPA(Vertical Pod Autoscaler)를 사용하면 Pod에 필요한 CPU와 메모리 리소스를 미세 조정할 수 있습니다. VPA는 수동으로 설정하거나 자동으로 업데이트할 수 있는 기록 컨테이너 사용량에 따라 CPU와 메모리 요청 및 제한에 권장되는 값을 제공합니다. 리소스 수요가 변동하는 애플리케이션에 가장 적합합니다.

Horizontal Pod 자동 크기 조정

HPA(Horizontal Pod Autoscaler)는 CPU 또는 메모리 사용률과 같은 관찰된 메트릭에 따라 Pod 복제본 수를 동적으로 확장합니다. 수요가 많은 기간 동안 HPA는 규모를 확장하여 워크로드를 배포하기 위해 더 많은 Pod 복제본을 추가합니다. 수요가 적은 기간 동안 HPA는 규모를 축소하여 리소스를 절약하기 위한 복제본 수를 줄입니다. 예측 가능한 리소스 수요가 있는 애플리케이션에 가장 적합합니다.

Warning

동일한 CPU 또는 메모리 메트릭에서 HPA와 함께 VPA를 사용하면 안 됩니다. 두 자동 크기 조정기 모두 동일한 메트릭을 사용하여 수요 변화에 대응하려고 시도하므로 이 조합으로 인해 충돌이 발생할 수 있습니다. 그러나 CPU 또는 메모리용 VPA를 사용자 지정 메트릭용 HPA와 함께 사용하여 중복을 방지하고 각 자동 확장 처리가 워크로드 확장의 고유한 측면에 집중하도록 할 수 있습니다.

Kubernetes 이벤트 기반 자동 크기 조정

KEDA(Kubernetes Event-driven Autoscaler) 추가 기능은 애플리케이션 동작과 일치하는 다양한 이벤트 기반 메트릭에 따라 확장할 수 있는 더 많은 유연성을 제공합니다. 예를 들어 웹 애플리케이션의 경우 KEDA는 수신 HTTP 요청 트래픽을 모니터링하고 Pod 복제본 수를 조정하여 애플리케이션의 응답성을 유지할 수 있습니다. 작업을 처리하기 위해 KEDA는 메시지 큐 길이에 따라 애플리케이션의 크기를 조정할 수 있습니다. 모든 Azure Scaler에는 관리되는 지원이 제공됩니다.

인프라 자동 크기 조정 사용

클러스터 자동 크기 조정

애플리케이션 수요를 따라잡기 위해 Cluster Autoscaler는 리소스 제약 조건으로 인해 예약할 수 없는 Pod가 있는지 관찰하고 그에 따라 노드 풀의 노드 수를 조정합니다. 노드에 실행 중인 Pod가 없는 경우 Cluster Autoscaler는 노드 수를 축소합니다. Cluster Autoscaler 프로필 설정은 클러스터의 모든 Cluster Autoscaler 사용 노드 풀에 적용됩니다. 자세한 내용은 Cluster Autoscaler 모범 사례 및 고려 사항을 참조하세요.

노드 자동 프로비전

복잡한 워크로드에는 CPU와 메모리 요구 사항을 수용하기 위해 VM 크기 구성이 다른 여러 노드 풀이 필요할 수 있습니다. 여러 노드 풀 구성을 정확하게 선택하고 관리하면 복잡성과 운영 오버헤드가 추가됩니다. NAP(노드 자동 프로비전)는 SKU 선택 프로세스를 간소화하고 보류 중인 Pod 리소스 요구 사항에 따라 워크로드를 가장 효율적이고 비용 효율적인 방식으로 실행하기 위한 최적의 VM 구성을 결정합니다.

Azure 할인으로 절약

Azure Reservations

워크로드가 예측 가능하고 장기간 존재하는 경우 리소스 비용을 추가로 줄이기 위해 Azure 예약을 구매하는 것이 좋습니다. Azure 예약은 1년 또는 3년 기간으로 운영되며, 컴퓨팅에 대한 종량제 가격 대비 최대 72% 할인을 제공합니다. 예약은 일치하는 리소스에 자동으로 적용됩니다. 오랜 기간 동안 변경 없이 동일한 SKU와 지역에서 실행될 워크로드에 가장 적합합니다.

Azure 절약 플랜

꾸준한 지출이 있지만 SKU와 지역에서 서로 다른 여러 리소스를 사용하고, Azure 예약을 사용할 수 없는 경우 Azure 절약 플랜을 구매하는 것이 좋습니다. Azure 예약과 마찬가지로 Azure 절약 플랜은 1년 또는 3년 기간으로 운영되며 혜택 범위 내의 모든 리소스에 자동으로 적용됩니다. SKU 또는 지역에 관계없이 컴퓨팅 리소스에 고정 시간당 금액을 지출하도록 계약합니다. 다양한 리소스 및/또는 다양한 데이터 센터 지역을 활용하는 워크로드에 가장 적합합니다.

Azure 하이브리드 혜택

AKS(Azure Kubernetes Service)의 Azure 하이브리드 혜택을 사용하면 추가 비용 없이 온-프레미스 라이선스를 최대화할 수 있습니다. 활성 SA(Software Assurance) 또는 적격 구독이 있는 모든 적격 온-프레미스 라이선스를 사용하여 Azure에서 Windows VM을 할인된 비용으로 받으세요.

FinOps를 채택하여 비용 절약 문화 육성

FinOps(Financial Operations)는 재무 책임과 클라우드 관리 및 최적화를 결합하는 작업입니다. 클라우드 비용을 이해하고 제어하기 위해 재무와 운영, 엔지니어링 팀 간의 조정을 추진하는 데 중점을 둡니다. FinOps Foundation은 다음과 같은 몇 가지 주목할 만한 프로젝트를 시작했습니다.

  • FinOps Framework - FinOps를 연습하고 구현하는 방법에 대한 운영 모델입니다.
  • FOCUS 사양 - 모든 주요 클라우드 공급자 서비스의 클라우드 사용량과 비용, 청구 데이터에 대한 기술 사양과 개방형 표준입니다.

다음 단계

비용 최적화는 지속적이고 반복적인 작업입니다. 다음 권장 사항과 아키텍처 지침을 검토하여 자세히 알아보세요.