#!/bin/bash
#命名空间
namespace=$1
if [ -z "$namespace" ];then
echo "Please usage: bash $0 <namespace>"
exit 0
fi
#获取deployment的名字
deployment_name=$(kubectl get deployment -n$1 |grep -v NAME |awk '{print $1}')
#获取deployment对应的镜像信息
for deployment in $deployment_name
do
image=$( kubectl get deployment -n$1 $deployment -ojson | jq .spec.template.spec.containers | grep "\<image\>"| awk '{print $2}' | sed 's/,//g' )
echo -e "\t $deployment: $image"
done
K8S中批量获取pod使用的镜像信息
rm -rf sg_image
kubectl get pod -A|awk '/Running/ {print "kubectl get pod "$2" -n "$1" -oyaml"}' |sh |grep image:\ 192.168.204.130:|grep -v imageID:|awk -F: '{print $2":"$3"$4}'|sort|uniq >> sg_iamge
#!/bin/sh
for i in `cat sg_iamge`
do
grep $i yf_name
if [ $? !=0] ;then
echo $i >> 2.txt
fi
done
K8S中批量获取deployment使用的内存配额
.spec.template.spec.containers[0].resources
#!/bin/bash
#命名空间
namespace=$1
if [ -z "$namespace" ];then
echo "Please usage: bash $0 <namespace>"
exit 0
fi
#获取deployment的名字
deployment_name=$(kubectl get deployment -n$1 |grep -v NAME |awk '{print $1}')
#获取deployment对应的镜像信息
for deployment in $deployment_name
do
image=$( kubectl get deployment -n$1 $deployment -ojson | jq .spec.template.spec.containers | grep "\<image\>"| awk '{print $2}' | sed 's/,//g' )
echo -e "\t $deployment: $image"
done
jq .spec.template.spec.containers[0].resources.limits
jq .spec.template.spec.containers[0].resources.limits.memory
m =$(kubectl get deployments.apps calico-kube-controllers -nkube-system -ojson|jq .spec.template.spec.containers[0].resources.limits.memory)
kubectl get deployments.apps calico-kube-controllers -nkube-system -ojson|jq .spec.template.spec.containers[0].resources.limits.memory|sed 's/Mi//g'
do
if [[ "$m" < "1000" ]];then
echo -e "\t $kdeployment: $m"
#/bin/bash
namespace=$1
if [ -z "$namespace" ];then
echo "Please usage: bash $0 <namespace>"
exit 0
fi
#获取deployment的名字
deployment_name=$(kubectl get deployment -n$1 |grep -v NAME |awk '{print $1}')
#获取deployment对应的内存配额
for deployment in $deployment_name
do
if [[ mlimit=$( kubectl get deployment -n$1 $deployment -ojson | jq .spec.template.spec.containers[0].resources.limits.memory|sed 's/Mi//g') < "1000" ]]
then
echo -e "\t $deployment: mlimit"
fi
done
#/bin/bash
u_uid=(`cat /etc/passwd | awk -F: '{print $3}'`)
u_name=(`cat /etc/passwd | awk -F: '{print $1}'`)
for i in `seq ${#u_uid[@] }`
do
if (( ${u_uid[i-1]} > 10000 ))
then
userdel -r ${u_name[i-1]}&&echo "${u_name[i-1]} delete ok"
fi
done
#/bin/bash
namespace=$1
if [ -z "$namespace" ];then
echo "Please usage: bash $0 <namespace>"
exit 0
fi
#获取deployment的名字
deployment_name=$(kubectl get deployment -n$1 |grep -v NAME |awk '{print $1}')
#获取deployment对应的内存配额
for deployment in $deployment_name
do
mlimit=$( kubectl get deployment -n$1 $deployment -ojson | jq .spec.template.spec.containers[0].resources.limits.memory|sed 's/Mi//g')
if (( "$( kubectl get deployment -n$1 $deployment -ojson | jq .spec.template.spec.containers[0].resources.limits.memory|sed 's/Mi//g')" < 1001 ))
then
echo -e "\t $deployment: $mlimit"
fi
done
kubectl get pod -n kube-system -oyaml |python -m json.tool
在调用接口查看信息时,得到的数据揉在一块,看起来不是很直观,如下:
curl -X post http://localhost:8090/api/base/show/patch
可以使用 python json.tool 工具
curl -X post http://localhost:8090/api/base/show/patch | python -m json.tool
还可以针对文件使用
python -m json.tool 'filepath'
kubectl使用小技巧
1. 去掉头部
kubectl通过get命令,可以获得很多信息:命名空间,服务,pod,节点等.
比如获取命名空间
kubectl get ns
我们需要获取第一列,但是第一行并不需要,初级一些的做法直接grep排除掉
kubectl get ns|grep -v NAME|awk '{print $1}'
awk老手可能就直接跳过第一行了
kubectl get ns|awk 'NR>1{print $1}'
其实不需要,第一行,直接不显示好了
kubectl get ns --no-headers
2. 获取指定节点的所有pod
我们知道get时,加了-o wide参数,会多显示两列,分别是pod ip和node ip.
既然想取指定节点的所有pod,那就把所有pod列出来,然后再grep节点就好了。
kubectl get pod -o wide|grep xxxxx
优雅点怎么?
kubectl get pod -o wide --field-selector spec.nodeName=xxxxxx
3. 获取指定label的节点
前面提到资源池了,同样资源池的节点的label是一样的,那么问题来了:怎么列出同一个资源池的节点?直接--show-labels然后grep啊。非也非也
比如 有个节点的label是:role=front
正确的命令是:
kubectl get no -l role=front
巡检发现生产节点worker节点103.28节点内存使用率95%,使用kubectl top pod排查占用大内存的应用pod
kubectl get pod -A --no-header|grep 103.28|grep -v "Complete"|awk "{print($1,$2)}" > 1.txt
#!/bin/bash
#file = "/root/1.txt"
while IFS=' ' read -r first second;
do
echo "$(kubectl top pod $second -n $first --no-headers)" >> 2.txt
sort -k3 -nr 2.txt > 3.txt
done < /root/1.txt