如何使用滚动更新来重新拉取容器图像?

时间:2015-09-05 01:16:51

标签: docker kubernetes

我有一个kubernetes RC / pod,其容器的图像如下:@Resource(lookup = "jdbc/mydb") private DataSource myDataSource; Connection c = myDataSource.getConnection(); 其中"分支"是git分支(" master"等)。

使用滚动更新强制RC重新拉取图像以获取最新版本的最佳方法是什么?蛮力方法是简单地删除RC并重新创建它,但这会导致服务停机。

只有在指定精确的图片标记时才能进行滚动更新,而不是像#34;最新的"?

2 个答案:

答案 0 :(得分:5)

您应该能够使用rolling update指定您当前使用的相同图像名称:

kubectl rolling-update <replication-controller-name> --image=foobar/myimage:[branch]-latest

这将(在幕后)创建一个新的复制控制器,它是具有“新”映像的现有复制控制器的副本,然后逐步调整每个复制控制器的大小,直到旧的复制控制器具有零pod和新的复制控制器一个具有所需数量的pod,最后删除旧的pod并重命名新的pod以使用旧名称。

答案 1 :(得分:0)

如果您希望滚动更新重新提取图片,则必须使用:latest标记或指定Always的图片提取政策(请参阅Kubernetes文档中的Updating Images )。

在您的情况下,您不能使用:latest标记,因为您想要特定分支上的最新图像,因此使用拉取策略是可行的方法。

dns-frontend-pod.yaml是一个示例文件,显示了如何使用Always的图像提取策略。