CloudNet@ 팀의 가시다님께서 Leading 하시는 AEWS Study 4주차 스터디 내용 정리
이번 포스팅에서는 EKS 사용 시, 리소스 별 비용을 분석해서 보여주는 KubeCost 에 대해서 알아보겠습니다.
Opencost Docs
Kubecost Docs
1. kubecost
Open Source 인 Opencost 를 기반으로 만들어졌으며, AWS 에서 현재 적극적으로 지원해주고 있는 쿠버네티스 비용 분석 도구입니다.
kubecost 를 활용하면 EKS 상에 배포된 리소스의 사용량을 기반으로 EKS 비용을 감소시킬 수 있는 방안을 알 수 있습니다.
- kubecost 는 AWS EKS Marketplace 에서도 제공되고 있습니다.
1.1. Kubecost 설치
사전 조건
- Helm 버전 3.9 이상
- EKS Cluster 접근 권한 보유
- EKS 버전 1.23 이상일 경우, EBS CSI Driver 설치
Kubecost Helm Yaml 생성
cat <<EOT > cost-values.yaml
global:
grafana:
enabled: true
proxy: false
priority:
enabled: false
networkPolicy:
enabled: false
podSecurityPolicy:
enabled: false
persistentVolume:
storageClass: "gp3"
prometheus:
kube-state-metrics:
disabled: false
nodeExporter:
enabled: true
reporting:
productAnalytics: true
EOT
# Namespace 생성
kubectl create ns kubecost
# Helm 배포
helm install kubecost oci://public.ecr.aws/kubecost/cost-analyzer \
--version 1.103.2 \
--namespace kubecost \
-f cost-values.yaml
2. Kubecost Dashboard 활용
설치 후, kubecost 에 접속합니다.
2.1. Allocations
Monitor - Allocations 에서는 특정 기간 동안 리소스별 비용을 한눈에 알 수 있습니다.
특정 컴포넌트 별 비용을 확인할 수 있습니다.
필터를 걸어 리소스 비용을 확인할 수 있습니다.
다음은 app.kubernetes.io/name=cost-analyzer 레이블이 부여된 리소스만 필터링한 경우입니다.
2.2. Savings
현재 EKS 에 사용되고 있는 리소스를 기반으로 비용을 절감할 수 있는 방법을 추천해줍니다.
이번에는 Kubecost 에 대해서 테스트해봤습니다.
이전에 AWS Meetup에서 처음 보고 그 동안 존재만 알고 있었는데, 직접 만들어보고 테스트해보니 신기합니다.
더 많은 기능은 계속 EKS 를 실행하면서 테스트해보면 좋을 것 같은데, 기회가 있을 지 모르겠습니다.
참고 문서
https://docs.kubecost.com/install-and-configure/install/provider-installations/aws-eks-cost-monitoring
https://aws.amazon.com/ko/blogs/containers/aws-and-kubecost-collaborate-to-deliver-cost-monitoring-for-eks-customers/
https://www.eksworkshop.com/docs/observability/kubecost/costallocation/