我有一个 3 节点的 kubernetes 集群,k8s 1.22 版本,flannel 设置良好,运行良好。我确实按照以下描述从 flannel 到 calico 进行了实时迁移步骤这里集群已成功迁移到 calico。但是当我尝试多次时,有几次我遇到了以下情况。
- 即使 20 小时后,法兰绒迁移工作仍在运行。
- 法兰绒到白布的迁移没有成功。
- 3 个节点中有两个节点(node2 和 node3)正在运行 calico 节点
- 一个节点(node1)处于 schedulingdisabled 模式,并且 calico 节点未在设置上运行。
- 当我读取 flannel 迁移作业的日志时,它正尝试访问 kube-apiserver,但此时它处于关闭状态,因此失败了。
稍后,当 kube-api 服务器稳定后,我尝试重新运行 flannel 迁移作业,但它没有继续,什么也没有发生。
如何使 flannel 到 calico 的迁移幂等。如果发生故障,我想重新运行并确保 flannel 到 calico 的迁移完成。
谢谢任何帮助和建议。
答案1
我的想法是,节点可能迁移到一半,因此出现了一些奇怪的错误。如有疑问,请恢复并重做。
要确定哪些节点已迁移到 Calico:
kubectl 获取节点 -l projectcalico.org/node-network-during-migration=calico
然后封锁并排干迁移到一半的节点:
kubectl drip {节点名称}
登录节点并删除 CNI 配置:
rm /etc/cni/net.d/10-calico.conflist
重新启动节点并确保启用 flannel:
kubectl 标签节点 {节点名称} projectcalico.org/node-network-during-migration=flannel --overwrite
解除节点封锁:
kubectl uncordon {节点名称}
从 flannel daemonset 中删除 nodeSelector:
kubectl patch ds/kube-flannel-ds-amd64 -n kube-system -p '{"spec": {"template": {"spec": {"nodeSelector": null}}}}'
最后从相关节点中删除迁移标签:
kubectl 标签节点 {节点名称} projectcalico.org/node-network-during-migration-
现在。在确认 kube-api 服务器已启动且稳定的情况下重新进行迁移,然后让我知道发生了什么。