New Relic 및 Kubecost를 사용하면 각 Kubernetes 리소스와 관련된 비용을 이해할 수 있습니다.
실행 가능한 통찰력:
- 내 클러스터(CPU, 스토리지, 송신 등)의 주요 비용 동인은 무엇입니까?
- 내 클러스터에서 최근 비용 증가를 유발하는 노드는 무엇입니까?
- 내 애플리케이션 워크로드에 대한 네임스페이스별 비용 분석은 어떻게 되나요?
- 클라우드 공급자가 제공한 가격/할인을 기반으로 비용 추정을 조정하려면 어떻게 해야 합니까?
시작하다
이 가이드에서는 Kubecost 번들 Prometheus 서버를 사용한다고 가정합니다. 이 가이드의 범위를 벗어나더라도 자신의 것을 사용할 수 있습니다.
New Relic에서 Remote Write
엔드포인트를 생성해야 하며, 이 페이지의 녹색 'Prometheus 데이터 추가' 버튼을 클릭하면 됩니다. Bearer 토큰이 사용됩니다. 프로메테우스 원격 쓰기
Prometheus 원격 쓰기 설정
- Prometheus 데이터를 받을 계정을 선택하세요.
- 데이터 소스의 이름을 지정합니다(예:
kubecost
. - 다음 단계에서 사용할 URL 및 전달자 토큰을 생성합니다.
클러스터에 Kubecost 에이전트 설치
다음으로 Helm을 통해 Kubecost 에이전트를 설치합니다.
Kubecost 에이전트 설치를 위한 템플릿 YAML 파일을 다운로드합니다.
kubecost-values.yaml
에 저장합니다.prometheus:serverFiles:prometheus.yml:remote_write:- url: https://metric-api.newrelic.com/prometheus/v1/write?prometheus_server=YOUR_CLUSTER_NAMEbearer_token: YOUR_BEARER_TOKENserver:global:external_labels:cluster_id: YOUR_CLUSTER_NAMEkubecostProductConfigs:clusterName: YOUR_CLUSTER_NAME선택한 편집기에서
kubecost-values.yaml
엽니다.이전 단계의 Remote_write 엔드포인트를 복사하여 붙여넣고 5행과 6행을 바꿉니다.
두
YOUR_CLUSTER_NAME
항목을 모두 클러스터 이름으로 바꿉니다.아래 Helm 명령을 실행하여 Kubecost 에이전트를 클러스터에 추가하고 New Relic으로 데이터 전송을 시작하세요.
bash$helm upgrade --install kubecost \>--repo https://kubecost.github.io/cost-analyzer/ cost-analyzer \>--namespace kubecost --create-namespace \>--values kubecost-values.yaml몇 분 정도 기다리십시오. 원격 쓰기를 설정한 이전 탭에서 See your data 버튼을 클릭하여 데이터 수신 여부를 확인하세요.
데이터 쿼리:
SELECT sum(`Total Cost($)`) AS 'Total Monthly Cost'FROM (FROM Metric SELECT (SELECT sum(`total_node_cost`)FROM (FROM Metric SELECT (average(kube_node_status_capacity_cpu_cores) * average(node_cpu_hourly_cost)* 730 + average(node_gpu_hourly_cost)* 730 + average(kube_node_status_capacity_memory_bytes) / 1024 / 1024 / 1024* average(node_ram_hourly_cost) * 730) AS 'total_node_cost' FACET node))+ (SELECT (sum(acflb) / 1024 / 1024 / 1024 * 0.04) AS 'Container Cost($)'FROM (SELECT (average(container_fs_limit_bytes) * cardinality(container_fs_limit_bytes)) AS 'acflb'FROM Metric WHERE (NOT ((device = 'tmpfs')) AND (id = '/'))))+ (SELECT sum(aphc * 730 * akpcb / 1024 / 1024 / 1024) AS 'Total Persistent Volume Cost($)'FROM (FROM Metric SELECT average(pv_hourly_cost)AS 'aphc', average(kube_persistentvolume_capacity_bytes) AS 'akpcb' FACET persistentvolume, instance))AS 'Total Cost($)')
ingress를 통해 Kubecost UI를 노출 하려면 Kubecost 문서를 따라갈 수 있습니다.