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