kubectl get componentstatus 显示额外的 etcd 实例

kubectl get componentstatus showing extra etcd instances

我有一个单节点 kubernetes 集群 运行ning。一切正常,但是当我 运行 "kubectl get cs" (kubectl get componentstatus) 它显示了两个 etcd 实例。我有一个 运行 单个 etcd 实例。

[root@master01 vagrant]# kubectl get cs NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy {"health": "true"} etcd-1 Healthy {"health": "true"}

[root@master01 vagrant]# etcdctl member list 19ef3eced66f4ae3: name=master01 peerURLs=http://10.0.0.10:2380 clientURLs=http://0.0.0.0:2379 isLeader=true

[root@master01 vagrant]# etcdctl cluster-health member 19ef3eced66f4ae3 is healthy: got healthy result from http://0.0.0.0:2379 cluster is healthy

Etcd 运行宁作为 docker 容器。在 /etc/systemd/system/etcd.service 文件中提到了单个 etcd 集群。(http://10.0.0.10:2380)

/usr/local/bin/etcd \ --name master01 \ --data-dir /etcd-data \ --listen-client-urls http://0.0.0.0:2379 \ --advertise-client-urls http://0.0.0.0:2379 \ --listen-peer-urls http://0.0.0.0:2380 \ --initial-advertise-peer-urls http://10.0.0.10:2380 \ --initial-cluster master01=http://10.0.0.10:2380 \ --initial-cluster-token my-token \ --initial-cluster-state new \

同样在 api 服务器配置文件中 /etc/kubernetes/manifests/api-srv.yaml --etcd-servers 标志被使用。

- --etcd-servers=http://10.0.0.10:2379,

[root@master01 manifests]# netstat -ntulp |grep etcd tcp6 0 0 :::2379 :::* LISTEN 31109/etcd tcp6 0 0 :::2380 :::* LISTEN 31109/etcd

有人知道为什么它在 "kubectl get cs" 中显示 etcd-0 和 etcd-1 吗?。感谢任何帮助。

尽管@Jyothish Kumar S 已经自己找到了根本原因并解决了问题 - 最好为那些将来会遇到同样问题的人提供一个答案.

问题来自 API 服务器配置文件 /etc/kubernetes/manifests/api-srv.yaml 中的错误配置,其中 --etcd-servers 的设置方式不当。 kube-apiserver 的所有标志及其描述都可以在 here 中找到。 因此,问题出在 --etcd-servers=http://10.0.0.10:2379, 行的最后一个逗号中。这个逗号被解释为新的 ETCD 服务器记录 http://:::2379,这就是为什么在 "kubectl get cs" 输出中我们能够看到两个 etcd 记录而不是一个。 配置etcd时要注意这方面