K8S资源分配以及使用查询

因为要统计K8S的pod的limits和request以及实际使用率与分配的总和所以写了这个脚本,直接输入对应的命名空间就能使用

# !/bin/bash
echo '这是现有的命名空间请选择'
/usr/local/bin/kubectl get ns
echo '----------------------------------------------------------'
read -p '输入你要查询的命名空间:' name

echo "您选定该命名空间:$name 正在查询请稍后"

/usr/local/bin/kubectl get pod -n $name | sed -n '2,$p' | awk -F ' ' '{print $1}' > /tmp/name.txt

number=$(cat /tmp/name.txt | wc -l)


pod(){
for (( i=1;i<=$number;i++ ))
do
line=$(cat /tmp/name.txt | sed -n ''$i'p' )
if [[ $i == 1 ]]
then

echo "pod名称,limits(cpu/memory),requests(cpu/memory),top(cpu/memory)" > ./end.csv
f=$( /usr/local/bin/kubectl describe pod $line -n $name | grep -A 2 Limits |sed -n '2,$p' | awk -F ' ' '{printf $2"/"}' | awk -F '/' '{print $1"/"$2}' )
e=$( /usr/local/bin/kubectl describe pod $line -n $name | grep -A 2 Requests |sed -n '2,$p' | awk -F ' ' '{printf $2"/"}' | awk -F '/' '{print $1"/"$2}' )
r=$(/usr/local/bin/kubectl top pod $line -n $name |  sed -n '2,$p' | awk -F ' ' '{print $2"/"$3}')
echo "$line,$f,$e,$r" >> ./end.csv

else
f=$( /usr/local/bin/kubectl describe pod $line -n $name | grep -A 2 Limits |sed -n '2,$p' | awk -F ' ' '{printf $2"/"}' | awk -F '/' '{print $1"/"$2}' )
e=$( /usr/local/bin/kubectl describe pod $line -n $name | grep -A 2 Requests |sed -n '2,$p' | awk -F ' ' '{printf $2"/"}' | awk -F '/' '{print $1"/"$2}' )
echo "$line,$f,$e,$r" >> ./end.csv

fi


#cat end.csv  | awk -F ':' '{print $2}' | awk -F ',' '{print $1}' | sed  -n '2,$p' > /tmp/te.txt
done
}

limits-statistics(){

cat ./end.csv  | awk -F ',' '{print $2}' | awk -F ',' '{print $1}' | sed  -n '2,$p' > /tmp/te.txt
filename="/tmp/te.txt"
# 使用awk计算总和
awk -F '/' '{
    split($1, a, /[mMi]/);
    split($2, b, /[mMi]/);
    sum1 += a[1]; sum2 += b[1];
    } 
    END {
        printf   sum1 
        printf "/"
        printf  sum2
    }' "$filename" > /tmp/5.txt

p=$(cat /tmp/5.txt)
echo "limits-all: $p" >> ./end.csv
}

requests-statistics(){
cat ./end.csv  | awk -F ',' '{print $2}' | awk -F ',' '{print $1}' | sed  -n '2,$p' > /tmp/te.txt
filename="/tmp/te.txt"
# 使用awk计算总和
awk -F '/' '{
    split($1, a, /[mMi]/);
    split($2, b, /[mMi]/);
    sum1 += a[1]; sum2 += b[1];
    } 
    END {
        printf   sum1 
        printf "/"
        printf  sum2
    }' "$filename" > /tmp/5.txt

o=$(cat /tmp/5.txt)
echo "requests-all: $o" >> ./end.csv
}
echo "---------------------------------------------------"
echo "查询完毕,已在当前目录生成end.csv文件,请使用cat end.csv查看"
pod
limits-statistics
requests-statistics

会生成end.csv格式的文件直接lrzsz命令下载下来查看即可

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值