Kubernetes模块如何与etcd通信?

Kubernetes模块如何与etcd通信?,kubernetes,etcd,Kubernetes,Etcd,我知道Kubernetes在主节点中有5个模块:kube apiserver、kube控制器管理器、kube调度程序,在Minion节点中有kubelet、kube代理。他们如何与etcd沟通?他们都会在etcd中查询或设置数据吗?还是只有他们中的一些人会 表示etcd仅由kube apiserver访问: 访问控制:仅授予kube apiserver对etcd的读/写访问权。 您不希望将apiserver的etcd公开给集群中的每个节点 (或者更糟的是,在整个互联网上),因为访问etcd是非常

我知道Kubernetes在主节点中有5个模块:
kube apiserver、kube控制器管理器、kube调度程序
,在Minion节点中有
kubelet、kube代理
。他们如何与etcd沟通?他们都会在etcd中查询或设置数据吗?还是只有他们中的一些人会

表示etcd仅由kube apiserver访问:

访问控制:仅授予kube apiserver对etcd的读/写访问权。 您不希望将apiserver的etcd公开给集群中的每个节点 (或者更糟的是,在整个互联网上),因为访问etcd是非常困难的 相当于集群中的root

但谷歌的一些博客和架构人士认为,etcd也可以被其他模块访问,比如:

etcd服务是Kubernetes的通信总线 簇应用程序服务将群集状态更改发布到etcd 响应命令和查询的数据库。库贝莱一家读报纸 etcd数据库的内容,并对其检测到的任何更改采取行动


那么,哪个说法是正确的呢?谢谢

您链接到的文档是正确的——只有apiserver直接与etcd通信。其余系统组件通过apiserver间接与etcd通信


还要注意的是,你链接到的博客文章只有大约2年的历史,在当时可能是准确的,但你链接到的文档是为Kubernetes的最新版本准备的

我不是kubernetes专家,但据我所知,你有各种各样的组件与api服务器对话,api服务器与etcd对话,这样每个节点都不能访问etcd,{etcd}{api服务器}<{nodes},在你的节点中,你唯一需要的是kubelet和kube Proxy请阅读博客并观看这段视频。这会让你对etcd有一个深刻的了解。