在實際的運維中,偶爾會出現(xiàn)想要查看測試環(huán)境和生產(chǎn)環(huán)境有那些微服務版本不同的問題,一個一個對比鏡像地址的話未免有些麻煩,所以就做了下面這個小腳本,這里分享一下:
# 要查看哪個命名空間的 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 修改為自己環(huán)境的命名空間名稱既可以,以 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
不過寫完之后發(fā)現(xiàn) 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