问题1.:在构建etcd集群的时候,node节点上的etcd就是起不来

[root@localhost ~]# journalctl -xe

可以看到提示信息:member c2c5804bd87e2884 has already been bootstrapped,意思就是:成员c2c5804bd87e2884已经启动,就来我就查询了下资料,说是其中一个成员是通过discovery service引导的。必须删除以前的数据目录来清理成员信息。否则成员将忽略新配置,使用旧配置。这就是为什么你看到了不匹配。

看到了这里,问题所在也就很明确了,启动失败的原因在于data-dir (/var/lib/etcd/default.etcd)中记录的信息与 etcd启动的选项所标识的信息不太匹配造成的。

解决办法

第一种方式:

我们可以通过修改启动参数解决这类错误。既然 data-dir 中已经记录信息,我们就没必要在启动项中加入多于配置。具体修改–initial-cluster-state参数:

vim /usr/lib/systemd/system/etcd.service
修改:我们将 --initial-cluster-state=new 修改成 --initial-cluster-state=existing,再次重新启动就ok了

第二种方式:

删除所有etcd节点的 data-dir 文件(不删也行),重启各个节点的etcd服务,这个时候,每个节点的data-dir的数据都会被更新,就不会有以上故障了。

第三种方式:

是复制其他节点的data-dir中的内容,以此为基础上以 --force-new-cluster 的形式强行拉起一个,然后以添加新成员的方式恢复这个集群

问题2

还有一个就是加入etcd集群的时候,无法加入,系统提示“Nov 26 05:35:38 localhost.localdomain etcd[7525]: publish error: etcdserver: request timed out, possibly d…lost”

大概意思就是“发布错误:etcdserver:请求超时,可能d…丢失”

解决思路

在搭建的时候首先就要先关闭以下俩点:
1.首先要关闭核心防火和关闭核心防护。
2.要关闭防火墙

之后查询了一下果然是防火墙没有关闭

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