之前我搭建Kubernetes时 使用的是flannel网络插件,但是这款网络插件不好的一点就是不支持 网络策略。因为我在实际使用中需要使用网络策略,所以没办法 只好更好网络策略。在这里我准备把flannel 更改为 kube-router
什么是网络策略?
网络策略(Network Policy)是Kubernetes 提供的一种规范,它描述里一组pod 是如何被允许相互通信的,以及和其他端点是如何通信的。
Kubernetes 只是提供了这样的机制,具体实现功能由网络插件(Network Plugins) 实现,流行的网络插件有很多,但并不是所有的网络插件都提供了网络策略功能, 如flannel就没有提供这样的功能,目前已知的支持网络策略的有Calico, Cilium, Kube-router, Romana, Weave Net, Canal。
网络策略的应用和Kubernetes中很多操作类似,是通过labels来选取一组Pods的,然后再配置具体的规则(目前的实现都是通过配置iptables rule)来控制什么流量被允许发送到这组选取的Pods。
关于网络策略的详细内容请点击连接了解更多关于网络策略
在工作中,由于不同的需求,需要更换网络插件
建议:在生产场景中,建议提前规划好k8s的网络,如果中途更换网络插件,产生的影响会比较大;
先卸载flannel 网络插件步骤:
第一步: 在 master 节点中删除 flannel
kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
rm -rf /etc/cni/net.d/*
第二步: 在node 节点清理flannel 网络插件留下的文件
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/*
注:执行完上面的操作,重启kubelet
systemctl restart kubelet
安装kube-router网络插件:
# 创建kube-router目录下载相关文件
mkdir kube-router && cd kube-router
wget https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
wget https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter-all-features.yaml
# 以下两种部署方式任选其一
# 1. 只启用 pod网络通信,网络隔离策略 功能
kubectl apply -f kubeadm-kuberouter.yaml
# 2. 启用 pod网络通信,网络隔离策略,服务代理 所有功能
# 删除kube-proxy和其之前配置的服务代理
kubectl apply -f kubeadm-kuberouter-all-features.yaml
kubectl -n kube-system delete ds kube-proxy
# 以上两种其一 根据需要
# 在每个节点上执行 master node 都执行
docker run --privileged --net=host registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.10.2 kube-proxy --cleanup
# 查看
kubectl get pods --namespace kube-system
kubectl get svc --namespace kube-system
之后在master节点上运行 kubectl get nodes 查看节点状态
此时 node 节点没有起来
我把node节点 那个虚拟机 重启后
node起来了
在master节点上 运行 kubectl get pods --all-namespaces 查看所有pdo
此时 与 flannel相关的 pod都没了
在 master 中 查看相关进程
此时可以看到 kube-proxy 没了 由kube-router进行替代
在 node中 查看相关进程
参考博文 https://blog.51cto.com/liuzhengwei521/2382257?source=dra
https://juejin.im/post/5b460f506fb9a04fcf59bf73