溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes容器調(diào)度怎么使用

發(fā)布時間:2021-12-24 10:12:49 來源:億速云 閱讀:129 作者:iii 欄目:云計算

這篇文章主要講解了“Kubernetes容器調(diào)度怎么使用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Kubernetes容器調(diào)度怎么使用”吧!

節(jié)點調(diào)度

根據(jù)原生的Kubernetes行為,默認情況下,Rancher 2.0工作負載中的pod將分布在可調(diào)度且具有足夠可用容量的節(jié)點(主機)上。但就像1.6版本一樣,Rancher 2.0也有助于:

  • 在特定節(jié)點上運行所有pod

  • 使用標簽進行節(jié)點調(diào)度

以下是1.6 UI中的調(diào)度方式。Rancher允許您在特定主機上運行所有容器,指定硬/軟主機標簽,或在部署服務時使用親和性/反親和性規(guī)則。

Kubernetes容器調(diào)度怎么使用

以下是Rancher 2.0中對應的節(jié)點調(diào)度UI,它在部署工作負載時提供相同的功能。

Kubernetes容器調(diào)度怎么使用

Rancher使用底層的原生Kubernetes構(gòu)造來指定節(jié)點的親和性/反親和性。

下面的示例中我們將來看看如何使用節(jié)點調(diào)度選項來調(diào)度工作負載pod,然后看看Kubernetes YAML規(guī)范和Rancher 1.6 Docker Compose配置的對比。

示例:在特定節(jié)點上運行所有Pod

在部署工作負載(導航到Cluster> Project> Workloads)時,可以將工作負載中的所有pod調(diào)度到特定節(jié)點。

在這里,我使用特定節(jié)點上的nginx鏡像部署scale = 2的工作負載。

Kubernetes容器調(diào)度怎么使用

如果某節(jié)點有足夠的計算資源可用,Rancher將選擇該節(jié)點;如果使用hostPort,則不會發(fā)生端口沖突。如果該工作負載使用與另一個工作負載沖突的nodePort來對外暴露,那么部署是可以成功創(chuàng)建的,但它不會創(chuàng)建nodePort服務。如此一來,工作負載則完全不會暴露了。

在“工作負載/Workload”選項卡上,您可以按節(jié)點列出工作負載。在此,我可以看到我的Nginx工作負載的兩個pod都安排在指定的節(jié)點上了:

Kubernetes容器調(diào)度怎么使用

Kubernetes pod規(guī)范中的調(diào)度規(guī)則如下所示:

Kubernetes容器調(diào)度怎么使用

示例:主機標簽的親和性/反親和性**

我在Rancher 2.0集群中向node1添加了標簽foo = bar,以測試基于標簽的節(jié)點調(diào)度規(guī)則。

Kubernetes容器調(diào)度怎么使用

主機標簽親和性:硬

下圖展示了如何在Rancher 2.0 UI中指定主機標簽的親和性規(guī)則。硬親和性規(guī)則意味著所選主機必須滿足所有調(diào)度規(guī)則。如果找不到此類主機,則工作負載將無法部署。

Kubernetes容器調(diào)度怎么使用

在PodSpec YAML中,此規(guī)則將轉(zhuǎn)換為字段nodeAffinity。另外請注意,我已經(jīng)包含了Rancher 1.6 docker-compose.yml以使用標簽實現(xiàn)相同的調(diào)度行為。

Kubernetes容器調(diào)度怎么使用

主機標簽親和性:軟

如果您是Rancher 1.6用戶,那么您一定知道軟親和性規(guī)則意味著調(diào)度程序會嘗試按規(guī)則部署應用程序,但即使有主機不滿足規(guī)則也可以成功部署。以下是如何在Rancher 2.0 UI中指定此規(guī)則:

Kubernetes容器調(diào)度怎么使用

pod的相應YAML規(guī)范如下所示:

Kubernetes容器調(diào)度怎么使用

主機標簽反親和性

除了key = value主機標簽匹配規(guī)則外,Kubernetes調(diào)度結(jié)構(gòu)還支持以下運算符:

Kubernetes容器調(diào)度怎么使用

因此,要實現(xiàn)反親和性,可以使用運算符NotIn和DoesNotExist作為節(jié)點標簽。

使用容器標簽進行調(diào)度

Rancher 1.6中的這一功能允許您將容器調(diào)度到具有特定標簽的容器的主機。要在Rancher 2.0上執(zhí)行此操作,請使用Kubernetes inter-pod親和和反親和功能:

Kubernetes允許您根據(jù)pod標簽而不是節(jié)點標簽來約束pod可以被調(diào)度到哪些節(jié)點。

