基于Kubernetes的資源調(diào)度器優(yōu)化策略研究
發(fā)布時(shí)間:2020-04-11 01:51
【摘要】:Kubernetes作為當(dāng)前最被業(yè)界廣泛認(rèn)可的Docker容器編排系統(tǒng),大多數(shù)云服務(wù)提供商都將其作為云原生應(yīng)用的部署解決方案。雖然它擁有十分豐富的系統(tǒng)功能,但作為編排系統(tǒng),其最核心的依然是調(diào)度功能。本文將Kubernetes中實(shí)現(xiàn)調(diào)度功能的系統(tǒng)組件——資源調(diào)度器作為研究對(duì)象,針對(duì)現(xiàn)有調(diào)度器存在的靜態(tài)與動(dòng)態(tài)調(diào)度問(wèn)題,提出了相應(yīng)的優(yōu)化策略。首先對(duì)涉及到的相關(guān)技術(shù),如Docker容器技術(shù)、Kubernetes技術(shù)和云計(jì)算集群調(diào)度器技術(shù)分別進(jìn)行研究。在此基礎(chǔ)上,對(duì)Kubernetes資源調(diào)度器及其調(diào)度策略進(jìn)行深入分析,并探討現(xiàn)有資源調(diào)度器所存在的問(wèn)題。然后針對(duì)資源調(diào)度器在靜態(tài)調(diào)度時(shí)存在的冗余計(jì)算問(wèn)題,通過(guò)重新優(yōu)化其靜態(tài)調(diào)度流程,提出了一套R(shí)RC(Reduce Redundancy Calculations)調(diào)度算法。此算法針對(duì)同一資源控制器的不同副本在進(jìn)行調(diào)度時(shí),可減少冗余計(jì)算步驟,以此提升調(diào)度器的調(diào)度效率。接著針對(duì)靜態(tài)調(diào)度過(guò)后可能會(huì)出現(xiàn)的集群負(fù)載極不均衡的問(wèn)題,通過(guò)分析其動(dòng)態(tài)調(diào)度需求,提出了一套集群動(dòng)態(tài)負(fù)載均衡機(jī)制。該機(jī)制根據(jù)某些觸發(fā)條件以及節(jié)點(diǎn)負(fù)載信息變化情況,能夠動(dòng)態(tài)選擇合適的Pod進(jìn)行重新調(diào)度,從而達(dá)到負(fù)載均衡的目的。最后搭建Kubernetes集群實(shí)驗(yàn)環(huán)境,并設(shè)計(jì)實(shí)驗(yàn)方案進(jìn)行驗(yàn)證。在此基礎(chǔ)上,對(duì)實(shí)驗(yàn)結(jié)果做數(shù)據(jù)分析,驗(yàn)證優(yōu)化方案的可用性與有效性。靜態(tài)調(diào)度實(shí)驗(yàn)結(jié)果表明,經(jīng)靜態(tài)調(diào)度優(yōu)化方案優(yōu)化后,調(diào)度器在針對(duì)同一資源控制器的Pod副本進(jìn)行調(diào)度時(shí),平均調(diào)度時(shí)間縮短了約9%,調(diào)度器經(jīng)優(yōu)化后表現(xiàn)出了更好的調(diào)度性能;負(fù)載均衡實(shí)驗(yàn)結(jié)果顯示,在Pod剛被調(diào)度時(shí),靜態(tài)調(diào)度可以使集群保持負(fù)載的相對(duì)均衡,但集群長(zhǎng)時(shí)間運(yùn)行情況下則會(huì)出現(xiàn)負(fù)載不均衡的問(wèn)題。而本文提出的動(dòng)態(tài)負(fù)載均衡機(jī)制,結(jié)合靜態(tài)與動(dòng)態(tài)調(diào)度,可以保證集群在長(zhǎng)時(shí)間運(yùn)行的情況下,依然可以很好的維持集群系統(tǒng)的均衡性,從而更好的保持集群系統(tǒng)的穩(wěn)定。
【圖文】:
.1.1 Docker 簡(jiǎn)介Docker 是由 dotCloud 公司開(kāi)源的一個(gè)用于研發(fā)、測(cè)試、交付和運(yùn)行軟件應(yīng)用器引擎。為了使開(kāi)發(fā)者交付軟件的周期更短,Docker 將上層應(yīng)用與底層架構(gòu)分,它能夠像管理上層應(yīng)用一樣管理底層架構(gòu)。利用 Docker 可以快速交付、測(cè)試署代碼,從而顯著減少應(yīng)用開(kāi)發(fā)到上線所需的時(shí)間[22]。Docker 使得用戶可以在容器中封裝和運(yùn)行軟件應(yīng)用。高資源利用率與隔離性在同一時(shí)間、同一服務(wù)器上可以運(yùn)行多個(gè)容器。容器十分輕量的特性使得它們可系統(tǒng)內(nèi)核中直接運(yùn)行,而不需要對(duì)應(yīng)用的額外負(fù)載進(jìn)行管理。因此相較于虛擬機(jī)一服務(wù)器中可以運(yùn)行更多的 Docker 容器。并且虛擬機(jī)中也可以創(chuàng)建容器并運(yùn)行ocker 使用 Go 語(yǔ)言進(jìn)行開(kāi)發(fā)且遵從 Apache 2.0 協(xié)議,其源代碼托管在 Github 上。.1.2 Docker 架構(gòu)Docker 使用客戶端-服務(wù)器架構(gòu)。Docker 客戶端通過(guò) REST API,,使用 UNIX 字與 Docker 守護(hù)進(jìn)程通信。創(chuàng)建、運(yùn)行和分發(fā) Docker 容器都是由 Docker 守護(hù)負(fù)責(zé)的。Docker 客戶端和 Docker 守護(hù)進(jìn)程可以在同一服務(wù)器中運(yùn)行,也可以將 Docker 客戶端連接至遠(yuǎn)程 Docker 守護(hù)進(jìn)程[23]。如圖 2.1 所示。
西安郵電大學(xué)碩士學(xué)位論文(5)操作系統(tǒng)級(jí)虛擬化主機(jī)的操作系統(tǒng)來(lái)負(fù)責(zé)在多個(gè)虛擬服務(wù)器之間分配硬件資源,并且讓這些服務(wù)器之間彼此獨(dú)立。與前述虛擬化技術(shù)相比,一個(gè)明顯的區(qū)別就是,如果使用操作系統(tǒng)級(jí)虛擬化,所有虛擬服務(wù)器必須運(yùn)行同一操作系統(tǒng)。內(nèi)核通過(guò)創(chuàng)建多個(gè)虛擬的操作系統(tǒng)實(shí)例來(lái)隔離不同的進(jìn)程。如 OpenVZ、Docker 等實(shí)現(xiàn)了操作系統(tǒng)級(jí)虛擬化。由此可見(jiàn),Docker 和其它容器技術(shù)都屬于操作系統(tǒng)級(jí)的虛擬化技術(shù)。在容器技術(shù)出現(xiàn)之前,業(yè)界多數(shù)都使用虛擬機(jī)來(lái)實(shí)現(xiàn)計(jì)算資源的虛擬化,云原生應(yīng)用大多也都部署在虛擬機(jī)中運(yùn)行上線[25]。圖 2.2 直觀的展現(xiàn)了 Docker 容器與傳統(tǒng)虛擬機(jī)的區(qū)別。
【學(xué)位授予單位】:西安郵電大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2019
【分類號(hào)】:TP393.09
【圖文】:
.1.1 Docker 簡(jiǎn)介Docker 是由 dotCloud 公司開(kāi)源的一個(gè)用于研發(fā)、測(cè)試、交付和運(yùn)行軟件應(yīng)用器引擎。為了使開(kāi)發(fā)者交付軟件的周期更短,Docker 將上層應(yīng)用與底層架構(gòu)分,它能夠像管理上層應(yīng)用一樣管理底層架構(gòu)。利用 Docker 可以快速交付、測(cè)試署代碼,從而顯著減少應(yīng)用開(kāi)發(fā)到上線所需的時(shí)間[22]。Docker 使得用戶可以在容器中封裝和運(yùn)行軟件應(yīng)用。高資源利用率與隔離性在同一時(shí)間、同一服務(wù)器上可以運(yùn)行多個(gè)容器。容器十分輕量的特性使得它們可系統(tǒng)內(nèi)核中直接運(yùn)行,而不需要對(duì)應(yīng)用的額外負(fù)載進(jìn)行管理。因此相較于虛擬機(jī)一服務(wù)器中可以運(yùn)行更多的 Docker 容器。并且虛擬機(jī)中也可以創(chuàng)建容器并運(yùn)行ocker 使用 Go 語(yǔ)言進(jìn)行開(kāi)發(fā)且遵從 Apache 2.0 協(xié)議,其源代碼托管在 Github 上。.1.2 Docker 架構(gòu)Docker 使用客戶端-服務(wù)器架構(gòu)。Docker 客戶端通過(guò) REST API,,使用 UNIX 字與 Docker 守護(hù)進(jìn)程通信。創(chuàng)建、運(yùn)行和分發(fā) Docker 容器都是由 Docker 守護(hù)負(fù)責(zé)的。Docker 客戶端和 Docker 守護(hù)進(jìn)程可以在同一服務(wù)器中運(yùn)行,也可以將 Docker 客戶端連接至遠(yuǎn)程 Docker 守護(hù)進(jìn)程[23]。如圖 2.1 所示。
西安郵電大學(xué)碩士學(xué)位論文(5)操作系統(tǒng)級(jí)虛擬化主機(jī)的操作系統(tǒng)來(lái)負(fù)責(zé)在多個(gè)虛擬服務(wù)器之間分配硬件資源,并且讓這些服務(wù)器之間彼此獨(dú)立。與前述虛擬化技術(shù)相比,一個(gè)明顯的區(qū)別就是,如果使用操作系統(tǒng)級(jí)虛擬化,所有虛擬服務(wù)器必須運(yùn)行同一操作系統(tǒng)。內(nèi)核通過(guò)創(chuàng)建多個(gè)虛擬的操作系統(tǒng)實(shí)例來(lái)隔離不同的進(jìn)程。如 OpenVZ、Docker 等實(shí)現(xiàn)了操作系統(tǒng)級(jí)虛擬化。由此可見(jiàn),Docker 和其它容器技術(shù)都屬于操作系統(tǒng)級(jí)的虛擬化技術(shù)。在容器技術(shù)出現(xiàn)之前,業(yè)界多數(shù)都使用虛擬機(jī)來(lái)實(shí)現(xiàn)計(jì)算資源的虛擬化,云原生應(yīng)用大多也都部署在虛擬機(jī)中運(yùn)行上線[25]。圖 2.2 直觀的展現(xiàn)了 Docker 容器與傳統(tǒng)虛擬機(jī)的區(qū)別。
【學(xué)位授予單位】:西安郵電大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2019
【分類號(hào)】:TP393.09
【相似文獻(xiàn)】
相關(guān)期刊論文 前10條
1 江濤;袁景凌;陳e
本文編號(hào):2622992
本文鏈接:http://sikaile.net/guanlilunwen/ydhl/2622992.html
最近更新
教材專著