CentOS 7.5 使用 yum 源安裝 Kubernetes 叢集主要元件說明
1、Master元件
Master元件提供叢集的管理控制中心。
Master元件可以在叢集中任何節點上執行。但是為了簡單起見,通常在一臺VM/機器上啟動所有Master元件,並且不會在此VM/機器上執行使用者容器
kube-apiserver
kube-apiserver用於暴露Kubernetes API。任何的資源請求/呼叫操作都是通過kube-apiserver提供的介面進行。
ETCD
etcd是Kubernetes提供預設的儲存系統,儲存所有叢集資料,使用時需要為etcd資料提供備份計劃。
kube-controller-manager
kube-controller-manager執行管理控制器,它們是叢集中處理常規任務的後臺執行緒。邏輯上,每個控制器是一個單獨的程序,但為了降低複雜性,它們都被編譯成單個二進位制檔案,並在單個程序中執行。
這些控制器包括:
- 節點(Node)控制器。
- 副本(Replication)控制器:負責維護系統中每個副本中的pod。
- 端點(Endpoints)控制器:填充Endpoints物件(即連線Services&Pods)。
- Service Account和Token控制器:為新的Namespace 建立預設帳戶訪問API Token。
cloud-controller-manager
雲控制器管理器負責與底層雲提供商的平臺互動。雲控制器管理器是Kubernetes版本1.6中引入的,目前還是Alpha的功能。
雲控制器管理器僅運行雲提供商特定的(controller loops)控制器迴圈。可以通過將--cloud-provider flag設定為external啟動kube-controller-manager ,來禁用控制器迴圈。
cloud-controller-manager 具體功能:
- 節點(Node)控制器
- 路由(Route)控制器
- Service控制器
- 卷(Volume)控制器
kube-scheduler
kube-scheduler 監視新建立沒有分配到Node的Pod,為Pod選擇一個Node。
2、Node 元件
kubelet
kubelet是主要的節點代理,它會監視已分配給節點的pod,具體功能:
- 安裝Pod所需的volume。
- 下載Pod的Secrets。
- Pod中執行的 docker(或experimentally,rkt)容器。
- 定期執行容器健康檢查。
- Reports the status of the pod back to the rest of the system, by creating a mirror pod if necessary.
- Reports the status of the node back to the rest of the system.
kube-proxy
kube-proxy通過在主機上維護網路規則並執行連線轉發來實現Kubernetes服務抽象。
docker
docker用於執行容器。
flannel
Flannel 是 CoreOS 團隊針對 Kubernetes 設計的一個覆蓋網路(Overlay Network)工具,需要另外下載部署。我們知道當我們啟動 Docker 後會有一個用於和容器進行互動的 IP 地址,如果不去管理的話可能這個 IP 地址在各個機器上是一樣的,並且僅限於在本機上進行通訊,無法訪問到其他機器上的 Docker 容器。Flannel 的目的就是為叢集中的所有節點重新規劃 IP 地址的使用規則,從而使得不同節點上的容器能夠獲得同屬一個內網且不重複的 IP 地址,並讓屬於不同節點上的容器能夠直接通過內網 IP 通訊。