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

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

# 要查看哪个命名空间的 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

参考

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 组件版本和配置策略 组件版本: Kubernetes 1.10.4 Docker 18.03.1-ce Et...
    Anson前行阅读 5,823评论 0 11
  • 本文将介绍 k8s 中的一些最基本的命令,并辅以解释一些基本概念来方便理解,也就是说,本文是一篇偏向实用性而非学术...
    HoPGoldy阅读 32,984评论 0 33
  • 版权声明:原创作品,谢绝转载!否则将追究法律责任。 前言 最近中国和印度的局势也是愈演愈烈。作为一个爱国青年我有些...
    李伟铭MIng阅读 2,084评论 0 5
  • k8s容器编排 [TOC] 1:k8s集群的安装 1.1 k8s的架构 除了核心组件,还有一些推荐的Add-ons...
    Zh_bd92阅读 920评论 0 0
  • 子午临申地,丑未戍上行,寅申许甲子,卯酉寅(虎)上路,辰戌龙位上,已亥午上存。 吉时凶时顺序:青龙(吉)明堂(吉)...
    1ed281567922阅读 16,415评论 1 0