Kubernetes,也被稱為K8s或Kube,是谷歌推出的業(yè)界最受歡迎的容器編排器琐鲁。本K8s教程由一系列關于K8s的文章組成。在第一部分视哑,我們將討論什么是K8s和K8s的基本概念绣否。
本課程是專為初學者開設的,你可以零基礎學習這項技術挡毅。我們將帶你了解全部K8s的基礎知識蒜撮,幫你理解這些概念。
在開始學習K8s之前跪呈,讓我們對容器引擎和容器有一個基本的了解段磨。
2.什么是容器引擎?
容器引擎允許你綁定和運行一個應用在一個容器里,這是一個松散隔離的環(huán)境耗绿。由于隔離性和安全性苹支,你可以在一臺主機上操作多個容器。
容器引擎利用了操作系統(tǒng)的內核資源隔離特性误阻,可以在同一個操作系統(tǒng)上運行多個容器债蜜。人們通常把容器引擎比作虛擬機(VMs)。
另一方面究反,虛擬機利用物理硬件資源抽象層之上可執(zhí)行代碼封裝了整個操作系統(tǒng)寻定。
3.什么是容器?
一個容器鏡像是一個可運行的軟件包,其中包含了一個完整的可執(zhí)行程序精耐,包括代碼和運行時需要應用狼速、系統(tǒng)庫和全部重要設置的默認值。
應用程序通過使用容器與底層的宿主機架構解耦卦停。如下圖所示向胡,我們可以利用底層機器在容器引擎之上運行多個容器恼蓬。這促進了容器在各種操作系統(tǒng)和云場景中的部署。
容器通過容易擴展和部署應用程序的特性幫助企業(yè)實現(xiàn)現(xiàn)代化僵芹。然而处硬,重新建立一個全新的基礎環(huán)境,容器也帶來了額外的問題和復雜性淮捆。
每天有數(shù)千個容器實例被大型和小型軟件組織部署郁油,這給他們的管理帶來了持續(xù)增長的挑戰(zhàn)。那么攀痊,他們是如何做到的呢?
4.什么是容器編排?
容器編排與容器的生命周期管理相關桐腌,特別是在大型動態(tài)環(huán)境中。軟件團隊用容器編排器來控制和自動化容器管理的各種任務苟径。
容器編排器可以工作在使用容器的任何環(huán)境案站。它可以幫助你在多個環(huán)境中部署相同的程序,而不需要重新編寫它棘街。
5.容器編排工具
容器編排技術提供了一個控制容器和微服架構的框架蟆盐。容器生命周期管理可以通過各種容器編排器解決方案來實現(xiàn),Kubernetes遭殉、Docker Swarm和Apache Mesos是三種常見的解決方案/編排工具石挂。
Docker Swarm是Docker原生工具,非常容易安裝和配置险污。K8s需要大量手工干預來配置其組件痹愚,例如 etcd、flannel 和 docker 引擎蛔糯。
與其他工具相比拯腮,K8s憑借其各種優(yōu)勢和功能特性在行業(yè)占據(jù)主導地位。
6.什么是K8s?
K8s是一個最初由Google開發(fā)的蚁飒,用于自動化部署动壤、擴展和管理容器化應用的開源容器編排器技術。
K8s使部署和管理微服務架構應用程序變得很簡單淮逻。它通過在集群之上形成一個抽象層來實現(xiàn)這一點琼懊,允許開發(fā)團隊平滑地部署應用程序,而 K8s主要處理以下任務:
控制和管理應用程序對資源的使用
自動負載均衡應用程序的多個實例之間請求
監(jiān)控資源使用和資源限制爬早,為了可以自動阻止應用消耗過多的資源并且可以再次恢復它們
如果主機資源耗盡或主機死機肩碟,將應用程序實例從一臺主機遷移到另一臺主機是一個可行的選項
當有新的主機加入集群時,新增加的額外資源可以被自動使用
7.為什么市場推薦K8s
K8s是第一個由云原生計算基金會(Cloud Native Computing Foundation, CNCF)和谷歌基金會倡議的項目凸椿,是繼Linux之后增長最快的開源軟件項目。
為什么現(xiàn)在有很多企業(yè)依賴K8s來滿足他們的容器編排需求? 原因有很多:
可移植性和靈活性:K8s有很強的兼容性翅溺,因為它可以在各種基礎設施和環(huán)境設置下運行脑漫。大多數(shù)其他編排器沒有這種靈活性髓抑。它們被鎖定在特定的運行時或基礎架構中。
開源:CNCF負責管理K8s优幸,這是一個完全開源吨拍、由社區(qū)驅動的項目。它有許多重要的企業(yè)贊助商网杆,但沒有一家公司能“控制”這個平臺或者控制它的發(fā)展方向羹饰。
多云兼容性:K8s不但可以將工作負載托管在單個云上,而且可以將工作負載分布在多個云上碳却。 K8s也能輕松地將其環(huán)境從一個云擴展到另一個云队秩。雖然其它編排器也能支持多云架構,但K8s在多云兼容性性方面可以完全超越它們昼浦。
市場領導者:大部分公司都在使用K8s馍资。根據(jù)紅帽公司的一項調查,K8s被客戶廣泛使用 (88%)关噪,尤其在生產環(huán)境中(74%)鸟蟹。
8.K8s架構
K8s是一個架構良好的分布式系統(tǒng)的例子。它將集群中的所有機器都視為單個資源池的一部分使兔。
K8s與其他成熟的分布式系統(tǒng)一樣建钥,有兩層:頭節(jié)點和工作節(jié)點。
頭節(jié)點或主節(jié)點由控制面和工作節(jié)點應用程序組成虐沥。一個K8s集群由許多頭節(jié)點和工作節(jié)點組成熊经。
K8s引入了很多術語來描述應用程序的結構。 我們將帶大家學習每個術語置蜀。
9.K8s組件
頭節(jié)點/主節(jié)點和工作節(jié)點由它自己的組件組成奈搜,可以確保編排器穩(wěn)定地運行。
控制平面
控制平面是管理員和用戶管理不同節(jié)點的地方盯荤。它通過HTTP調用接收命令或者連接到系統(tǒng)并且運行命令行腳本馋吗。顧名思義,它控制了K8s與應用程序的交互方式秋秤。
API 服務器
API 服務器為K8s集群提供了一個REST接口宏粤。 所有在pod上激活的服務和別的對象都是可以用可編程的方式與與終端進行交互。
調度器
調度器負責將任務分配給各個節(jié)點灼卢。它監(jiān)控資源容量并保證工作節(jié)點的性能保持在可接受的范圍內绍哎。
控制器管理器
K8s控制器管理器是管理K8s核心控制循環(huán)的服務。它負責確保集群的共享狀態(tài)正常運行鞋真。
Etcd
K8s使用了Etcd崇堰,一個提供分布式鍵值存儲的數(shù)據(jù)庫,用來共享集群的整體狀態(tài)的信息。
節(jié)點
節(jié)點是運行了pod的物理機或虛擬機海诲》庇ǎ控制平面管理集群中的每個節(jié)點,該節(jié)點包含運行 pod所需的服務特幔。
Pods
K8s pod 是K8s管理容器集的最小單位咨演。 每個pod有一個分配給pod中的所有容器的單獨的IP 地址。在pod中的容器內存和存儲資源是共享的蚯斯。當應用程序只有一個進程時薄风,pod 也可以有一個容器。
Kubelet
Kubelet是一個工作節(jié)點組件拍嵌。它的任務是跟蹤pod及其容器的運行狀態(tài)遭赂。它與pod的YAML 或JSON描述文件相關。Kubelet檢查 pod 規(guī)格并確定 pod 是否健康撰茎。
Kube代理
Kube代理是一個網(wǎng)絡代理和負載均衡器嵌牺,充當每個節(jié)點和API服務器之間的連接。它在集群中的每個節(jié)點上運行龄糊,并允許你從內部和外部連接到pod逆粹。
Kubectl
Kubectl是K8s的命令行工具。它用于部署應用程序炫惩、監(jiān)控和控制集群資源以及查看日志僻弹。
從用戶的角度來看,Kubectl 是你的K8s的控制面板他嚷。它使你能夠執(zhí)行所有K8s操作蹋绽。從技術角度來看,Kubectl 是K8s API的客戶端筋蓖。
結論
在本文中卸耘,我們已經了解了容器編排的基本概念和K8s的架構。在我們即將發(fā)表的文章中粘咖,我們將了解K8s的重要關鍵特性和單節(jié)點K8s安裝蚣抗。