查看 flannel 日志报错以下:linux
Couldn't fetch network config: client: response is invalid json. The endpoint is probably not valid etcd cluster endpoint. timed out 没法获取网络配置:客户端:响应无效json。端点可能不是有效的etcd集群端点。 计时结束
而后检查 etcd 和 flannel 版本json
# ./etcd --version etcd Version: 3.4.15 Git SHA: aa7126864 Go Version: go1.12.17 Go OS/Arch: linux/amd64 # ./flanneld --version v0.11.0
而后查阅 flanneld 官网文档,上面标准了 flannel 这个版本不能给 etcd 3 进行通讯,因此才形成了上面的问题,下面进行以下操做bash
1,中止 flannel网络
使用本身的方法中止,ide
2,删除 etcd 里面刚才建立的 keyfetch
# etcdctl get --prefix /coreos.com # etcdctl del /coreos.com/network
3, 开启 etcd v2 API 接口插件
在 etcd 启动命令里面添加上以下内容,而后重启 etcd 集群日志
--enable-v2
4, 使用 etcd v2 去建立 flannel 的网络配置code
ETCDCTL_API=2 ./etcdctl set /coreos.com/network/config '{"Network": "172.16.0.0/16", "Backend": {"Type": "host-gw"}}'
5,而后启动 flannel 服务接口
6,查看 etcd 里面的数据是否正确
ETCDCTL_API=2 ./etcdctl ls /coreos.com/ ETCDCTL_API=2 ./etcdctl ls /coreos.com/network/config ETCDCTL_API=2 ./etcdctl ls /coreos.com/network/subnets
检查获得的结果是否是给你的 subnet.env 里面配置的网络在同一网段,若是是检查路由表,查看是否自动添加路由
route -n
扩展: 卸载删除 flannel 网络插件
1,中止 flannel 网络插件
2, 删除 etcdctl 里面的内容
ETCDCTL_API=2 ./etcdctl rm /coreos.com/network/config ETCDCTL_API=2 ./etcdctl rm /coreos.com/network/subnets/172.16.27.0-24 ETCDCTL_API=2 ./etcdctl rm /coreos.com/network/subnets/172.16.56.0-24 ETCDCTL_API=2 ./etcdctl rmdir /coreos.com/network/subnets
3, 删除路由表
route del -net 172.16.88.0/24 gw 172.16.88.1
4, 删除 flannel 程序包