列出 etcd 成员时看到错误的客户端 URL

See wrong client URL when listing the etcd member

我有一个 Stacked master K8s 集群(etcd 也是 local/internal),有 3 个主节点和 9 个工作节点。 我的集群版本目前是 1.12.3,在执行 etcd 命令时,我尝试列出 etcd 成员,执行

ETCDCTL_API=3 etcdctl member list

,发现master2和master3的客户端Url不对。

下面是图片,

根据我的理解,对等点和客户端的 ip 应该是相同的,但据我所知,在 master2master3.

的情况下,IP 是 127.0.0.1

当我检查端点状态时,出现以下错误,

Failed to get the status of endpoint :2379 (context deadline exceeded)

当我成功获得 master1

的状态时

谁能帮我解决这个问题。

我尝试过的事情:

1) 编辑了清单文件,etcd pods 重新启动了,但是当我列出成员时仍然没有任何变化。

2) 我也成功地在 etcd 集群中删除和添加了 master3,这很有效(IP 已更正并获得 master3 的状态),但是当我对 master2 执行相同操作时出现错误

"error validating peerURLs {{ID: xyz, PeerUrls:xyz, clienturl:xyz},{&ID:xyz......}}: member count is unequal"

编辑 etcd 清单文件并更正 IP 对我有用。 以前它没有工作,因为清单文件夹中存在一个 etcd.yml.bkp 文件(可能是我在升级之前自己备份了 etcd 清单)并发现 etcd pods 引用了那个 yml 文件,从清单文件夹中删除该 yml 文件解决了这个问题。

还发现 kube-apiserver.yml 文件中提到的 IP 不正确,为了更正它,尝试了以下两种方法都有效:

  • 手动编辑文件并更正 IP
  • 或者,我们可以为 kube-api 服务器执行 kubeadm init 生成一个新的清单文件 阶段控制平面 api 服务器 --kubernetes-version 1.14.5