Kubernets主要功能介紹、基本物件以及系統架構和元件功能
阿新 • • 發佈:2018-11-24
Kubernets主要功能
- 資料卷:
Pod中容器之間共享資料,可以使用資料卷; - 應用程式件健康檢查:
容器內服務可能程序堵塞無法處理請求,可以設定監控檢查策略保證應用健壯性; - 複製應用程式例項:
控制器維護者Pod副本數量,保證一個Pod或者一組同類的Pod數量始終可用; - 彈性伸縮:
根據設定的指標(CPU利用率)自然縮放Pod副本數; - 服務發現:
根據環境變數或者DNS服務外掛保證容器中程式發現Pod入口訪問地址; - 負載均衡:
一組Pod副本分配一個私有的叢集IP地址,負載均衡轉發請求到後端容器,在叢集內部其他Pod可通過這個ClusterIP訪問應用; - 滾動更新:
更新服務不可中斷,一次更新一個Pod,而白銀市同事刪除整個服務; - 服務編排:
通過檔案描述部署服務,使得應用程式部署變得更高效; - 資源監控:
Node節點元件整合CAdvisor資源收集工具,可通過Heapster彙總掙個叢集節點資源資料,然後儲存到InfluxDB時序資料庫,在由Grafana展示; - 提供認證和授權:
支援角色訪問控制(RBC)認證授權策略;
基本物件
- Pod:
Pod是最小部署單元,一個Pod由一個或多個容器組成,Pod中容器共享儲存和網路,在同一臺Docker主機執行; - Service:
Service是一個服務抽象,定義了Pod邏輯集合和訪問這個Pod集合的策略;
Service代理Pod集合對外表現為一個訪問入口,分配一個叢集IP地址,來自這個IP的請求將負載均衡抓發後端Pod中的容器;
Service通過Lable Selector選擇一組Pod提供服務; - Volume:
資料卷,共享Pod中容器使用的資料; - NameSpace:
名稱空間將物件邏輯上分配到不通NameSpace,可以是不同的專案、使用者等區分管理,並設定控制策略,從而實現多組戶; - Lable:
標籤用於區分物件(比如:Lable、Service),鍵值對形式存在,每個物件可以有多個標籤,通過標籤關聯物件;
基於基本物件更高層次抽象
- ReplicaSet:
下一代Replication Controller。確保任何給定時間制定的Pod副本數量,並提供宣告式更新等功能;RC與RS衛衣的區別就是lable selector支援不同,RS支援新的基於集合的標籤,RC僅支援基於等式的標籤; - Deployment:
Deployment是一個更高層次的API物件,它管理ReplicaSet和Pod,並提供宣告式更新等功能;官方建議使用Deployment掛曆ReplicaSets,而不是直接使用ReplicaSets,這就意味著可能永遠不需要直接操作ReplicaSet物件; - StatefulSet:
適合永續性應用程式,有唯一的網路表示(IP),持久儲存,有序的部署、擴充套件、刪除和滾動更新; - DaemonSet:
確保所有(或一些)節點運行同一個Pod。當節點加入Kubernets叢集中,Pod會被排程到給節點上執行,當節點從叢集中移除時,DaemonSet的Pod會被刪除。刪除DaemonSet會清理他所有建立的Pod。 - Job:
一次性任務,執行完成後Pod銷燬。不再重新啟動新容器。還可以定時執行任務。
系統架構及元件功能
Master元件
- kube-apiserver:
Kubernets API是叢集的唯一入口,各元件的協調者,以HTTP API提供介面服務,所有物件資源的增刪改查和監聽操作都交給APIServer處理後再交給Etcd儲存。 - kube-controller-manager:
處理叢集中常規後臺任務,一個資源對應一個控制器,而ControllerManager就是負責管理這些控制器的。 - kube-scheduler:
根據排程演算法為新建立的Pod選擇一個Node節點。
Node節點
- kubelet:
kubelet是Master在Node節點上的Agent,管理本機執行容器的生理週期,比如建立容器、Pod掛載資料卷、下載secret、獲取容器和節點狀態等工作。kubelet將每個pod轉換成一組容器; - kube-proxy:
在Node節點上實現Pod網路代理,維護網路規則和四層負載均衡工作。 - docker:
執行容器;
第三方服務
- etcd:
分散式鍵值儲存系統,用於保持叢集狀態,比如Pod、Service等物件資訊;