天天看點

關于Kubernetes的介紹與核心對象概念

Kubernetes介紹

Kubernetes是Google在2014年開源的一個容器叢集管理系統,使用Go語言開發,Kuberneter也叫K8S

K8S是Google内部一個叫Borg的容器叢集管理系統衍生出來的,Borg已經在Google大規模生産運作十年之久。

K8S主要用于自動化部署、擴充和管理容器應用。提供了資源排程、部署管理、服務發現、擴容縮容、監控等一整套功能。

Kuberneter目标是讓部署容器化應用簡單高效

Kubernetes主要功能:

關于Kubernetes的介紹與核心對象概念

1. 資料卷

Pod中容器之間共享資料,可以使用資料卷。

2. 應用程式健康檢查

容器内服務可能程序堵塞無法處理請求,可以設定監控檢查政策保證應用健壯性。

3. 複制應用程式執行個體

控制器維護着Pod副本數量,保證一個Pod或一組同類的Pod數量始終可用。

4. 彈性伸縮

根據設定的名額(CPU使用率)自動縮放Pod副本數

5. 服務發現

使用環境變量或DNS服務插件保證容器中程式發現Pod入口通路位址。

6. 負載均衡

一組Pod副本配置設定一個私有的叢集IP位址,負載均衡轉發請求到後繼容器。在叢集内部其他Pod可通過這個ClusterIP通路應用。

7. 滾動更新

更新服務不中斷,一次更新一個Pod,而不是同時删除整個服務。

8. 服務編排

通過檔案描述部署服務,使的應用程式部署變得更高效。

9. 資源監控

Node節點元件內建cAdvisor資源收集工具,可通過Heapster彙總整個叢集節點資源資料,然後存儲到InfluxDB時序資料庫,再由Grafana展示。

10. 提供認證和授權

支援角色通路控制(RBAC)認證授權等政策。

核心對象概念

基本對象

1. Pod

Pod是最小部署單元,一個Pod有一個或多個容器組成,Pod中容器共享存儲和網絡,在同一台Docker主機上運作。

2. Service

Service一個應用服務抽象,定義了Pod邏輯集合和通路這個Pod集合的政策。

Service代理Pod集合對外表現是為一個通路入口,配置設定一個叢集IP位址,來自這個IP的請求将負載均衡轉發後端Pod中的容器。

Service通過Lable Selector選擇一組Pod提供服務。

3. Volume

資料卷,共享Pod中容器使用的資料。

4. Namespace

命名空間将對象邏輯上配置設定到不同Namespace,可以是不同的項目、使用者等區分管理,并設定控制政策,進而實作多租戶。

命名空間也稱為虛拟叢集。

5. Lable

标簽用于區分對象(比如Pod、Service),鍵/值對存在;每個對象可以有多個标簽,通過标簽關聯對象。

### 基于基本對象更高層次抽象:

1. ReplicaSet

下一代Replication Controller。確定任何給定時間指定的Pod副本數量,并提供聲明式更新等功能。

RC與RS唯一差別就是lable selector支援不同,RS支援新的基于集合的标簽。RS支援新的基于集合的标簽,RC僅支援基于等式的标簽。

2. Deployment

Deployment是一個更高層次的API對象,它管理ReplicaSets和Pod,并提供聲明式更新等功能。

官方建議使用Deployment管理ReplicaSets,而不是直接使用ReplicaSets,這就意味着可能永遠不需要直接操作ReplicaSet對象。

3. StatefulSet

StatefulSet适合持久性的應用程式,有唯一的網絡辨別符(IP),持久儲存,有序的部署、擴充、删除和滾動更新。

4. DaemonSet

DaemonSet確定所有(或一些)節點運作同一個Pod、當節點加入Kubernetes叢集中,Pod會被排程到節點上運作,當節點從叢集中移除時,DaemonSet的Pod會被删除,删除DaemonSet會清理它所有建立的Pod。

5. Job

一次性任務,運作完成後Pod銷毀,不再重新啟動新容器。還可以任務定時運作。