ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kubectl 更新容器镜像

2021-12-10 19:03:59  阅读:203  来源: 互联网

标签:容器 set kubectl image nginx deployment 镜像


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

标签:容器,set,kubectl,image,nginx,deployment,镜像
来源: https://www.cnblogs.com/yinliang/p/15673397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有