我有一个 3 控制平面节点 HA kubeadm 集群,需要完全替换。我已经替换了工作节点。如何在不停机的情况下完全替换控制平面?
我在 api 端点前面使用了 LB。这是一个生产环境,所以我想确保我做对了。失败不是一种选择。
我最初的攻击计划是这样的:
- 在原控制平面节点 1 上使用以下命令添加 3 个新节点
sudo kubeadm token create --print-join-command --certificate-key $(kubeadm certs certificate-key)
。获取输出并将其应用于所有 3 个新主机。 - 等到每个人都稳定并且所有 6 个 cp 节点都准备就绪。
- 耗尽第一个旧节点
- kubectl 删除节点
- ssh 进入同一节点的主机,运行 kubeadm reset。
- 等到一切稳定并且所有 5 个节点都准备就绪。
- 对剩余的旧节点再冲洗并重复2次。
这就是我害怕的地方,我知道如果你不小心使用 etcd,你的集群可能会崩溃。在原始安装期间,我们在第一个 cp 节点 (cp1) 上使用 kubeadm init。然后我们对其余节点使用加入令牌。这是否使 cp1 成为一个特殊的 cp 节点,甚至可以替换它?我四处寻找答案,但没有找到任何真正令人信服或权威的东西。
感谢您的关注。一旦我弄好,我将向 kubernetes.io 小组提交文档。
环境:kubectl、kubeadm、kubelet:1.26.0 cilium cni:1.12.5 ubuntu 20.04 containerd:1.6.17