连接在Kubernetes拒绝了etcd

时间:2017-12-12 11:38:20

标签: kubernetes etcd

问题

Kubernetes中的etcd拒绝连接并仅接受本地接受的原因是为了安全吗?

主节点

$ sudo netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:2379          0.0.0.0:*               LISTEN      386/etcd            
tcp        0      0 127.0.0.1:2380          0.0.0.0:*               LISTEN      386/etcd            

$ hostname
master

$ ping master
PING master (192.168.99.10) 56(84) bytes of data.
64 bytes from master (192.168.99.10): icmp_seq=1 ttl=64 time=0.028 ms
64 bytes from master (192.168.99.10): icmp_seq=2 ttl=64 time=0.059 ms
^C

$ curl -iv  http://master:2379/health
curl: (7) Failed connect to master:2379; Connection refused

$ curl -s http://localhost:2379/health | python -m json.tool
{
    "health": "true"
}

工作人员节点

$ curl -iv http://192.168.99.10:2379/health
* Failed connect to 192.168.99.10:2379; Connection refused

1 个答案:

答案 0 :(得分:2)

按设计,只有kube-api Server能够访问ectd服务器。 Kube-api服务器可以改变集群的状态,因为etcd被称为kubernertes集群中的真实来源。

对etcd服务器的每个请求都经过身份验证,授权,验证以及转换为etcd架构,以确保稳定性和可靠性以及安全性。

因此,最好将请求直接发送到kube-api服务器,这将为您完成上述所有功能。

您也可以使用 etcdctl 与etcd服务器进行通信。它用于检查群集运行状况以及生成数据库快照。例如,

etcdctl cluster-health