我有一个正在运行的单节点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吗?任何帮助表示赞赏。
答案 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时请注意这一方面。