背景: 在我们下线节点的时候,事先要检查节点上是否有单个pod的应用,针对这些应用提前调度处理。针对此情况,写了个脚本完成此类工作,特此记录一下。
获取驱逐pod名称:
#!/bin/bash
ips=$1
ns=$2
for po in `kubectl -n $ns get pod -o wide |grep $ips|awk '{print $1}'|grep -v NAME`;
do
podLength=${#po}
rs=${po:0:podLength-6}
# echo "podLength=$podLength rs=$rs"
podS=$(kubectl -n $ns get pod -o wide |grep $rs|wc -l)
if [ $podS -lt 2 ]
then
echo $rs
fi
done
批量修改request 内存地址
alias kp='kubectl --kubeconfig=/root/.kube/config-pre-new'
ips=$1
for app in `kp get pod -o wide |grep $ips |awk '{print $1}'`;
do
depname=`kp get pod $app -o jsonpath={.spec.containers[*].name}`
echo $depname
jsonpath='{"spec":{"template":{"spec":{"containers":[{"name":"app","resources":{"requests":{"cpu":"100m","memory":"1
Gi"}}}]}}}}'
aa=`echo $jsonpath|sed "s|app|$depname|"`
echo $aa
kp patch deploy $depname -p=$aa
sleep 30s
done