【问题标题】:minimise disruption on weave network upgrade on kubernetes最大限度地减少 Kubernetes 上 weave 网络升级的中断
【发布时间】:2020-02-05 09:02:42
【问题描述】:
我想将我的 weave 网络从 2.5.0 版本升级到 2.5.2。我知道这与更新 weave 守护程序集“一样简单”....但是,我想知道是否有一种方法可以在对系统上运行的 pod 造成最小干扰的情况下完成此操作。
我心中的一个简单例子是:
- 警戒线节点1
- 排空所有 pod 的 node1
- 在 node1 上更新编织
- 解除节点1
...然后冲洗并重复每个 k8s 节点,直到全部完成。
【问题讨论】:
标签:
networking
kubernetes
upgrade
weave
cni
【解决方案1】:
基于织网documentation
DaemonSet 定义指定Rolling Updates,所以当你应用新版本时,Kubernetes 会自动一个一个重启 Weave Net pod。
使用 RollingUpdate 更新策略,更新 DaemonSet 模板后,旧的 DaemonSet pod 将被杀死,新的 DaemonSet pod 将以受控方式自动创建。
正如我在另一个 stackoverflow answer 中看到的那样
从今天开始,可以使用 DeamonSet 执行滚动更新而无需停机!您需要在集群上运行至少 2 个节点,并在 DaemonSet 配置中将 maxUnavailable 设置为 1。
假设之前的配置,当推送更新时,第一个节点将开始更新。第二个将等到第一个完成。成功后,第二个也会这样做。
主要缺点是您需要保持 2 个节点连续运行,或者在更新之前/之后采取措施生成/杀死一个节点。
所以我认为升级 CNI 插件的最佳选择是使用带有滚动更新的 DaemonSet 并在 DaemonSet 配置中将 maxUnavailable 设置为 1。