Rancher 1.6中最常用的調(diào)度功能之一是使用容器上的標簽對服務本身進行反親和。要在Rancher 2.0中復制此行為,我們可以在Kubernetes YAML規(guī)范中使用pod反親和構(gòu)造。例如,可以考慮使用Nginx Web工作負載。要確保此工作負載中的pod不在同一主機上,您可以使用podAntiAffinity構(gòu)造,如下所示。通過使用標簽指定podAntiAffinity,我們可以確保每個Nginx副本不在單個節(jié)點上共存。

Kubernetes容器調(diào)度怎么使用

使用Rancher CLI,可以將此工作負載部署到Kubernetes集群上。請注意,上面的部署指定了三個副本,并且我在Kubernetes集群中有三個可調(diào)度節(jié)點。

Kubernetes容器調(diào)度怎么使用

由于指定了podAntiAffinity,因此三個pod最終位于不同的節(jié)點上。為了進一步檢查podAntiAffinity的應用方式,我可以將部署擴展到四個pod。請注意,由于調(diào)度程序無法找到滿足podAntiAffinityrule的另一個節(jié)點,因此無法調(diào)度第四個pod。

Kubernetes容器調(diào)度怎么使用

基于資源的調(diào)度

在Rancher 1.6中創(chuàng)建服務時,可以在UI的“安全/主機”選項卡中指定內(nèi)存預留和mCPU預留。Cattle會將服務的容器安排到具有足夠可用計算資源的主機上。

在Rancher 2.0中,您可以使用pod容器規(guī)范下的resources.requests.memory和resources.requests.cpu指定工作負載pod所需的內(nèi)存和CPU資源。

指定這些資源請求時,Kubernetes調(diào)度程序會將pod分配給具有足夠容量的節(jié)點。

僅給主機調(diào)度特定服務

Rancher 1.6能夠在主機上指定容器標簽,從而只將特定容器調(diào)度給它。

要在Rancher 2.0中實現(xiàn)此目的,可以在pod規(guī)范中使用相應的Kubernetes的“添加節(jié)點taints(如主機標簽)并使用容差”的功能:

全局服務

在Rancher 1.6中,全局服務是指在環(huán)境中的每個主機上部署容器的服務:

如果服務的標簽為io.rancher.scheduler.global:'true',則Rancher 1.6調(diào)度程序?qū)⒃诃h(huán)境中的每個主機上調(diào)度服務容器。如文檔中所述,如果將新主機添加到環(huán)境中,并且主機滿足全局服務的主機要求,則Rancher將自動啟動該服務。

下面的示例是Rancher 1.6中的全局服務示例。請注意,只需放置所需標簽就足以使服務全局化。

Kubernetes容器調(diào)度怎么使用

我們?nèi)绾问褂肒ubernetes在Rancher 2.0中部署全局服務?

為此,Rancher為用戶的工作負載部署了Kubernetes DaemonSet對象。DaemonSet的功能與Rancher 1.6全局服務完全相同。Kubernetes調(diào)度程序?qū)⒃诩旱拿總€節(jié)點上部署一個pod,并且隨著新節(jié)點的添加,調(diào)度程序?qū)⒃谒鼈兩蠁有碌膒od,前提是它們與工作負載的調(diào)度要求相匹配。

此外,在2.0中,您還可以將DaemonSet限制為部署到具有特定標簽的節(jié)點

使用Rancher 2.0 UI部署DaemonSet

如果您是Rancher 1.6用戶,要使用UI將全局服務遷移到Rancher 2.0,請導航到Cluster> Project> Workloads視圖。部署工作負載時,您可以選擇以下工作負載類型:

Kubernetes容器調(diào)度怎么使用

這就是上面的DaemonSetworkload相應的Kubernetes YAML規(guī)范:

Kubernetes容器調(diào)度怎么使用

從Docker Compose到Kubernetes YAML

要使用Compose配置將Rancher 1.6全局服務遷移到Rancher 2.0,請按照下列步驟操作。

您可以使用Kompose工具將docker-compose.yml文件從Rancher 1.6轉(zhuǎn)換為Kubernetes YAML,然后使用Kubernetes集群中的Kubectl客戶端工具或Rancher CLI部署應用程序。

回頭想想上面提到的docker-compose.yml規(guī)范,其中的Nginx服務就是全局服務。如下是使用Kompose將其轉(zhuǎn)換為Kubernetes YAML的方法:

Kubernetes容器調(diào)度怎么使用

下面開始針對您的Kubernetes集群配置Rancher CLI,并部署生成的* -daemonset.yaml文件。

Kubernetes容器調(diào)度怎么使用

如上所示,我的Kubernetes集群有兩個可以調(diào)度工作負載的工作節(jié)點,并且部署global-daemonset.yaml為Daemonset啟動了兩個pod,每個節(jié)點上有一個pod。

感謝各位的閱讀,以上就是“Kubernetes容器調(diào)度怎么使用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Kubernetes容器調(diào)度怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI