十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要講解了“Kubernetes的工作機(jī)制”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Kubernetes的工作機(jī)制”吧!
青河網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
Kubernetes是一款開源的通用多容器管理軟件,提供了基本的部署、彈性擴(kuò)容,自愈能力、負(fù)載平衡和流量路由等能力,是微服務(wù)應(yīng)用程序的協(xié)調(diào)管理利器。Kubernetes將整個數(shù)據(jù)中心視為一臺超級計算機(jī),可以管理符合OCI標(biāo)準(zhǔn)的任何類型的容器。(例如Docker、Core OS的rkt容器等等)。Kubernetes的主要功能包括自動調(diào)度、自我修復(fù)、自動部署、回滾、水平擴(kuò)展和負(fù)載平衡。
Kubernetes 架構(gòu)由兩個關(guān)鍵組件組成: master節(jié)點和worker節(jié)點(Minions)。

Master節(jié)點的工作方式類似于一個團(tuán)隊的管理者,負(fù)責(zé)整個集群的管理和控制,分配工作負(fù)載,類似于對團(tuán)隊有絕對控制權(quán)的足球教練。Master節(jié)點負(fù)責(zé)并做出全局決定,安排某個節(jié)點處理用戶請求。Kubernetes還可以使用多Master節(jié)點設(shè)置來避免單點故障(Multi-Master HA)。Master節(jié)點僅在Linux系統(tǒng)上運行,但不限于任何特定平臺,可以是服務(wù)器裸機(jī)、VM、OpenStack的實例或者任何其他云實例,但是不要在Master節(jié)點上運行用戶容器(user container)。

Master節(jié)有以下組件。
kube-apiserverKube-apiserver遵循橫向擴(kuò)展架構(gòu)設(shè)計,是Master控制節(jié)點的前端,提供了面向外部的接口,通過REST API與外部世界進(jìn)行通信,它是資源對象的唯一操作入口,其他所有組件都必須通過它提供的API來操作資源數(shù)據(jù)。
etcd - 群集存儲etcd是kubernetes默認(rèn)使用的分布式鍵值存儲庫,提供了一種可靠的方式來存儲kubernetes集群中的數(shù)據(jù),主要被用來共享配置和服務(wù)發(fā)現(xiàn)。集群的所有狀態(tài)都存儲在etcd實例中,本身具有監(jiān)控的能力,因此當(dāng)etcd中的信息發(fā)生變化時,能夠快速的通知集群中相關(guān)的組件。etcd扮演的角色如此重要,因此,必須有一個可靠的備份計劃。

kube-controller-manager
Kube-Controller Manager是集群的管理控制中心,維護(hù)集群中的所有控制器(controller),對維持集群的穩(wěn)定和自我修復(fù),實現(xiàn)高可用,副本控制等起關(guān)鍵作用。它是一個嵌入式控制器并負(fù)責(zé)命名空間創(chuàng)建和垃圾收集的守護(hù)進(jìn)程,主要管理以下控制器:
Node Controller - 管理節(jié)點(創(chuàng)建,更新和刪除)。
Replication controller - 根據(jù)清單維護(hù)pod的數(shù)量。
Service Account & Token controller - 為新名稱空間創(chuàng)建默認(rèn)帳戶和API令牌。
Endpoints Controller - 管理服務(wù)于端點對象(服務(wù),pod)。
kube-scheduler
kube-scheduler通過apiserver實時監(jiān)聽來自新建pod的請求,并將工作負(fù)載分配到合適的工作節(jié)點。它監(jiān)控所有工作節(jié)點的資源利用率,并根據(jù)新pod的資源需求和現(xiàn)有工作節(jié)點的負(fù)載做出邏輯決策。Kube-scheduler還需要考慮管理員定義的規(guī)則(親和性和反親和性,約束)。
Nodes比Master節(jié)點簡單得多,是集群最小的計算單元,簡單地完成master節(jié)點分配下去的任務(wù)。如果節(jié)點出現(xiàn)故障或掛掉了,我們可以輕易的地將其與新節(jié)點交換,讓業(yè)務(wù)恢復(fù)正常。換句話說,該節(jié)點提供了在其上運行pod的所有必要服務(wù)。node節(jié)點可以是裸機(jī)、虛擬機(jī)、OpenStack實例或云實例。

Node節(jié)點由以下組件組成:
Kubelet - Kuberbernets主要代理
Kubelet是Kubernetes中最主要的控制器,它在每個節(jié)點上運行,是Pod和Node API的主要實現(xiàn)者,并使從服務(wù)器可以與主服務(wù)器通信。它把Node節(jié)點注冊到集群里,并監(jiān)視Master kube- apiserver以接收指令進(jìn)行工作分配。所在Node節(jié)點上的Pod的創(chuàng)建、修改、監(jiān)控、刪除等全生命周期管理都是它管理。同時Kubelet定時“上報”所在Node的狀態(tài)信息到API Server里,如果pod存在問題,它會向Master報告。Kubelet對外暴露只讀端口:10255,可以獲取Kubelet監(jiān)控狀態(tài)信息,該端口是免認(rèn)證非安全的。
/ spec endpoint - 提供有關(guān)運行節(jié)點的信息。
/ healthz endpoint - 其運行狀況檢查端點。
/ pods endpoint - 提供運行pod信息。
容器引擎 - 容器Run-time
Pods將容器打包到其中。要部署容器,你需要容器Run-time軟件。在大多數(shù)情況下,它就是一個docker引擎,當(dāng)然我們還可以使用其他容器運行時軟件(例如:rkt)。容器引擎管理在pod上運行的容器,它將拉取鏡像以進(jìn)行部署并啟動/停止容器上的容器。
Kube-proxy
kube-proxy是node節(jié)點的大腦,它確保每個pod可以獲得唯一的IP。如果要在一個pod中打包多個容器,則pod中的所有容器共享一個IP。它還對服務(wù)中的所有pod進(jìn)行負(fù)載均衡(通過iptables規(guī)則引導(dǎo)訪問至服務(wù)IP,并將重定向至正確的后端應(yīng)用,通過這種方式提供了一個高可用的負(fù)載均衡解決方案)。
下圖顯示了pod在工作節(jié)點中創(chuàng)建的流程。Kubectl是命令行實用程序,你可以在其中將命令傳遞給Kubernetes集群以創(chuàng)建和管理各種Kubernetes組件。

感謝各位的閱讀,以上就是“Kubernetes的工作機(jī)制”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Kubernetes的工作機(jī)制這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!