自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes優(yōu)秀實踐:如何正確設(shè)置資源請求和限制?

譯文
開發(fā) 架構(gòu)
管理Kubernetes時,我最大的煩惱之一是工作負載沒有資源請求和限制。對此我感到非常沮喪,于是索性創(chuàng)建了一個開源項目Goldilocks,以簡化設(shè)置初始資源請求和限制這一過程。我在這篇博文中將討論如何正確設(shè)置資源請求和限制的Kubernetes優(yōu)秀實踐。

?譯者 | 布加迪

審校 | 孫淑娟

Kubernetes是一個動態(tài)系統(tǒng),可以自動適應用戶工作負載的資源利用率。

Kubernetes有兩個擴展級別。每個單獨的Kubernetes部署都可以使用Horizontal Pod Autoscaler(HPA)來自動擴展,而整個集群使用Cluster Autoscaler來擴展。HPA監(jiān)測部署中各個pod的目標指標(通常是CPU或內(nèi)存使用情況),必要時添加或刪除pod,使該指標接近指定的目標。同時,Cluster Autoscaler處理集群本身的擴展。它監(jiān)視無法調(diào)度的pod,并為集群添加節(jié)點或從集群刪除節(jié)點,以容納這些pod。

Kubernetes支持這兩種擴展操作的一項關(guān)鍵特性是,能夠針對工作負載設(shè)置特定的資源請求和限制。通過為每個pod使用多少CPU和內(nèi)存設(shè)置合理的限制和請求,您可以盡量提高基礎(chǔ)架構(gòu)的利用率,同時確保應用程序性能很高。想最大限度地有效利用Kubernetes集群,正確設(shè)置資源限制和請求很重要。對應用程序設(shè)置過低的限制會導致問題。比如說,如果內(nèi)存限制太低,Kubernetes一定會因應用程序違反限制而終止它。與此同時,如果把限制設(shè)置得太高,就會因過度分配而浪費資源,這意味著最終支付更高的費用。

雖然Kubernetes優(yōu)秀實踐要求您應該始終對工作負載設(shè)置資源限制和請求,但知道為每個應用程序使用什么樣的值并非總是易事。因而,一些團隊從不設(shè)置請求或限制,而另一些團隊在初始測試過程中設(shè)置得過高,然后從不確保設(shè)置正確。確保擴展操作合理的關(guān)鍵是,對每個工作負載正確設(shè)置資源限制和請求,以便工作負載有效地運行。

設(shè)置資源限制和請求是在Kubernetes集群上盡可能高效、可靠地運行應用程序的關(guān)鍵。

1、如何設(shè)置Kubernetes資源?

Fairwinds的開源項目Goldilocks幫助團隊將資源分配給他們的Kubernetes部署,并做好這些資源的調(diào)校。Goldilocks是一個Kubernetes控制器,收集運行中的pod方面的數(shù)據(jù),并就如何設(shè)置資源請求和限制提供建議。它可以幫助組織了解資源使用情況、資源成本和確保效率的優(yōu)秀實踐。Goldilocks使用Kubernetes Vertical Pod Autoscaler(VPA)。它考慮到工作負載以往的內(nèi)存和CPU使用情況,以及pod的當前資源使用情況,以便建議如何設(shè)置資源請求和限制。(雖然VPA可以為您設(shè)置限制,但通常最好只使用VPA引擎來提供建議。)實際上,該工具為命名空間中的每個部署創(chuàng)建一個VPA,然后查詢該VPA以獲取信息。

要查看這些建議,必須使用Kubectl來查詢每個VPA對象,這對于大中型部署來說很快會變得繁瑣。這時候儀表板就有了用武之地。一旦您的VPA部署到位,建議會出現(xiàn)在Goldilocks儀表板中。

儀表板根據(jù)您希望為部署獲得的服務(wù)質(zhì)量(QoS)類別提供兩種類型的建議:

保證式,這意味著應用程序?qū)⒈皇谟璞绕渌ぷ髫撦d更高的優(yōu)先級,以便保證可用資源。在這個類別中,您將資源請求和限制設(shè)置為完全相同的值,這將保證在調(diào)度時容器請求的資源對其可用。這個QoS類別通常適合最穩(wěn)定的Kubernetes集群。

突發(fā)式,這意味著應用程序?qū)⒈WC得到最低數(shù)量的資源,但如果資源可用,將獲得更多的資源。實際上,您的資源請求低于限制。調(diào)度程序?qū)⑹褂谜埱髮od放置到節(jié)點上,但隨后pod可以在被終止或遏制之前使用更多的資源,直至達到上限。在決定資源匱乏時刪除哪些工作負載時,該QoS類別被授予較低的優(yōu)先級。

