kubectl获取componentStatus显示额外的etcd实例

时间:2018-07-30 13:35:38

标签: kubernetes kubectl coreos etcd

我有一个正在运行的单节点kubernetes集群。一切正常,但是当我运行“ kubectl get cs”(kubectl get componentstatus)时,它显示了etcd的两个实例。我已经运行了一个etcd实例。

select table1.item, table1.date, SUM(table1.qty), SUM(table2.anotherQty) OVER (Partition By table1.item) from table1 INNER JOIN table2 on table1.date = table2.date GROUP BY table1.item, table1.date, table2.anotherQty

[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

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

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

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

/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 \

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

任何人都知道为什么在“ kubectl get cs”中显示etcd-0和etcd-1吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

尽管@Jyothish Kumar S自己找到了根本原因并解决了该问题-这是一个好习惯,对将来会遇到相同问题的人们提供一个答案。< / p>

问题来自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时请注意这一方面。