Monday, May 22, 2023

Kubernetes how to get the CPU and memory usage

ZnJvbSBrdWJlcm5ldGVzIGltcG9ydCBjbGllbnQsIGNvbmZpZwoKIyBMb2FkIEt1YmVybmV0ZXMgY29uZmlndXJhdGlvbiBmcm9tIGRlZmF1bHQgbG9jYXRpb24gb3IgcHJvdmlkZSB5b3VyIG93biBrdWJlY29uZmlnIGZpbGUKY29uZmlnLmxvYWRfa3ViZV9jb25maWcoKQoKIyBDcmVhdGUgS3ViZXJuZXRlcyBBUEkgY2xpZW50CmFwaV9jbGllbnQgPSBjbGllbnQuQXBpQ2xpZW50KCkKCiMgUmV0cmlldmUgbGlzdCBvZiBub2RlcyBpbiB0aGUgY2x1c3Rlcgp2MSA9IGNsaWVudC5Db3JlVjFBcGkoYXBpX2NsaWVudCkKbm9kZV9saXN0ID0gdjEubGlzdF9ub2RlKCkuaXRlbXMKCiMgSXRlcmF0ZSBvdmVyIGVhY2ggbm9kZSBhbmQgcmV0cmlldmUgc3lzdGVtIHJlc291cmNlIHVzYWdlCmZvciBub2RlIGluIG5vZGVfbGlzdDoKICAgIG5vZGVfbmFtZSA9IG5vZGUubWV0YWRhdGEubmFtZQogICAgcHJpbnQoZiJOb2RlOiB7bm9kZV9uYW1lfSIpCgogICAgIyBSZXRyaWV2ZSBub2RlIG1ldHJpY3MKICAgIG1ldHJpY3NfYXBpID0gY2xpZW50LkN1c3RvbU9iamVjdHNBcGkoYXBpX2NsaWVudCkKICAgIG1ldHJpY3MgPSBtZXRyaWNzX2FwaS5saXN0X2NsdXN0ZXJfY3VzdG9tX29iamVjdCgibWV0cmljcy5rOHMuaW8iLCAidjFiZXRhMSIsICJub2RlcyIsICJub2RlIikKCiAgICAjIEZpbmQgdGhlIG1ldHJpY3MgZm9yIHRoZSBjdXJyZW50IG5vZGUKICAgIGZvciBtZXRyaWMgaW4gbWV0cmljc1siaXRlbXMiXToKICAgICAgICBpZiBtZXRyaWNbIm1ldGFkYXRhIl1bIm5hbWUiXSA9PSBub2RlX25hbWU6CiAgICAgICAgICAgIGNwdV91c2FnZSA9IG1ldHJpY1sidXNhZ2UiXVsiY3B1Il0KICAgICAgICAgICAgbWVtb3J5X3VzYWdlID0gbWV0cmljWyJ1c2FnZSJdWyJtZW1vcnkiXQogICAgICAgICAgICBwcmludChmIkNQVSBVc2FnZToge2NwdV91c2FnZX0iKQogICAgICAgICAgICBwcmludChmIk1lbW9yeSBVc2FnZToge21lbW9yeV91c2FnZX0iKQoKICAgIHByaW50KCItLS0tLS0tLS0tLS0tLS0tLS0tLSIp



This code snippet assumes you have the Kubernetes Python client library (kubernetes) installed. If you haven't installed it, you can use pip install kubernetes to install it.


The code first loads the Kubernetes configuration using config.load_kube_config(). This assumes that you have configured your Kubernetes credentials, or it uses the default configuration if available. Alternatively, you can provide the path to your kubeconfig file using config.load_kube_config(config_file='path/to/kubeconfig').


Then, it creates a Kubernetes API client using client.ApiClient(). This client will be used to interact with the Kubernetes API.


Next, it retrieves the list of nodes in the cluster using the list_node() method from the CoreV1Api class.


The code then iterates over each node and retrieves the system resource usage for each node. It uses the CustomObjectsApi class to query the metrics API and retrieve the node metrics. The metrics are stored in the metrics variable.


Within the loop, it searches for the metrics corresponding to the current node using the node name. It retrieves the CPU and memory usage from the metrics data.


Finally, it prints the node name, CPU usage, and memory usage for each node.


Please note that this code assumes that the metrics server is installed in your Kubernetes cluster and available at the metrics.k8s.io API group. If your cluster does not have the metrics server installed or uses a different metrics provider, you may need to adjust the code accordingly.


Also, ensure that you have the necessary permissions to access the metrics server and retrieve the required metrics.

No comments:

Post a Comment