美文网首页k8s 搭建与学习
k8s 小脚本 - 显示所有 deploy 的镜像地址

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

作者: HoPGoldy | 来源:发表于2020-01-02 14:35 被阅读0次

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

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

    参考

    相关文章

      网友评论

        本文标题:k8s 小脚本 - 显示所有 deploy 的镜像地址

        本文链接:https://www.haomeiwen.com/subject/yjcooctx.html