一次calico问题排查
k8s集群出现一台主机calico重启,无法重新添加路由当时查看了下kubelet的日志,发现有报错证书无效,查看了集群内其它环境主机,路由都正常,按理说不应该是证书无效才对开始看下calico的日志,发现有报Liveness probe failed: calico/node is not ready: bird/confd is not live: exit status 1 /BIRD is
·
- k8s集群出现一台主机calico重启,无法重新添加路由
- 当时查看了下kubelet的日志,发现有报错证书无效,查看了集群内其它环境主机,路由都正常,按理说不应该是证书无效才对
- 开始看下calico的日志,发现有报Liveness probe failed: calico/node is not ready: bird/confd is not live: exit status 1 /BIRD is not ready: Error querying BIRD: unable to connect to BIRDv4 socket:
怀疑可能是calico无法发现网卡导致,查看了下calico配置发现网卡配置正确,重启了下网卡,发现还会报上面报错,看来不是网卡问题 - 查看apiserver的日志,发现如下报错:
发现api的clusterip有问题,报大量500的错,这个时候k get ep 发现endpoint 显示的主机ip不是当台主机master的IP端口是1180,问题就找到了,先试着重启master
然后 k get ep 发现endpoint 显示的主机ip是当台主机masterIP ,但是端口还是不对,还是1180,集群开启https,正常是6443才对,这个时候有租户报服务无法创建和访问
查看结果所有calico都挂了,而且都报证书无效,重启master,再看下发现endpoint 又显示的主机ip不是当台主机master的IP端口是1180,真的见鬼了,然后问下同事
他们两个集群用了同一组etcd(这个是真的坑),然后到etcd查看数据结果果然如此,如下图:
查看了三台的etcd k/v 值,发现有一台etcd是保存另一个集群的master IP 然后将其删除:
[root@xxxx ~]# ETCDCTL_API=3 etcdctl --endpoints=http://xxxxx:1159 del “/registry/services/endpoints/default/kubernetes”
1
这个时候查看kubernetes的ep发现正常了:
[root@xxxxx kubernetes]# k get ep
NAME ENDPOINTS AGE
kubernetes xxxxxx:6443 54m
但是后台加证书去get po 操作获取不到结果,不用证书就可以,这就奇怪了,后来查看apiserver的配置文件,就发现配置端口采用参数不对
注:• HTTP服务
• 默认端口8080,修改标识–insecure-port
• 默认端口6443,修改标识—secure-port
将配置文件改动如下:
重启master,发现加证书可以正常访问,calico也能正常恢复,到此问题解决
更多推荐
已为社区贡献7条内容
所有评论(0)