儀表板為保證式和突發(fā)式QoS類別提供了建議。在保證式類別中,我們建議將請求和限制設(shè)置為VPA“目標”字段。

注意,第三個QoS類別:盡力式(BestEffort)意味著不設(shè)置請求或限制,只有當所有其他請求都得到滿足時才為應用程序分配資源。不建議使用盡力式。

2、為集群使用專門的實例組

如果您對微調(diào)實例(工作負載在其上面運行)感興趣,可以使用不同的實例組類型和節(jié)點標簽將工作負載引導到特定的實例類型。

不同的業(yè)務(wù)系統(tǒng)常常有不同大小的資源需求,以及專門的硬件需求(比如GPU)。Kubernetes中的節(jié)點標簽概念讓您可以將標簽放在所有不同的節(jié)點上。同時,pod經(jīng)過配置后,可以使用特定的“nodeSelectors”以匹配特定的節(jié)點標簽,這些標簽決定了pod可以調(diào)度到哪些節(jié)點上。通過利用具有適當標記的不同實例類型的實例組,您可以將所選擇的云提供商提供的底層硬件與Kubernetes中的工作負載混合搭配。

如果您有不同大小、不同需求的工作負載,將這些工作負載放在不同的實例類型上,并使用標簽將工作負載引導到這些不同的實例類型上從戰(zhàn)略上和成本上來說都是明智之舉。

競價實例(spot instance)與這一想法密切有關(guān)。大多數(shù)組織熟悉按需購買實例或在固定期限內(nèi)按保留條款購買實例的模式。但是如果工作負載可能被中斷,您可能需要考慮使用競價實例。這種實例讓您可以以相當大的折扣使用云提供商的剩余容量,面臨的風險是對常規(guī)按需實例的需求加大時,您的實例可能會被終止。

如果您的某些業(yè)務(wù)工作負載可以容忍實例隨機終止的風險,那么可使用同樣的節(jié)點標簽概念,將這些工作負載專門調(diào)度到這些類型的實例組上,從而大幅節(jié)省成本。

3、如何使用Kubernetes資源方面的建議?

Goldilocks是Fairwinds Insights用于提供工作負載效率和性能優(yōu)化的工具之一。有了Fairwinds Insights,Goldilocks可以跨多個集群部署,這樣團隊可以通過單一管理平臺獲得信息。Fairwinds Insights為Goldilocks添加了數(shù)據(jù)和建議,包括潛在的成本節(jié)約。出現(xiàn)的儀表板包括命名空間和部署列表,附有平均總成本和成本方面的建議。

許多組織將CPU和內(nèi)存請求及限制設(shè)置過高,所以當它們運用Fairwinds Insights的建議時,能夠?qū)⒏嗟膒od放在更少的Kubernetes worker節(jié)點上。啟用Cluster Autoscaler后,任何多余的節(jié)點都將在它們不使用時被刪除,這節(jié)省了時間和資金。

使用像Fairwinds Insights這樣的軟件或像Goldilocks這樣的開源工具,開發(fā)人員可以通過為自己自動建議來避免不靠譜的猜測。反過來,這讓您有機會提高集群效率和減少云開銷。

原文鏈接:https://www.cncf.io/blog/2022/10/20/kubernetes-best-practice-how-to-correctly-set-resource-requests-and-limits/

責任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2021-05-25 09:00:00

Kubernetes容器集群

2022-03-24 08:04:50

Kubernetes資源限制

2021-06-08 10:26:10

云計算云計算產(chǎn)業(yè)云應用

2022-09-01 08:50:22

kubernetes容器

2020-07-31 07:00:00

Kubernetes容器Linux

2021-03-11 14:33:28

Kubernetes開源容器

2022-12-26 07:52:33

DockerfileFROM命令

2021-03-01 19:24:13

Kubernetes備份容器

2021-05-18 08:00:00

Kubernetes容器進程

2019-05-21 10:45:44

Docker架構(gòu)容器

2022-06-21 08:03:49

RBAC 限制容器

2018-07-18 09:45:09

云服務(wù)Kubernetes實踐

2020-11-23 08:48:00

Kubernetes容器開發(fā)

2018-07-13 09:05:13

KubernetesDevOps云計算

2022-04-07 09:30:00

自動化LinodeKubernetes

2022-11-30 15:28:55

2024-01-22 12:46:00

KubernetesAPI接口

2020-03-16 08:48:18

Kubernetes容器云原生

2022-07-29 13:55:03

大數(shù)據(jù)大數(shù)據(jù)管理

2022-11-24 09:55:12

Kubernetes監(jiān)控
點贊
收藏

51CTO技術(shù)棧公眾號