在 Kubernetes 中连接拒绝 etcd
Connection refused to etcd in Kubernetes
问题
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
根据设计,只有 kube-api 服务器能够访问 ectd 服务器。 Kube-api 服务器可以更改集群的状态,因为 etcd 被称为 kubernertes 集群中的真实来源。
为了稳定性和可靠性以及安全目的,对 etcd 服务器的每个请求都经过身份验证、授权、验证并转换为 etcd 模式。
因此,最好将请求直接发送到 kube-api 服务器,它将为您完成上述所有功能。
您也可以使用 etcdctl 与 etcd 服务器通信。它用于检查集群健康状况以及生成数据库快照。例如,
etcdctl cluster-health
问题
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
根据设计,只有 kube-api 服务器能够访问 ectd 服务器。 Kube-api 服务器可以更改集群的状态,因为 etcd 被称为 kubernertes 集群中的真实来源。
为了稳定性和可靠性以及安全目的,对 etcd 服务器的每个请求都经过身份验证、授权、验证并转换为 etcd 模式。
因此,最好将请求直接发送到 kube-api 服务器,它将为您完成上述所有功能。
您也可以使用 etcdctl 与 etcd 服务器通信。它用于检查集群健康状况以及生成数据库快照。例如,
etcdctl cluster-health