Skip to content

Latest commit

 

History

History
31 lines (22 loc) · 2 KB

change_k8s_network.md

File metadata and controls

31 lines (22 loc) · 2 KB

替换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网络插件章节

替换操作

替换网络插件操作很简单,只要两步:

  • 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 cilium flannel kube-router