k8s 搭建与学习

k8s 小脚本 - 显示所有 deploy 的镜像地址

2020-01-02  本文已影响0人  HoPGoldy

在实际的运维中,偶尔会出现想要查看测试环境和生产环境有那些微服务版本不同的问题,一个一个对比镜像地址的话未免有些麻烦,所以就做了下面这个小脚本,这里分享一下:

# 要查看哪个命名空间的 deployment
namespace=kube-system

# 获取所有的 deployment
deploys=`kubectl get deployments.extensions -n $namespace 2>/dev/null | awk -F ' ' '{ print $1 }'`

# 遍历所有 deployment 获取其镜像地址
for deploy in $deploys; do
  image_url=$(kubectl get deployments.extensions -n $namespace $deploy -o yaml 2>/dev/null | grep image: | awk -F ': ' '{ print $2 }')
  if [ "$image_url" != "" ]; then
    printf "%-30s %-30s\n" $deploy $image_url
  fi
done

把 namespace 修改为自己环境的命名空间名称既可以,以 kube-system 为例,输出如下:

calico-kube-controllers        quay.io/calico/kube-controllers:v3.3.0
coredns                        registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.1.3
tiller-deploy                  registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.1

不过写完之后发现 kubectl 其实是可以快捷输出镜像版本的 ==,很尴尬,这里也贴出来:

kubectl get deployments -n kube-system -o jsonpath="{..image}" |\
tr -s '[[:space:]]' '\n' |\
sort |\
uniq -c

输出如下,前面的1是指有多少 deploys 在使用该镜像:

1 quay.io/calico/kube-controllers:v3.3.0
1 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.1.3
1 registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.12.1

参考

上一篇下一篇

猜你喜欢

热点阅读