您好,登錄后才能下訂單哦!
Kubernetes是什么?
Kubernetes,簡(jiǎn)稱K8s,是用8代替8個(gè)字符“ubernete”而成的縮寫。Kubernetes是Google開(kāi)源的一個(gè)容器編排引擎,同時(shí)也是一個(gè)開(kāi)源的容器集群管理系統(tǒng),可以實(shí)現(xiàn)容器應(yīng)用的自動(dòng)化部署、自動(dòng)擴(kuò)縮容、監(jiān)控和維護(hù)等功能。
Kubernetes最初源于谷歌內(nèi)部的Borg,提供了面向應(yīng)用的容器集群部署和管理系統(tǒng)。Kubernetes的目標(biāo)旨在消除編排物理/虛擬計(jì)算、網(wǎng)絡(luò)和存儲(chǔ)基礎(chǔ)設(shè)施的負(fù)擔(dān),并使應(yīng)用程序運(yùn)營(yíng)商和開(kāi)發(fā)人員完全將重點(diǎn)放在以容器為中心的原理上進(jìn)行自助運(yùn)營(yíng)。
Kubernetes具備完善的集群管理能力,包括多層次的安全防護(hù)和準(zhǔn)入機(jī)制、多租戶應(yīng)用支撐能力、透明的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制、內(nèi)建負(fù)載均衡器、故障發(fā)現(xiàn)和自我修復(fù)能力、服務(wù)滾動(dòng)升級(jí)和在線擴(kuò)容、可擴(kuò)展的資源自動(dòng)調(diào)度機(jī)制、多粒度的資源配額管理能力。
Borg是谷歌內(nèi)部的大規(guī)模集群管理系統(tǒng),負(fù)責(zé)對(duì)谷歌內(nèi)部很多核心服務(wù)的調(diào)度和管理。Borg的目的是讓用戶能夠不必操心資源管理的問(wèn)題,從而更專注于自己的核心業(yè)務(wù)。Borg甚至能做到跨多個(gè)數(shù)據(jù)中心的資源利用率最大化。
Kubernetes屬于主從分布式架構(gòu),主要由Master和Node組成,以及包括客戶端命令行工具kubectl和其它附加項(xiàng)。
Master:作為控制節(jié)點(diǎn),對(duì)集群進(jìn)行調(diào)度管理;由kube-apiserver、kube-scheduler、kube-controller-manager和etcd組成。
Node:作為工作節(jié)點(diǎn),運(yùn)行業(yè)務(wù)應(yīng)用的容器;由kubelet、kube-proxy和docker(或者rocket)組成。
Master指的是集群控制節(jié)點(diǎn),每個(gè)Kubernetes集群里需要有至少一個(gè)Master來(lái)負(fù)責(zé)集群的管理和控制。Master可以是一臺(tái)物理機(jī),也可以是一臺(tái)虛擬機(jī),Master節(jié)點(diǎn)上運(yùn)行著以下組件:
kube-apiserver:提供了HTTP Rest接口的關(guān)鍵服務(wù)進(jìn)程,是集群里所有資源的增、刪、改、查等操作的唯一入口,也是集群的控制入口。
kube-controller-manager:運(yùn)行管理控制器,是集群中處理常規(guī)任務(wù)的后臺(tái)進(jìn)程,每個(gè)Controller都負(fù)責(zé)一種具體的控制流程,而Controller Manager就是這些Controller的核心管理者。
kube-scheduler:負(fù)責(zé)資源調(diào)度(Pod調(diào)度)的進(jìn)程,為新創(chuàng)建的Pod選擇一個(gè)Node節(jié)點(diǎn)。
etcd:是kubernetes默認(rèn)的存儲(chǔ)系統(tǒng),集群里所有資源對(duì)象的數(shù)據(jù)全部保存在etcd中。
Node指的是集群的工作節(jié)點(diǎn),和Master一樣,可以是一臺(tái)物理主機(jī),也可以是一臺(tái)虛擬機(jī)。每個(gè)Node都會(huì)被Master分配一些工作負(fù)載(Docker容器),當(dāng)某個(gè)Node宕機(jī)時(shí),其上的工作負(fù)載會(huì)被Master自動(dòng)轉(zhuǎn)移到其他節(jié)點(diǎn)上去。Node上運(yùn)行的組件如下:
kubelet:負(fù)責(zé)Pod對(duì)應(yīng)的容器的創(chuàng)建、啟停等任務(wù),同時(shí)與Master節(jié)點(diǎn)密切協(xié)作,實(shí)現(xiàn)集群管理的基本功能。
kube-proxy:實(shí)現(xiàn)Kubernetes Service的通信與負(fù)載均衡機(jī)制的重要組件。
docker:容器引擎,負(fù)責(zé)本機(jī)的容器創(chuàng)建和管理工作。
Deployment的典型使用場(chǎng)景有以下幾個(gè):
創(chuàng)建一個(gè)Deployment對(duì)象來(lái)生成對(duì)應(yīng)的ReplicaSet,并完成Pod副本的創(chuàng)建過(guò)程。
檢查Deployment的狀態(tài)來(lái)查看部署工作是否完成(Pod副本的數(shù)量是否達(dá)到預(yù)期的值)。
更新Deployment以創(chuàng)建新的Pod(比如鏡像升級(jí))。
如果當(dāng)前Deployment不穩(wěn)定,則回滾到一個(gè)早先的Deployment版本。
掛起或者恢復(fù)一個(gè)Deployment。
StatefulSet的使用場(chǎng)景如下:
穩(wěn)定性,唯一的網(wǎng)絡(luò)標(biāo)識(shí)。
穩(wěn)定性,持久化存儲(chǔ)。
有序的部署和擴(kuò)展。
有序的刪除和終止。
有序的自動(dòng)滾動(dòng)更新。
上述這些組件都是Kubernetes系統(tǒng)的核心組件,它們共同構(gòu)成了Kubernetes系統(tǒng)的框架和計(jì)算模型。通過(guò)對(duì)它們進(jìn)行靈活組合,用戶就可以快速、方便地對(duì)容器集群進(jìn)行配置、創(chuàng)建和管理。除了本文所介紹的核心組件,Kubernetes中還有許多輔助配置的資源對(duì)象,例如LimitRange、ResourceQuota等。另外,還有一些系統(tǒng)內(nèi)部使用的對(duì)象,例如Binding、Event等可參考官方API文檔。
說(shuō)在最后
本人也是剛接觸Kubernetes(K8s),本文內(nèi)容是摘自相關(guān)書籍和網(wǎng)上的相關(guān)資料,并結(jié)合自己的理解所寫的,如有理解錯(cuò)誤的地方還請(qǐng)大家不吝指出,共同進(jìn)步。
由于國(guó)內(nèi)關(guān)于Kubernetes的學(xué)習(xí)資料很少,51cto上倒是有相關(guān)的訂閱專欄,但都是要錢的,對(duì)于這個(gè)我不做評(píng)論。這里向跟我一樣的初學(xué)者推薦一本書《Kubernetes權(quán)威指南(第2版)》,網(wǎng)上可以下載到PDF版本,雖然這本書講的Kubernetes的版本是1.3的,版本比較老,但對(duì)于初學(xué)者可以學(xué)習(xí)它的理論知識(shí),并結(jié)合網(wǎng)上新版本的相關(guān)資料自行理解,也是一種非常不錯(cuò)的學(xué)習(xí)方法。
對(duì)Kubernetes(K8s)有興趣的朋友,可以關(guān)注我的博客,后面我會(huì)繼續(xù)發(fā)表學(xué)習(xí)Kubernetes的博文,歡迎各位朋友和我一起踏上Kubernetes(K8s)的旅程。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。