Skip to content

Latest commit

 

History

History
95 lines (67 loc) · 4.72 KB

agent.md

File metadata and controls

95 lines (67 loc) · 4.72 KB

Installing Agent for Kubecost Cloud (limited availability)

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.

Installation using Helm

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 service
  • prometheus-server deployment and service
  • network-costs daemonSet (optional, collects additional metrics used for egress cost visibility) learn more

Additional clusters

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

Accessing the Kubecost UI

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.

Troubleshooting agent deployments

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