You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

安装Kubernetes时Flannel启动失败求助:Docker与kube-apiserver异常

解决Flannel启动超时引发的Docker与kube-apiserver启动失败问题

看了你的日志,问题根源很明确——Flannel在启动时无法从etcd获取到指定路径的网络配置,报错failed to retrieve network config: 100: Key not found (/atomic.io),这直接导致flanneld启动超时,进而拖垮了依赖Flannel网络的Docker和kube-apiserver。下面是一步步的解决方法:

1. 先确认etcd服务是否正常运行

Flannel依赖etcd存储网络配置,首先得确保etcd本身是活的:

systemctl status etcd

如果etcd没启动,先把它拉起来并设置开机自启:

systemctl start etcd
systemctl enable etcd

2. 手动向etcd写入Flannel网络配置

Flannel需要在etcd的/atomic.io/network前缀下有对应的网络配置,你现在缺失这个配置,所以得手动写入。执行这条命令(子网可以根据你的集群需求调整,10.244.0.0/16是Flannel常用的默认值):

etcdctl set /atomic.io/network/config '{ "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } }'

要是你用的是etcdctl v3版本,记得加上端点参数,命令改成:

etcdctl --endpoints=http://127.0.0.1:2379 put /atomic.io/network/config '{ "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } }'

3. 重启Flannel服务并验证状态

配置写入后,重启flanneld:

systemctl restart flanneld

然后检查状态,确认它已经正常启动:

systemctl status flanneld

4. 重启Docker和kube-apiserver

Flannel正常运行后,把依赖它的服务也重启一遍:

systemctl restart docker
systemctl restart kube-apiserver

分别检查这两个服务的状态,确保它们都能正常启动:

systemctl status docker
systemctl status kube-apiserver

额外排查提示

  • 如果写入配置后还是报错,检查flanneld启动参数里的-etcd-endpoints=http://127.0.0.1:2379是否和etcd实际监听的地址一致。
  • 可以查看etcd的实时日志,排查是否有连接或权限问题:
journalctl -u etcd -f

内容的提问来源于stack exchange,提问作者Guldo

火山引擎 最新活动