23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
SKT 통신망 관제 시스템인 TANGO (SKT Advaced Next Generation Operation) 시스템은 대규모의 Kubernetes 클러스터로 이루어져 있습니다.
저는 TANGO 시스템 DevOps를 담당하고 있는데, Kubernetes 구축 초반부터 kubecost 를 통해서 지속적인 성능및 비용 최적화를 진행하고 있습니다.
Kubecost는 제공하는 기능이 다양하고 완성도가 높아서 실제 상당한 효과도 있었고, 개인적인 사용 만족도도 높은 편입니다.
Kubecost helps you monitor and manage cost and capacity in Kubernetes environments.
한마디로 Kubernetes 최적화를 위한 다양한 정보를 제공하는 툴입니다. (비용 중심)
단순히 Container 의 CPU, Memory Request 뿐만 아니라 PV, Network, Worker Node 등 거의 모든 Kubernetes Resource 비용 최적화 insight를 제공합니다.
제공되는 주요 기능은 아래와 같습니다.
Cost Allocation: Workload, Namespace, 인프라 등 Kubernetes 비용 가시성 확보
Optimization Insight: 비용 최적화 Insight 제공
Alerts & Governance: 예산설정 및 알림 기능 제공
아래 사진은 kubecost의 Architecture 입니다.
k8s-api 와 외부 billing data 를 활용해서 데이터를 수집/분석하고, prometheus를 통해 데이터를 저장/모니터링 합니다.
EKS 등과 같은 환경이라면 Public Cloud 사업자의 billing data를 Integration 할 수도 있습니다.
주요 기능에 대해서 좀더 자세히 설명드리겠습니다.
Monthly savings identified: Kubecost의 권장사항을 모두 적용했을때 줄일수 있는 비용입니다.
Monthly Kubernetes costs: 매달 Kubernetes에서 발생하는 비용입니다.
Cost Efficiency: Cluster 의 비용효율율 나타냅니다. 현재 얼마나 비용 효율적으로 Cluster를 사용중인지 직관적으로 알수 있습니다.
Cost Allocation: namespace 별 비용을 확인할수 있습니다.
Kubernetes Asset Costs: Disk, LB, Node 와 같은 Asset 별 비용을 확인할 수 있습니다.
namespace, label, 서비스, workload 등과 같이 Kubernetes Resource별 비용을 확인할 수 있습니다.
CPU, Memory, PV, GPU, Network 비용 확인이 가능합니다.
자산(=인프라)별 비용 확인이 가능합니다. (Node, Disk, LB 등)
Right-size your container requests
실제 사용량을 기준으로 Pod의 적절한 CPU 및 Memory Request 값을 추천해 줍니다.
추천값 계산로직은 사전에 정의된 방식도 있고, 사용자가 일부 Customizing도 가능합니다.
pre-release 이긴 하지만, Automatic Request Right-Sizing 기능도 제공합니다.
Right-size your cluster nodes
현재 배포된 Pod를 고려하여 적절한 Worker Node Instance type 을 추천해 줍니다
Public Cloud 사업자에 따라 적절한 instance type을 추천해 줍니다
그 외
unassigned resource 확인 (PV 등)
RI, Spot Instance 적용시 비용효과 분석
사용율이 낮은 Workload 분석
Health: Cluster 상태 점검
Report: 비용 Report 생성
Alert: Cluster Health에 대한 알람 전송 기능 (Slack 등)
아래와 같이 helm 명령어 2줄로 간단하게 설치가 가능합니다.
Dashboard 접속을 위해서 expose 작업이 필요합니다. (service.type을 LoadBalancer 변경 또는 ingress 연결 등)
$ helm repo add kubecost https://kubecost.github.io/cost-analyzer/
$ helm upgrade --install kubecost kubecost/cost-analyzer --namespace kubecost --create-namespace참고로 EKS 의 경우 kubecost Add-on 을 제공합니다. 별도 라이센스 비용은 없으며 enterprise버전의 일부 기능을 추가로 제공한다고 하니 EKS 환경이라면 검토해 보셔도 좋을것 같습니다.
다만, 2023-03-24기준, EKS kubecost add-on은 us-east-1 registry에서 이미지를 가져오도록 되어 있어, 그 외 리전이라면 internet outbound 환경이 구성되어 있어야 합니다.
metric 수집주기는 default 1m 이며, 클러스터의 규모가 클 경우 상당히 kubecost 자체에 많은 리소스가 필요할수 있으니, 규모에 따라서 prometheus.server.retention 을 적절한 값(3d, 7d 등)으로 조정하기를 권장드립니다.
감사합니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.