前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flannel key not found

Flannel key not found

作者头像
李鹤
发布2023-03-06 11:23:19
4040
发布2023-03-06 11:23:19
举报
文章被收录于专栏:k-cloud-labs

问题描述

etcd 3.3.1 flannel 0.11.0

flannel启动时报错,启动参数如下

1

./flannel -etcd-keyfile=/etc/kubernetes/ssl/etcd-client-key.pem -etcd-cafile=/etc/kubernetes/ssl/ca.pem -etcd-endpoints=https://ip:port -etcd-certfile=/etc/kubernetes/ssl/etcd-client.pem -etcd-prefix=/coreos.com/network

错误信息如下:

1 2 3 4 5

E0908 20:27:17.671602 2331 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [22] timed out E0908 20:27:18.680096 2331 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [22] timed out E0908 20:27:19.688339 2331 main.go:382] Couldn't fetch network config: 100: Key not found (/coreos.com) [22]

其中coreos.com是启动flannel时-etcd-prefix参数的默认值(/coreos.com/network)

解决办法

报错提示很明显,没有对应的key,于是执行etcdctl的命令插入对应的key并设置其值

1 2 3

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd-client.pem --key=/etc/kubernetes/ssl/etcd-client-key.pem --endpoints=https://ip:port put /coreos.com/network/config '{"Network":"192.168.0.0/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}' OK

重新启动flannel,依旧报错,执行etcdctl get获取key的信息也可以正常拿到之前的设置,一脸懵逼。网上搜了下说是etcd api版本的问题,不是很明白,然后去看代码,发现flannel在使用etcd时只支持etcd v2版本的api,因为上线添加key-value时使用的是v3版本的api,所以导致虽然添加成功了,但是用v2获取的时候还是失败,解决办法就是用v2版本的api添加一遍即可

1

etcdctl --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd-client.pem --key=/etc/kubernetes/ssl/etcd-client-key.pem --endpoints=https://ip:port set /coreos.com/network/config '{"Network":"192.168.0.0/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}'

区别就是去掉设置v3的环境变量,put改为set,需要注意一下,在master最新代码中,不设置ETCDCTL_API就默认用v3版本的api,后续使用时还需要具体版本具体对待。

收获

etcd不同版本的api对应的url path的prefix不同,v2前缀为/v2/keys,v3前缀为/v3[alpha|beta]/kv,用法也不同,具体可以参考官网API说明。平时直接使用client包时这些信息都会忽略掉,封装的太好了会使使用者变傻,还是有必要看看源码是怎么实现的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 解决办法
  • 收获
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档