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
答案 0 :(得分:2)
按设计,只有kube-api Server能够访问ectd服务器。 Kube-api服务器可以改变集群的状态,因为etcd被称为kubernertes集群中的真实来源。
对etcd服务器的每个请求都经过身份验证,授权,验证以及转换为etcd架构,以确保稳定性和可靠性以及安全性。
因此,最好将请求直接发送到kube-api服务器,这将为您完成上述所有功能。
您也可以使用 etcdctl 与etcd服务器进行通信。它用于检查群集运行状况以及生成数据库快照。例如,
etcdctl cluster-health