Skip to content

Instantly share code, notes, and snippets.

@thbkrkr
Last active June 8, 2022 21:12
Show Gist options
  • Save thbkrkr/5666ce642338a21976d6c81ba9ea1dff to your computer and use it in GitHub Desktop.
Save thbkrkr/5666ce642338a21976d6c81ba9ea1dff to your computer and use it in GitHub Desktop.
Get Kubernetes CPU and Memory requested
#!/bin/bash -eu
#
# Get Kubernetes CPU and memory requested
#
main() {
declare kubeconfig=$1
declare node_match="${2:-""}"
if [[ ! -f $kubeconfig ]]; then
echo 2> "kubeconfig $kubeconfig not found"
exit 1
fi
local node_count=0
local total_percent_cpu=0
local total_percent_mem=0
local kubectl="kubectl --kubeconfig $kubeconfig"
local nodes=$($kubectl get nodes --no-headers -o custom-columns=NAME:.metadata.name)
local comma=""
echo '{"nodes": ['
for node in $nodes; do
local requests=$($kubectl describe node $node | grep -A2 -E "^\\s*CPU Requests" | tail -n1)
local value_cpu=$(echo $requests | awk -F "[()%]" '{print $1}')
local percent_cpu=$(echo $requests | awk -F "[()%]" '{print $2}')
local value_mem=$(echo $requests | awk -F "[()%]" '{print $7}')
local percent_mem=$(echo $requests | awk -F "[()%]" '{print $8}')
echo $comma'
{
"node": "'${node}'",
"value_cpu": "'${value_cpu}'",
"percent_cpu": "'${percent_cpu}'",
"value_mem": "'${value_mem}'",
"percent_mem": "'${percent_mem}'"
}'
comma=,
if [[ ! "$node" =~ "$node_match" ]]; then
continue
fi
node_count=$((node_count + 1))
total_percent_cpu=$((total_percent_cpu + percent_cpu))
total_percent_mem=$((total_percent_mem + percent_mem))
done
echo ']'
if [[ $node_count != 0 ]]; then
local avg_percent_cpu=$((total_percent_cpu / node_count))
local avg_percent_mem=$((total_percent_mem / node_count))
echo ',
"avg": {
"percent_cpu": "'${avg_percent_cpu}'",
"percent_mem": "'${avg_percent_mem}'",
"node_count": "'${node_count}'",
"node_match": "'${node_match}'"
}'
fi
echo '}'
}
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment