14:K8S容器集群管理


一、介紹

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、系統架構及組件功能

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM