Flannel
Flannel 是 Kubernetes 中广泛使用的网络插件,通过为每个节点分配独立子网来实现 Pod 的跨节点通信。它支持多种模式,包括 VXLAN 隧道、Host-GW 和 UDP 等,以适应不同网络环境需求。Flannel 设计简单、易于部署,主要适用于对性能要求适中、规模不大的集群场景。相较于其他插件(如 Calico 或 Cilium),Flannel 不支持高级网络策略,但在提供基本网络连通性上表现稳定可靠,是轻量级集群的理想选择。
https://github.com/flannel-io/flannel
下载chart
wget https://github.com/flannel-io/flannel/releases/download/v0.26.0/flannel.tgz1
修改配置
修改podCidr,需要和k8s初始化指定的值保持一致
kubectl get configmap kubeadm-config -n kube-system -o jsonpath='{.data.ClusterConfiguration}' | grep -E 'podSubnet|serviceSubnet'1
values.yaml是修改后的配置,可以根据环境做出适当修改
cat values.yaml1
创建服务
helm install flannel -n kube-system -f values.yaml flannel.tgz1
查看服务
kubectl get pods -n kube-system -l app=flannel
kubectl -n kube-system logs -f daemonsets/kube-flannel-ds1
2
2
查看应用
kubectl get pod -A -o wide1

删除服务以及数据
删除相关的资源
helm uninstall flannel -n kube-system1
删除相关的文件
所有节点
rm -rf /var/lib/cni/
rm -f /etc/cni/net.d/10-flannel.conflist /opt/cni/bin/flannel1
2
2
卸载内核模块
所有节点
modprobe -r vxlan1
删除网络设备
所有节点
for net in $(ifconfig | egrep "tunl|cni|flannel|veth" | awk -F: '{print $1}');do ifconfig $net down && ip link delete $net;done1
重启kubelet
在卸载服务之后,所有节点建议重启
kubelet服务和网络服务,以确保 Kubernetes 节点恢复到正常的网络状态
systemctl restart kubelet1
查看pod状态
kubectl get pod -A -o wide1
