kubectl 更新容器镜像的几种方式

      [我写的东东不需要别人看,就当自己的笔记用用吧,对我自己有用,或许也对他人有用呢]
      网上介绍的更新容器的方式有很多很好,比如

引用博文 去看看

      通过查阅资料,发现还有其它一些方式能够更新镜像地址,这里只做一点小小的补充。
      

kubectl set image 命令

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

# 官方语法
image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N

示例
将deployment中的nginx容器镜像设置为“nginx:1.9.1”。

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

这种方式有个小问题,如果镜像地址没有发生改变(测试环境部署时可能有遇到镜像版本不变更的情况或者镜像版本是基于git记录生成的),容器不会重新部署,也就不会生效。

kubectl scale 命令

# 官方语法
scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

示例
将名为nginx的deployment副本数设置为3。

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
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用kubectl删除容器,可以使用以下命令: kubectl delete pod <pod名称> 其中,"<pod名称>"是要删除的容器的名称。这将触发Kubernetes系统删除指定的Pod,包括其相关的容器。 请注意,删除Pod将导致其中的所有容器被终止并清理。此操作无法撤销,因此请确保在执行删除操作之前,先备份必要的数据。 引用中提到,如果Kubelet缺少镜像容器,可能会导致问题。而引用中提到,Kubelet会自动监控未使用的图像,并定期删除它们。因此,通过删除Pod和相关的容器,Kubelet可以清理不再使用的镜像,以释放存储空间。 此外,引用中提到,容器清理还不完全支持驱逐系统,但可以使用特定的标志和参数来设置容器镜像的驱逐策略。 总结起来,使用kubectl delete pod <pod名称>命令可以删除容器,并通过Kubelet的自动监控和清理机制,释放不再使用的镜像所占用的存储空间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [如何清理Kubernetes集群中的旧容器镜像](https://blog.csdn.net/woshaguayi/article/details/129749336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值