# 替换k8s集群的网络插件 有时候我们在测试环境的k8s集群中希望试用多种网络插件(calico/flannel/kube-router),又不希望每测试一次就全部清除集群然后重建,那么可能这个文档适合你。 - WARNNING:重新安装k8s网络插件会短暂中断已有运行在k8s上的服务 - 请在熟悉kubeasz的安装流程和k8s网络插件安装流程的基础上谨慎操作 - 如果k8s集群已经运行庞大业务pod,重装网络插件时会引起所有pod的删除、重建,短时间内将给apiserver带来压力,可能引起master节点夯住 - 确保没有裸pod 运行(因为最后需要删除所有pod 重建,裸pod 不会重建),即所有pod 都是由 deploy/daemonset/statefulset 等创建; ## 替换流程 kubeasz使用标准cni方式安装k8s集群的网络插件;cni负载创建容器网卡和IP分配(IPAM),不同的网络插件(calico,flannel等)创建容器网卡和IP分配方式不一样,所以在替换网络插件时候需要现有pod全部删除,然后自动按照新网络插件的方式重建pod网络;请参考[k8s网络插件章节](../setup/06-install_network_plugin.md)。 ### 替换操作 替换网络插件操作很简单,只要两步: - 1.修改ansible hosts文件指定新网络插件 - 2.执行替换脚本 `ansible-playbook /etc/ansible/tools/change_k8s_network.yml` 对照脚本`change_k8s_network.yml` 讲解下大致流程为: a.根据实际运行情况,删除现有网络组件的daemonset pod b.如果现有组件是kube-router 需要进行一些额外清理 c.暂停node相关服务,后面才可以进一步清理iptables等 d.执行旧网络插件相关清理 e.重新开启node相关服务 f.安装新网络插件 g.删除所有运行pod,然后等待自动重建 ## 验证新网络插件 参照[calico](../setup/network-plugin/calico.md) [cilium](../setup/network-plugin/cilium.md) [flannel](../setup/network-plugin/flannel.md) [kube-router](../setup/network-plugin/kube-router.md)