我们有一个系统,它目前使用docker-compose来部署容器(实际上是docker-compose pull && docker-compose up),并且正在将系统转换为Kubernetes。
我们有CI/CD,它基于git标记自动部署到生产中,并推送到git存储库。为了分期,我们继续推进一个分支。码头映像生成并使用git产品标记或git暂存分支名称进行标记。
在部署时,如果映像实际上是相同的,则docker-compose足够智能,不能重新启动容器,即两个生产标记指向同一个映像。
我正在寻找一种在Kubernetes中做同样的事情的方法--如果在部署时,用于容器的实际映像与已经运行的映像相同(基于图像校验和,而不仅仅是图像标记),那么它就不必重新启动吊舱。这个是可能的吗?
谢谢
发布于 2021-02-02 07:51:24
正如我在评论中提到的,它应该与imagePullPolicy:Always一起工作。
根据文档
当kubelet试图提取指定的图像时,容器图像、imagePullPolicy和图像标记会产生影响。imagePullPolicy: an :每当kubelet启动容器时,kubelet都会查询容器图像注册表,以将名称解析为图像摘要。如果kubelet有一个具有本地缓存的精确摘要的容器映像,那么kubelet将使用其缓存的映像;否则,kubelet将下载()带有解析摘要的图像,并使用该图像启动容器。注意:为了确保容器始终使用相同版本的映像,可以指定其摘要;替换: with @(例如,image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2). )摘要唯一地标识图像的特定版本,因此除非您更改摘要值,否则Kubernetes永远不会更新它。
还有一个叫做imago的工具,值得一看。Imago检查正在运行的豆荚sha256,然后重新启动需要使用更新映像的资源。
https://serverfault.com/questions/1049555
复制相似问题