Skip to content

Latest commit

 

History

History

cpuprint

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

CPU Print

This example shows how the library can be used to both gather metrics based on metric specs.

In this example a deployment called php-apache is created with 4 replicas that responds to simple HTTP requests with an OK!. The example will query the CPU metrics for the pods in this deployment and print them to stdout.

Note this example uses out of cluster configuration of the Kubernetes client, if you want to run this inside the cluster you should use in cluster configuration.

Usage

To follow the steps below and to see this example in action you need the following installed:

After you have installed the above you can provision a development Kubernetes cluster by running:

k3d cluster create

Steps

Run go get to make sure you have all of the dependencies for running the application installed.

  1. First create the deployment to monitor by applying the deployment YAML:
kubectl apply -f deploy.yaml
  1. Run the example using:
go run main.go
  1. If you see some errors like this:
2022/05/08 22:26:09 invalid metrics (1 invalid out of 1), first error is: failed to get resource metric: unable to get metrics for resource cpu: no metrics returned from resource metrics API

Leave it for a minute or two to let the deployment being targeted (php-apache) to generate some CPU metrics with the metrics server.

Eventually it should provide output like this:

2022/05/08 22:27:39 CPU statistics:
2022/05/08 22:27:39 Pod: php-apache-d4cf67d68-s9w2g, CPU usage: 1m (0.50% of requested)
2022/05/08 22:27:39 Pod: php-apache-d4cf67d68-v9fc2, CPU usage: 1m (0.50% of requested)
2022/05/08 22:27:39 Pod: php-apache-d4cf67d68-h4z4k, CPU usage: 1m (0.50% of requested)
2022/05/08 22:27:39 Pod: php-apache-d4cf67d68-jrskj, CPU usage: 1m (0.50% of requested)
2022/05/08 22:27:39 ----------
  1. Try increasing the CPU load:
kubectl run -it --rm load-generator --image=busybox -- /bin/sh

Once it has loaded, run this command to increase CPU load:

while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done