2016-08-23 25 views
3

我知道Kubernetes有5個模塊:主節點中的kube-apiserver, kube-controller-manager, kube-scheduler和Minion節點中的kubelet, kube-proxy。他們如何與etcd溝通?他們都會在etcd中查詢或設置數據嗎?或者只有其中一些呢?Kubernetes模塊如何與etcd進行通信?

The docs說,ETCD僅由kube-apiserver訪問:

訪問控制:只給KUBE-API服務器的讀/寫訪問ETCD。 您不希望apiserver的etcd暴露給您的集羣中的每個節點 (或更糟糕的是,對於大型Internet),因爲對etcd的訪問是 等同於您的集羣中的根。

但是,從谷歌的一些博客和架構的數字相信ETCD也被其它模塊訪問,就像this blog說什麼:

的ETCD服務是通信總線爲Kubernetes 集羣。響應命令和查詢,應用程序服務帖子羣集狀態更改爲etcd 數據庫。 kubelets讀取etcd數據庫的 內容,並對其檢測到的任何更改進行操作。

那麼說的是正確的?謝謝!

+0

我不是kubernetes的專家,但從我所知道的,你有各種各樣的與api服務器交談並且與api服務器交談的角色,這樣每個節點都無法訪問etcd,{etcd} <-> {api-server} <{nodes},在你的節點中,你唯一需要的是kubelet和kube-proxy – c4f4t0r

回答

7

您鏈接的文檔是正確的 - 只有apiserver直接與etcd進行通信。其餘的系統組件通過apiserver與etcd 間接進行通信。

另請注意,鏈接到的博客文章僅有2年曆史,並且在當時可能已準確無誤,但您鏈接的文檔是針對當前版本的Kubernetes。