The kubecost-agent is a lightweight Kubecost exporter that sends metrics to Kubecost Cloud. In order to install the kubecost-agent, you will need a specific key provided by Kubecost.
The name of the storage key file provided by the Kubecost team will have the name kubecost-agent.key
Note: Kubecost Cloud is currently in limited availability. You can learn about more about it and request an invitation here. Learn about the architecture for Kubecost Cloud here.
Note: Integration with CI/CD tools is possible, but it is recommended to follow this guide as closely as possible to ensure a successful deployment.
The following will install the Kubecost agent and required components using the provided kubecost-agent.key
(ensure the key file is in the current file directory):
helm install kubecost-agent \
--repo https://kubecost.github.io/cost-analyzer cost-analyzer \
--namespace kubecost-agent --create-namespace \
--values https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/develop/cost-analyzer/values-agent.yaml \
--set prometheus.server.global.external_labels.cluster_id=CLUSTER_NAME \
--set kubecostProductConfigs.clusterName=CLUSTER_NAME \
--set prometheus.nodeExporter.enabled=false \
--set-file agentKey=kubecost-agent.key \
--set agentKeySecretName=kubecost-agent-object-store
Optionally, add the Network Costs Daemonset:
- All Providers:
--set networkCosts.enabled=true
And one of the following (if applicable):
- AWS
--set networkCosts.config.services.amazon-web-services=true
- Azure
--set networkCosts.config.services.azure-cloud-services=true
- GCP
--set networkCosts.config.services.google-cloud-services=true
This will install:
kubecost-agent
deployment and serviceprometheus-server
deployment and servicenetwork-costs
daemonSet (optional, collects additional metrics used for egress cost visibility) learn more
For multi-cluster setups, install the agent with the following command:
Note: Please ensure CLUSTER_NAME is unique per cluster.
helm install kubecost-agent \
--repo https://kubecost.github.io/cost-analyzer cost-analyzer \
--namespace kubecost-agent --create-namespace \
--values https://raw.githubusercontent.com/kubecost/cost-analyzer-helm-chart/develop/cost-analyzer/values-agent.yaml \
--set prometheus.server.global.external_labels.cluster_id=CLUSTER_NAME \
--set kubecostProductConfigs.clusterName=CLUSTER_NAME \
--set prometheus.nodeExporter.enabled=false \
--set-file agentKey=kubecost-agent.key \
--set agentKeySecretName=kubecost-agent-object-store \
--set kubecostMetrics.exporter.exportClusterInfo=false \
--set kubecostMetrics.exporter.exportClusterCache=false
Confirm with Kubecost team on successful deployment, which will then provide access to the hosted UI: https://<your-organization>.kubecost.cloud
which can be used to access all exported data.
Note: Metrics are shipped every two hours. A delay is expected when viewing on the UI.
Check to see all pods are ready:
kubectl get pods -n kubecost-agent
NAME READY STATUS RESTARTS AGE
kubecost-agent-7665c6fc47-dmrhj 1/1 Running 0 25h
kubecost-network-costs-hln2w 1/1 Running 0 25h
kubecost-prometheus-server-596b9bb9bb-pr4vz 3/3 Running 0 25h
Check the container logs. It is common to have Prometheus errors when the kubecost-agent
pod starts. They should not continue after the kubecost-prometheus-server
pod is ready. For further troubleshooting, the Kubecost team may ask for the container logs. Script for collecting all the logs:
kubecost-agent-logs.sh
echo "-----------------kubecost-agent logs-----------------" >./kubecost_agent_logs.log
kubectl logs --namespace kubecost-agent -l app=kubecost-agent --prefix=true --all-containers --tail=-1 >>./kubecost_agent_logs.log
echo "-----------------kubecost-prometheus logs-----------------" >>./kubecost_agent_logs.log
kubectl logs --namespace kubecost-agent -l app=prometheus --prefix=true --all-containers --tail=-1 >>./kubecost_agent_logs.log
# Not generally needed: kubectl logs --namespace kubecost-agent -l app=kubecost-network-costs --prefix=true --all-containers --tail=-1 >>./kubecost_agent_logs.log
# logs are typically small, can just send plain text. otherwise: tar -czvf kubecost_agent_logs.tgz ./kubecost_agent_logs.log && rm ./kubecost_agent_logs.log