cookeem / kubeadm-ha

通过kubeadm安装kubernetes高可用集群,使用docker/containerd容器运行时,适用v1.24.x以上版本
MIT License
678 stars 275 forks source link

master-2的加入etcd集群后服务不可用 #31

Closed Leo-Bright closed 6 years ago

Leo-Bright commented 6 years ago

RT。 使用的k8s版本是1.11.2,按照1.11.1的操作逐步进行,每一次到master2加入etcd集群后整个服务就不可用了。表现就是kubectl没有响应。在master1种docker ps 可以看到etcd容器失败了在不断重启。我把master2中 /etc/kubernetes/manifests/ 目录下面的etcd.yaml移除后,master1的etcd重启后正常,但是这时kubectl命令提示请求:6443错误,是不是etcd数据全丢了,这种情况要怎么办呢?

cookeem commented 6 years ago

提供一下etcd的错误日志?

Leo-Bright commented 6 years ago

这个是master1节点上etcd容器的日志 _20180906153736

Leo-Bright commented 6 years ago

这是按照操作顺序将master2节点etcd增加进集群的操作 _20180906153713

Leo-Bright commented 6 years ago

这是master2失败etcd的日志 _20180906160839

Leo-Bright commented 6 years ago

我很疑惑,通过日志来看,在master1和master2上的etcd互相请求失败。url配置没有问题

cookeem commented 6 years ago

连接不上,确认一下master1的etcd状态,然后看看防火墙是否放通了网络端口?

Leo-Bright commented 6 years ago

三个master的防火墙都是关闭状态,上面第一个图就是master1的etcd日志,处于无限重启状态,日志说是链接master2的etcd不通

cookeem commented 6 years ago

只启动master1正常不?

Leo-Bright commented 6 years ago

只启动master1正常,所有pod运行良好,运行calico网络后节点状态显示已经ready

cookeem commented 6 years ago

感觉可能性只有两总,网络防火墙原因不能访问,或者证书不匹配。可能你要试一试用docker直接启动etcd来测测能否加入集群了,便于定位问题。

Leo-Bright commented 6 years ago

是证书不匹配问题,我仔细看了create-config.sh脚本,里面的etcd配置没有其他节点的ip。现在这个问题解决了。三个master和3个worker都能正常启动。在master上面kubectl get nodes 也都显示ready。

cookeem commented 6 years ago

哦,是你漏了设置create-config.sh里边的IPX和HOSTX对吧?

Leo-Bright commented 6 years ago

嗯是,在etcd配置里面把3个master都加上就好了。

iT2afL0rd commented 5 years ago

@Leo-Bright 请问你说的“在etcd配置里面把3个master” 指的是什么?我目前也遇到类似的问题,但是看了一下我create-config.sh 里面的K8SHA_IP 和K8SHA_HOST 都配了。

iT2afL0rd commented 5 years ago

已解决,已提 PR。