一.kubernetes集羣包含有節點代理kubelet和master組件(APIs, Scheduler, ect.)。一切都基於分佈式的存儲系統。html
二.kubernetes集羣架構圖:linux
解析:git
1.在這張系統架構圖中,把服務分爲運行在工做節點上的服務和組成集羣級別控制板的服務。github
2.kubernetes節點有運行應用容器必備的服務,而這些都是受master控制的。docker
3.docker是每一個節點運行的基礎,docker負責全部具體的鏡像的下載和容器的運行。api
4.kubernetes主要由如下幾個核心組件組成:服務器
a.etcd保存了整個集羣的狀態;網絡
b.apiserver提供了資源操做的惟一入口,並提供認證、受權、訪問控制、API註冊和發現等機制;架構
c.controller manager負責維護集羣的狀態,如:故障檢測、自動擴展、滾動更新等;負載均衡
d.scheduler負責資源調度,按照預約的調度策略將Pod調度到相應的機器上;
e.kubelet負責維護容器的生命週期,同時也負責Volume(CVI)和網絡(CNI)的管理;
f.Container runtime負責鏡像管理及Pod和容器的真正運行;
g.kube-proxy負責爲Service提供cluster內部的服務發現和負載均衡;
5.kubernetes的相關推薦的附加組件:
a.kube-dns負責爲整個集羣提供DNS服務;
b.Ingress-controller爲服務提供外網入口;
c.Heapter提供資源監控;
d.Dashboard提供GUI;
e.Federation提供跨可用區的集羣;
f.Fluentd-elasticsearch提供集羣日誌採集、存儲與查詢
3、分層架構
kubernetes的設計理念和功能其實就是一個相似linux的分層架構,以下圖:
1.核心層:kubernetes最核心的功能,對外提供API構建高層應用,對內提供插件式應用執行環境.
2.應用層:部署(無狀態應用、有狀態應用、批處理任務、集羣應用等)和路由(服務發現、DNS解析等).
3.管理層:系統度量(如基礎設施、容器和網絡的度量),自動化(如自動擴展、動態provision等),以及策略管理(RBAC、Quota、PSP、Network policy etc.).
4.接口層:kubelet命令行工具、客戶端SDK、集羣.
5.生態系統:在接口層之上的龐大容器集羣管理調度生態系統,能夠劃分爲兩個範疇:
a.kubenetes外部:日誌、監控、配置管理、CI、CD、Workflow、FaaS、OTS應用、ChatOps等
b.kubenetes內部:CRI、CNI、CVI、鏡像倉庫、Cloud Provider、集羣自身的配置和管理等
4、kubelet
kubelet負責管理Pods和它們上面的容器、images鏡像、volumes、etc.
5、kube-proxy
每一個節點也運行一個簡單的網絡代理和負載均衡。服務端點目前 是經過DNS或者環境變量,這些變量是用由服務代理所管理的端口來解析的。
6、kubenetes控制面板
kubenetes控制面板能夠分爲多個部分。目前它們都運行在一個master節點,爲了達到高可用性,這須要改變,由不一樣部分一塊兒協做提供一個統一的關於集羣的視圖。
7、etcd
全部master的持續狀態都存在etcd的一個實例中。這能夠很好地存儲配置數據。由於有watch的支持,各部件協調中的改變均可以很快被察覺。
8、kubernetes API Server
API服務提供Kubernetes API的服務。這個服務試圖經過把全部或者大部分的業務邏輯放到不止兩隻的部件中從而使其具備CRUD特性。它主要處理REST操做,在etcd中驗證更新這些對象並最終存儲。
9、scheduler
調度器把未調度的pod經過binding api綁定到節點上。調度器是可插拔可,而且支持多集羣的調度,將來可能支持用戶自定義的調度器。
10、kubenetes控制管理服務器
全部其它的集羣級別的功能目前都是由控制管理器負責。如,端點對象是被端點控制器來更新。這些最終可分隔成不一樣的部件來讓它們獨自的可插拔。
replication controller是一種創建於簡單的podAPI之上的一種機制。它最終將變成一種通用的插件機制。
參考:
https://github.com/kubernetes/kubernetes/blob/release-1.2/docs/design/architecture.md
https://feisky.gitbooks.io/kubernetes/architecture/architecture.html