我知道Kubernetes有5个模块:主节点中的kube-apiserver, kube-controller-manager, kube-scheduler
和Minion节点中的kubelet, kube-proxy
。他们如何与etcd沟通?他们都会在etcd中查询或设置数据吗?或者只有其中一些呢?
The docs表示只能通过kube-apiserver
访问etcd:
访问控制:仅提供对etcd的kube-apiserver读/写访问权限。 您不希望apiserver的etcd暴露给集群中的每个节点 (或者更糟糕的是,对于整个互联网),因为访问etcd是 相当于群集中的root。
但谷歌的一些博客和建筑人物认为,etcd也可以通过其他模块访问,例如this blog所说的:
etcd服务是Kubernetes的通信总线 簇。 app-service将对状态更改的状态更改为etcd 数据库响应命令和查询。 kubelets读了 etcd数据库的内容,并对它们检测到的任何更改采取行动。
哪个说的是对的?谢谢!
答案 0 :(得分:7)
您链接的文档是正确的 - 只有apiserver直接与etcd通信。其余系统组件通过apiserver与etcd 间接通信。
另请注意,您链接到的博客文章只有2年左右,当时可能是准确的,但您链接的文档是针对当前版本的Kubernetes。