我有一个kubernetes RC / pod,其容器的图像如下:@Resource(lookup = "jdbc/mydb")
private DataSource myDataSource;
Connection c = myDataSource.getConnection();
其中"分支"是git分支(" master"等)。
使用滚动更新强制RC重新拉取图像以获取最新版本的最佳方法是什么?蛮力方法是简单地删除RC并重新创建它,但这会导致服务停机。
只有在指定精确的图片标记时才能进行滚动更新,而不是像#34;最新的"?
答案 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
的图像提取策略。