如何在 K8s 中实现 Pod 原地更新?

背景

正如在“指定实例下线”特性介绍里所述,早期的版本中,KubeBlocks 最终生成的 Workload 是 StatefulSet,这导致 KubeBlocks 继承了 StatefulSet 的局限性。

另一个局限性是,StatefulSet 通过 PodTemplate 渲染最终的 Pod,当 PodTemplate 中有任何字段发生了改变,都会导致所有 Pod 被更新,而 StatefulSet 采用的更新方式是 Recreate,即首先删除现有的 Pod,然后再新建一个 Pod。对于数据库等对可用性要求很高的系统,这样的方式显然不是最佳选择。

为了解决这个问题,KubeBlocks 从 0.9 版本开始,使用 InstanceSet 替代了 StatefulSet,新增了实例原地更新特性,在实例模板中部分字段更新时,InstanceSet 会采用原地更新 Pod 或扩容 PVC 的方式,实现实例更新,降低实例更新时对系统可用性的影响

实例(Instance)哪些字段支持原地更新

从原理上来讲,KubeBlocks 实例原地更新复用了 Kubernetes Pod API 原地更新能力</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值