Pod映像更新和重新启动容器保留相同的IP问题

时间:2018-10-25 22:46:07

标签: kubernetes

我直接使用POD来管理K8s集群中的C *集群,而不使用任何高级控制器。当我想升级C *时,我想进行图像更新。这是更新映像以进行升级的好模式吗?

我看到高级部署控制器也支持映像更新,但这导致POD删除并重新创建,从而导致IP更改。我不想更改IP,我发现如果我直接更新POD映像,它将导致重新启动并保留IP。这是我想要的确切行为,这种模式对吗?

在生产中使用安全吗?

1 个答案:

答案 0 :(得分:2)

我相信您可以按照K8 documentation的要求,采取更加“生产就绪”的升级策略。基本上,使用updateStrategy=RollingUpdate

$ kubectl patch statefulset cassandra -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}

然后更新图像:

$ kubectl patch statefulset web --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"cassandra:next-version"}]'

并观看您的更新:

$ kubectl get pod -l app=cassandra -w

如果您想分别更新每个C *节点,还可以使用Staging the Update,例如,为什么如果新版本不兼容,那么您可以将该C *恢复为原始版本

此外,在进行升级之前,请熟悉所有Cassandra发行说明。