我直接使用POD来管理K8s集群中的C *集群,而不使用任何高级控制器。当我想升级C *时,我想进行图像更新。这是更新映像以进行升级的好模式吗?
我看到高级部署控制器也支持映像更新,但这导致POD删除并重新创建,从而导致IP更改。我不想更改IP,我发现如果我直接更新POD映像,它将导致重新启动并保留IP。这是我想要的确切行为,这种模式对吗?
在生产中使用安全吗?
答案 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发行说明。