kubectl 更新容器鏡像


kubectl set image 命令

      我一般是在CICD里更新容器鏡像地址,沒有原始的也不需要原始的yml文件,kubectl set image 顯的油漆方便。

kubectl set image deployment/nginx busybox=busybox:3.2 nginx=nginx:1.19.1

kubectl scale 命令

kubectl scale --replicas=3 deployment/nginx

 

kubectl rollout restart 命令

此命令可以讓容器重新部署。
示例
將名為nginx的deployment重新部署.

kubectl rollout restart deployment/nginx

有了以上3個命令的基礎,做個假設。
1、假設每次鏡像版本號都會發生變更,那么使用 kubectl set image 就可以達到更新鏡像並重新部署的效果;
2、假設每次鏡像版本號都 不 會發生變更,那么可以有兩種方式
1)先 kubectl set image 更新鏡像,再 kubectl scale --replicas=0,然后 kubectl scale --replicas=1,我曾經與saas廠商對接(私有化部署)時遇到過,當時沒有太多思考,現在想來,這樣處理會導致服務不可用性增加(因為有個0->1的過程么,期間服務會不可用)。
2)先 kubectl set image 更新鏡像,然后使用 kubectl rollout 重新部署。

綜上,2的1)並不可取。
寫個腳本吧。

# 先更新鏡像
result=`kubectl set image deployment nginx *=nginx:alpine -n default`

# 檢測鏡像是否更新成功
if [[ "$(echo $result | grep updated)" != ""  ]]; then
    # 鏡像地址更新了,會自動重新部署
    echo 'UPDATED'
else
    # 鏡像地址與之前相同,需要觸發重新部署
    echo 'NOT UPDATE'
    kubectl rollout restart deployment nginx -n default
fi

參考文檔:https://blog.csdn.net/woshiduxingjun/article/details/118677276


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM