데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      Kubernetes 비용이 고민이라면? Kubecost

      엘티엘 23.04.05
      6,376 36 0

      SKT 통신망 관제 시스템인 TANGO (SKT Advaced Next Generation Operation) 시스템은 대규모의 Kubernetes 클러스터로 이루어져 있습니다.

      저는 TANGO 시스템 DevOps를 담당하고 있는데, Kubernetes 구축 초반부터 kubecost 를 통해서 지속적인 성능및 비용 최적화를 진행하고 있습니다.

      Kubecost는 제공하는 기능이 다양하고 완성도가 높아서 실제 상당한 효과도 있었고, 개인적인 사용 만족도도 높은 편입니다.


      Kubecost란?

      Kubecost helps you monitor and manage cost and capacity in Kubernetes environments.

      image.png

      한마디로 Kubernetes 최적화를 위한 다양한 정보를 제공하는 툴입니다. (비용 중심)

      단순히 Container 의 CPU, Memory Request 뿐만 아니라 PV, Network, Worker Node 등 거의 모든 Kubernetes Resource 비용 최적화 insight를 제공합니다.


      제공되는 주요 기능은 아래와 같습니다.

      • Cost Allocation: Workload, Namespace, 인프라 등 Kubernetes 비용 가시성 확보

      • Optimization Insight: 비용 최적화 Insight 제공

      • Alerts & Governance: 예산설정 및 알림 기능 제공


      Architecture

      아래 사진은 kubecost의 Architecture 입니다.

      k8s-api 와 외부 billing data 를 활용해서 데이터를 수집/분석하고, prometheus를 통해 데이터를 저장/모니터링 합니다.

      EKS 등과 같은 환경이라면 Public Cloud 사업자의 billing data를 Integration 할 수도 있습니다.


      image.png

      주요기능 소개

      주요 기능에 대해서 좀더 자세히 설명드리겠습니다.

      1. Overview

      • Monthly savings identified: Kubecost의 권장사항을 모두 적용했을때 줄일수 있는 비용입니다.

      • Monthly Kubernetes costs: 매달 Kubernetes에서 발생하는 비용입니다.

      • Cost Efficiency: Cluster 의 비용효율율 나타냅니다. 현재 얼마나 비용 효율적으로 Cluster를 사용중인지 직관적으로 알수 있습니다.

      • Cost Allocation: namespace 별 비용을 확인할수 있습니다.

      • Kubernetes Asset Costs: Disk, LB, Node 와 같은 Asset 별 비용을 확인할 수 있습니다.

      image.png

      2. Cost Allocation

      • namespace, label, 서비스, workload 등과 같이 Kubernetes Resource별 비용을 확인할 수 있습니다.

      • CPU, Memory, PV, GPU, Network 비용 확인이 가능합니다.

      image.png

      3. Assets

      • 자산(=인프라)별 비용 확인이 가능합니다. (Node, Disk, LB 등)

      image.png

      4. Saving

      • 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 분석

      image.png

      image.png

      4. 기타 기능

      • Health: Cluster 상태 점검

      • Report: 비용 Report 생성

      • Alert: Cluster Health에 대한 알람 전송 기능 (Slack 등)

      image.png

      image.png

      image.png


      Kubecost 설치하기

      아래와 같이 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 등)으로 조정하기를 권장드립니다.


      감사합니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      엘티엘 님의 최신 블로그

      더보기
      동영상 기고하기