NC Cloud云原生模式 calico启动异常“Unable to set NetworkUnavailable to False error=nodes "iuap_25_77" not found”排查解决

/uploads/question/20210514/a4e0da7d8869bdfcd00e4f2ecf4d168a.png

已邀请:

背景:新增加的一台主机,接入资源池后启动异常,排查后发现本机的 calico节点启动异常

1.根据报错发现如下内容


Unable to set NetworkUnavailable to False error=nodes "iuap_25_77" not found
2021-05-14 03:22:38.865 [ERROR][8] startup.go 164: Unable to set node resource configuration error=error with field Metadata.Name = 'iuap_25_77' (name must consist of lower case alphanumeric characters, '-' or '.' (regex: [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*))


分析:该主机在接入时在服务器修改了主机名,但是calico的
Metadata.Name

本身不支持下划线,只能在上面的描述中的规范


2 解决:修改机器名/重建calico配置

首先通过 hostnamectl set-hostname xxxx修改一个支持的机器名。同时,由于现有calico已经在etcd注册了(原机器名+IP)故需要清除etcd中的节点信息

修改机器名后需要reboot重启节点服务器

3 查看etcd中的calico信息

etcdctl get / --prefix --keys-only | grep iuap_25_77

执行没有输出结果,通过

etcdctl --help 根据提示要根据etcd版本设置接口环境变量

/uploads/answer/20210514/e1487856e715e7ccfd32397f94cff546.png

查看本地ectd版本

etcdctl version

设置环境变量

export ETCDCTL_API=3

再执行命令查看涉及当前主机在etcd中的缓存信息

etcdctl get / --prefix --keys-only | grep iuap_25_77

/uploads/answer/20210514/ab050bd659cc1b96844406bf89abddc5.png

4 删除本机在etcd中的缓存信息,避免修改主机名后的信息因IP冲突等无法正常写入

etcdctl get / --prefix --keys-only | grep iuap_25_77 | xargs -I {} etcdctl del {}

/uploads/answer/20210514/1d51d53b27f9f63bf9c4c388f48db193.png

再次确认本机在etcd中的缓存信息

/uploads/answer/20210514/bc1c005256f80cb8d5a34d16e2fbf51e.png

无结果,说明缓存信息已清除

5 此时可以确认calico的启动状态,或者手工删除当前的pod实现重启

kubectl describe pod calico节点名 -n developer-center

6 确认calico启动状态

kubectl logs pod/calico-node-92zvm -n kube-system

/uploads/answer/20210514/5d1e87e0b4f3626769ac5d5519d8508a.png

7 calico启动成功后,该节点上其他依赖服务,如monitor也可以正常启动了

kubectl get pod -A -o wide|grep 10.10.25.77

/uploads/answer/20210514/b6d978ff7d412d98f44d90cd8db56d5d.png



总结:本次calico启动异常,导致监控服务异常,同时由此引发的分配到这个节点上的服务获取不到ip而无法初始化启动的问题。是因为安装主机后,人工调整了机器名,而机器名包含的下划线“_”是系统不支持的导致。

要回复问题请先登录注册