2017-08-11 34 views
3

因此,为了更新在pod上运行的映像,我必须修改部署配置(yaml文件),并运行诸如kubectl apply -f deploy.yaml之类的东西。启动部署滚动更新的自动替代

这意味着,如果我不是手动编辑yaml文件,我将不得不使用一些模板/搜索和替换功能。这不是很理想。

有没有更好的方法?

似乎有一个kubectl rolling-update命令,但我不确定这是否适用于'部署'。

例如运行以下:如果您查看YAML文件

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1 

kubectl rolling-update wordpress --image=eu.gcr.io/abcxyz/wordpress:deploy-1502443760

可生产的错误:

error: couldn't find a replication controller with source id == default/wordpress 
+0

我们需要替换部署中的映像版本以进行升级。头盔将是有益的发展工具。看看https://helm.sh/看看它会适合你的需要。 – sfgroups

回答

2

我用这对部署百变形象作为真相的来源,然后在yaml中使用类似stable的标签,并且仅在移动标签时发出kubectl set image命令(使用sha256图片ID实际触发推出;图像名称像字符串一样匹配,因此即使标签现在指向不同的图像,从:stable更新为:stable也是一个noop)。

请参阅updating a deployment了解更多详情。

以上要求将部署副本计数设置为多于1,这在此处进行了说明:https://stackoverflow.com/a/45649024/1663462

+0

虽然这不会进行滚动部署 - 除非我错了? –

+0

它的确如此。有效地,这是部署的“补丁”。 –

+0

当使用'设置image'我看到这样算账: 'NAME就绪状态重新启动AGE' 'WordPress的-4023966612-99p4b 0/3挂起0 2s' 'WordPress的-46128486-vl6f6 0/3终止0 1m' 现有的豆荚正在终止,而新豆荚尚未稳定。这似乎不是滚动更新? –