我知道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數據庫的 內容,並對其檢測到的任何更改進行操作。
那麼說的是正確的?謝謝!
我不是kubernetes的專家,但從我所知道的,你有各種各樣的與api服務器交談並且與api服務器交談的角色,這樣每個節點都無法訪問etcd,{etcd} <-> {api-server} <{nodes},在你的節點中,你唯一需要的是kubelet和kube-proxy – c4f4t0r