一、介紹
1、K8S是什么?
Kubernetes是Google在2014年6月開源的一個容器集群管理系統,使用GO語言開發。Kubernetes也叫K8S。
從Google內部一個叫Borg的容器集群管理系統衍生出來的,Borg已經在Google大規模生產運行十年之久。
2、用途
K8S主要用於自動化部署、擴展和管理容器應用,提供了資源調度、部署管理、服務發現、擴容縮容、監控等一整套功能。
3、主要功能介紹
(1):數據卷
Pod中容器之間共享數據,可以使用數據卷
(2):應用程序健康檢查
容器內服務可能進程堵塞無法處理請求,可以設置監控檢查策略保證應用健壯性
(3):復制應用程序實例
控制器維護着Pod副本數量,保證一個Pod或一組同類的Pod數量始終可用
(4):彈性伸縮
根據設定的指標(CPU使用率)自動縮放Pod副本數
(5):服務發現
使用環境變量或DNS服務插件保證容器中程序發現Pod入口訪問地址
(6):負載均衡
一組Pod副本分配一個私有的集群IP地址,負載均衡轉發請求到后端容器。在集群內部其他Pod可通過這個Cluster IP訪問應用
(7):滾動更新
更新服務不中斷,一個更新一個Pod,而不是同時刪除整個服務
(8):服務編排
通過文件描述部署服務,使得應用服務部署變得更高效
(9):資源監控
Node節點組件集成cAdvisor資源收集工具,可通過Heapster匯總整個集群點資源數據,然后存儲到InfluxDB時序數據卷,再由Grafana展示
(10);提供認證和授權
支持角色訪問控制(RBAC)認證授權等策略
4、基本對象概念
(1):Pod
Pod是最小部署單元,一個Pod有一個或多個容器組成,Pod中容器共享存儲和網絡,在同一台Docker主機上運行
(2):Service
Service是一個應用服務抽象,定義了Pod邏輯集合和訪問這個Pod集合的策略。
Service代理Pod集合對外表現是為一個訪問入口,分配一個集群IP地址,來自這個IP的請求負載均衡轉發后端Pod中的容器
Service通過Lab了 Selector選擇一組Pod提供服務
(3):Volume
數據卷,共享Pod中容器使用的數據
(4):Namespace
命名空間將對象羅技上分配到不同的Namespace,可以是不同的項目、用戶等區分管理,並設定控制策略,從而實現多租戶。
(5):Lable
標簽用於區分對象(比如Pod、Service),鍵/值對存在;每個對象可以有多個標簽,通過標簽關聯對象。
5、基於基本對象更高層次抽象
(1):ReplicaSet
下一代Replication Controller。確保任何給定時間指定的Pod副本數量,並提供聲明式更新等功能。
RC與RS唯一區別就是Lable selector支持不同,RS支持新的基於集合的標簽,RC僅支持基於等式的標簽
(2):Deployment
Deployment是一個更高層次的API對象,它管理ReplicaSets和Pod,並提供聲明式更新等功能。
官方建議使用Deployment管理ReplicaSets,而不是支持使用RelicaSets,這就意味着可能永遠不需要直接支持操作ReplicaSets對象。
(3):StatefulSet
StatefulSet適合持久性的應用程序,有唯一的網絡標識符(IP),持久存儲,有序的部署、擴展、刪除和滾動更新。
(4):DaemonSet
DaemonSet確保所有(或一些)節點運行同一個Pod。當節點加入Kubernetes集群中,Pod會被調度到該節點上運行,當節點從集群中移除時,DaemonSet的Pod會被刪除。刪除DaemonSet會清理它所有創建的Pod.
(5):Job
一次性任務,運行完成后Pod銷毀,不再重新啟動新容器。還可以任務定時運行。
6、系統架構及組件功能

