什麼是kubernetes後端
Kubernetes是Google開源的容器集羣管理系統,實現基於Docker構建容器,利用Kubernetes能很方面管理多臺Docker主機中的容器。api
主要功能網絡
將多臺Docker主機抽象爲一個資源,以集羣方式管理容器,包括任務調度、資源管理、彈性伸縮、滾動升級等功能。負載均衡
使用編排系統(YAML File)快速構建容器集羣,提供負載均衡,解決容器直接關聯及通訊問題。工具
自動管理和修復容器,簡單說,好比建立一個集羣,裏面有十個容器,若是某個容器異常關閉,那麼,會嘗試重啓或從新分配容器,始終保證會有十個容器在運行,反而殺死多餘的。spa
kubernetes角色組成命令行
POD:代理
Pod是kubernetes的最小操做單元,一個Pod能夠由一個或多個容器組成;server
同一個Pod只能運行在同一個主機上,共享相同的volumes、network、namespace。對象
ReplicationController(RC):
RC用來管理Pod,一個RC能夠由一個或多個Pod組成,在RC被建立後,系統會根據定義好的副本數來建立Pod數量。
在運行過程當中,若是Pod數量小於定義的,就會重啓中止的或從新分配Pod,反之則殺死多餘的。固然,也能夠動態伸縮運行的Pods規模或熟悉。
Service:
Service定義了一個Pod邏輯集合的抽象資源,Pod集合中的容器提供相同的功能。
集合根據定義的Label和selector完成,當建立一個Service後,會分配一個Cluster IP,這個IP與定義的端口提供這個集合一個統一的訪問接口,而且實現負載均衡。
Label:
Label是用於區分Pod、Service、RC的key/value鍵值對;
Pod、Service、RC能夠有多個label,可是每一個label的key只能對應一個;
主要是將Service的請求經過lable轉發給後端提供服務的Pod集合;
kubernetes組件
kubectl: 客戶端命令行工具,將接受的命令格式化後發送給kube-apiserver,做爲整個系統的操做入口。
kube-apiserver: 做爲整個系統的控制入口,以REST API服務提供接口。
kube-controller-manager: 用來執行整個系統中的後臺任務,包括節點狀態情況、Pod個數、Pods和Service的關聯等。
kube-scheduler: 負責節點資源管理,接受來自kube-apiserver建立Pods任務,並分配到某個節點。
etcd: 負責節點間的服務發現和配置共享。
kube-proxy: 運行在每一個計算節點上,負責Pod網絡代理。定時從etcd獲取到service信息來作相應的策略。
kubelet: 運行在每一個計算節點上,做爲agent,接受分配該節點的Pods任務及管理容器,週期性獲取容器狀態,反饋給kube-apiserver。
DNS: 一個可選的DNS服務,用於爲每一個Service對象建立DNS記錄,這樣全部的Pod就能夠經過DNS訪問服務了。