k8s踩坑——网络插件fannel安装
k8s部署flannel网络插件,学习总结笔记,仅供参考
status状态问题
搭建好k8s集群后,集群中的节点status全部都是NotReady,最后一查资料,原来是网络插件没有安装,看到有安装fannel,也有安装calico的
关于k8s网络,刚入门对其并未了解太多,这几篇博客解释的挺通透的。
这里选择了安装fannel网络,借鉴网上的这篇博客,就简单记录一些
Flannel原理
Flannel是由Core OS团队针对k8s设计的一个网络规划服务,其功能是为集群中所有docker容器分配全局唯一的虚拟IP地址,并通过Overlay网络实现这些虚拟IP之间的通信。
1)每个主机上需要安装并运行etcd和flannel
2)在etcd中规划配置所有主机的docker0子网范围
3)主机上的flannel根据etcd的配置为本机的docker0分配子网,一确保所有主机上的docker0的网络不重复,并将分配的结果保存到etcd中
4)当容器需要与其他主机上的容器进行通信是,先查找tecd数据库以找到目标容器所属子网对应的目标宿主机的IP地址
5)将原始网络数据包封装在VXLAN或UDP包中,IP则以目标宿主机为目的IP进行封装
6)基于宿主机的网络将网络数据包传输到目标宿主机后,对数据包进行解封装,最后送达目的容器
修改/etc/hosts
修改/etc/hosts,使其节点间网络互ping
vim /etc/hosts
192.168.237.125 k8s-master
192.168.237.124 k8s-node1
192.168.237.123 k8s-node2
把修改后的配置文件远程拷贝到其他两台主机
scp /etc/hosts root@k8snode1:/etc/
scp /etc/hosts root@k8snode2:/etc/
通过互ping,检测是否能连接
配置fannel
docker pull quay.io/coreos/flannel:v0.11.0-arm64 #拉取flannel网络,三台主机
docker images #查看仓库是否拉去下来
mkdir -p /etc/cni/net.d #创建目录给flannel做配置文件
vim /etc/cni/net.d/10-flannel.conf
vim /etc/cni/net.d/10-flannel.conf
{
"name": "cbr0",
"cniVersion": "0.3.1",
"type": "fannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
}
scp /etc/cni/net.d/10-flannel.conf root@k8snode1:/etc/cni/net.d/10-flannel.conf
scp /etc/cni/net.d/10-flannel.conf root@k8snode2:/etc/cni/net.d/10-flannel.conf #远程拷贝
mkdir /usr/share/oci-umount/oci-umount.d/ -p #三台主机
mkdir /run/flannel #三台主机
flannel网段配置文件
vim /etc/cni/net.d/10-flannel.conf
{
"name": "cbr0",
"cniVersion": "0.3.1",
"type": "fannel",
"delegate": {
"hairpinMode": true,
"isDefaultGateway": true
}
}
把修改后的配置文件远程拷贝到其他两台主机
scp /run/flannel/subnet.env root@k8snode1:/run/flannel/subnet.env
scp /run/flannel/subnet.env root@k8snode2:/run/flannel/subnet.env
systemctl daemon-reload
systemctl restart kubelet.service
systemctl restart docker #三台
最后kubectl get nodes,查看status,看看fannel是否连通
个人学习总结,仅供参考
更多推荐
所有评论(0)