K8S中批量获取deployment使用的镜像信息

#!/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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值