0

I would like to upgrade my weave network from version 2.5.0 to 2.5.2. I understand that it's "as simple" as updating the weave daemonset.... however, i was wondering if there is a way that this can be done with minimal disruption to running pods on the system.

An simple example in my mind would be to:

  • cordon node1
  • drain node1 of all pods
  • update weave on node1
  • uncordon node1

... then rinse and repeat for each k8s node until all done.

4

1 回答 1

0

基于编织网文档

升级守护程序集

DaemonSet 定义指定了Rolling Updates,所以当你应用新版本时,Kubernetes 会自动一个一个重启 Weave Net pod。

使用 RollingUpdate 更新策略,在您更新 DaemonSet 模板后,旧的 DaemonSet pod 将被杀死,并且新的 DaemonSet pod 将以受控方式自动创建。

正如我在另一个stackoverflow答案中所读到的

从今天开始,可以使用 DeamonSet 执行滚动更新而无需停机!您需要在集群上运行至少 2 个节点,并在 DaemonSet 配置中将 maxUnavailable 设置为 1。

假设之前的配置,当推送更新时,第一个节点将开始更新。第二个将等到第一个完成。成功后,第二个做同样的事情。

主要缺点是您需要保持 2 个节点连续运行,或者在更新之前/之后采取措施生成/杀死一个节点。

所以我认为升级 CNI 插件的最佳选择是使用带有滚动更新的 DaemonSet 并在 DaemonSet 配置中将 maxUnavailable 设置为 1。

于 2019-10-09T06:17:08.003 回答