Kubernetes 編排系統
1.1.1 什麽是Kubernetes
Kubernetes (通常稱為K8s,K8s是將8個字母“ubernete”替換為“8”的縮寫) 是用於自動部署、擴展和管理容器化(containerized)應用程序的開源系統。Google設計並捐贈給Cloud Native Computing Foundation(今屬Linux基金會)來使用的。
它旨在提供“跨主機集群的自動部署、擴展以及運行應用程序容器的平臺”。它支持一系列容器工具, 包括Docker等。CNCF於2017年宣布首批Kubernetes認證服務提供商(KCSPs),包含IBM、MIRANTIS、華為、inwinSTACK迎棧科技等服務商。
1.1.2 Kubernetes發展史
Kubernetes (希臘語"舵手" 或 "飛行員") 由Joe Beda,Brendan Burns和Craig McLuckie創立,並由其他谷歌工程師,包括Brian Grant和Tim Hockin進行加盟創作,並由谷歌在2014年首次對外宣布 。它的開發和設計都深受谷歌的Borg系統的影響,它的許多頂級貢獻者之前也是Borg系統的開發者。在谷歌內部,Kubernetes的原始代號曾經是Seven,即星際迷航中友好的Borg(博格人)角色。Kubernetes標識中舵輪有七個輪輻就是對該項目代號的致意。
Kubernetes v1.0於2015年7月21日發布。隨著v1.0版本發布,谷歌與Linux 基金會合作組建了Cloud Native Computing Foundation (CNCF)並把Kubernetes作為種子技術來提供。
Rancher Labs在其Rancher容器管理平臺中包含了Kubernetes的發布版。Kubernetes也在很多其他公司的產品中被使用,比如Red Hat在OpenShift產品中,CoreOS的Tectonic產品中, 以及IBM的IBM雲私有產品中。
1.1.3 Kubernetes 特點
1、可移植: 支持公有雲,私有雲,混合雲,多重雲(multi-cloud)
2、可擴展: 模塊化, 插件化, 可掛載, 可組合
3、自動化: 自動部署,自動重啟,自動復制,自動伸縮/擴展
4、快速部署應用,快速擴展應用
5、無縫對接新的應用功能
6、節省資源,優化硬件資源的使用
1.1.4 Kubernetes規劃組件
參考文檔:http://docs.kubernetes.org.cn/249.html
Kubernetes定義了一組構建塊,它們可以共同提供部署、維護和擴展應用程序的機制。組成Kubernetes的組件設計為松耦合和可擴展的,這樣可以滿足多種不同的工作負載。可擴展性在很大程度上由Kubernetes API提供——它被作為擴展的內部組件以及Kubernetes上運行的容器等使用。
Pod
Kubernetes的基本調度單元稱為“pod”。它可以把更高級別的抽象內容增加到容器化組件。一個pod一般包含一個或多個容器,這樣可以保證它們一直位於主機上,並且可以共享資源。Kubernetes中的每個pod都被分配一個唯一的(在集群內的)IP地址這樣就可以允許應用程序使用端口,而不會有沖突的風險。
Pod可以定義一個卷,例如本地磁盤目錄或網絡磁盤,並將其暴露在pod中的一個容器之中。pod可以通過Kubernetes API手動管理,也可以委托給控制器來管理。
標簽和選擇器
Kubernetes使客戶端(用戶或內部組件)將稱為“標簽”的鍵值對附加到系統中的任何API對象,如pod和節點。相應地,“標簽選擇器”是針對匹配對象的標簽的查詢。