新聞中心
5種方法讓你知道Kubernetes集群的健康狀況
作者:鐘濤翻譯 2020-04-26 10:32:58
云計(jì)算 Kubernetes是一種非常智能的技術(shù),但如果操作不當(dāng)反而弄巧成拙。正如大多數(shù)智能化技術(shù)一樣,它的智能程度取決于操作者。為了建立成功的Kubernetes團(tuán)隊(duì),了解Kubernetes的健康狀況至關(guān)重要。這里有五種方法,可以讓工程師很好的識(shí)別出集群的潛在健康風(fēng)險(xiǎn)。

創(chuàng)新互聯(lián)公司服務(wù)緊隨時(shí)代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十載的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計(jì)師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對(duì)網(wǎng)站進(jìn)行成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對(duì)外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。
Kubernetes是一種非常智能的技術(shù),但如果操作不當(dāng)反而弄巧成拙。正如大多數(shù)智能化技術(shù)一樣,它的智能程度取決于操作者。為了建立成功的Kubernetes團(tuán)隊(duì),了解Kubernetes的健康狀況至關(guān)重要。這里有五種方法,可以讓工程師很好的識(shí)別出集群的潛在健康風(fēng)險(xiǎn)。
幸運(yùn)的是,有一些現(xiàn)成的技術(shù)可以用來收集Kubernetes集群的日志、各種指標(biāo)數(shù)據(jù)、事件和安全威脅,以幫助監(jiān)視集群的健康狀況。這些收集器從Kubernetes集群的各個(gè)部分收集數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行整合,從而生成可視化的高級(jí)視圖,并實(shí)時(shí)了解資源利用率,發(fā)現(xiàn)錯(cuò)誤的配置和其他問題。
為所有的Pod設(shè)置CPU的使用上下限
在Kubernetes集群中,Pod的調(diào)度機(jī)制依賴于requests和limits這兩個(gè)參數(shù)。我們可以為CPU和內(nèi)存設(shè)置requests和limits。對(duì)于CPU,它的單位是millicores,1000m等于一個(gè)CPU核。requests是你認(rèn)為容器至少需要多少CPU和內(nèi)存,而limits則是允許容器使用的實(shí)際上限。
確保為所有的Pod設(shè)置了CPU requests。最佳實(shí)踐是將其設(shè)置為一個(gè)CPU核或更少,如果需要更多的計(jì)算能力,則添加額外的Pod副本。需要注意的是,如果你的CPU requests過高,比如2000m,但是你只有1個(gè)CPU核可用,那么這個(gè)Pod將永遠(yuǎn)不會(huì)被調(diào)度到Kubernetes集群中。在第5點(diǎn)中,我將向你展示如何檢查未被調(diào)度的Pod。
確保為所有的Pod設(shè)置了CPU limits。如上所述,這個(gè)參數(shù)限制了Pod使用CPU的上限,因此Kubernetes將不允許Pod使用比limits中定義的更多的CPU。也就是說,CPU是比較寬容的,因?yàn)樗徽J(rèn)為是一種可壓縮資源。如果你的Pod達(dá)到了CPU limits,它不會(huì)被終止,而是被節(jié)流,因此可能會(huì)出現(xiàn)性能下降。
為所有的Pod設(shè)置內(nèi)存的使用上下限
確保為所有的Pod設(shè)置了memory requests:memory requests是你認(rèn)為容器至少需要多少內(nèi)存。像CPU一樣,如果Pod的memory requests大于集群可以提供的內(nèi)存,Kubernetes不會(huì)將Pod調(diào)度到Kubernetes集群中。
確保為所有的Pod設(shè)置了memory limits: memory limit是允許Pod使用內(nèi)存的上限。與CPU不同,內(nèi)存是不可壓縮的,也不能進(jìn)行節(jié)流。如果容器超過了它的內(nèi)存限制,那么它將被終止。
審計(jì)資源配置
檢查Kubernetes是否有不足或過剩的資源。如果Kubernetes集群中有剩余的可用CPU和內(nèi)存,那么集群就處于消耗狀態(tài),并且消耗可能會(huì)持續(xù)增長(zhǎng)。另一方面,如果CPU和內(nèi)存的利用率接近100%,那么當(dāng)集群需要水平擴(kuò)展或有大量請(qǐng)求到來時(shí),集群可能會(huì)遇到問題。
檢查Pod的剩余容量,在Kubernetes中有一個(gè)指標(biāo)數(shù)據(jù)“kube_node_status_allocatable”,這是Kubernetes在給定平均Pod資源利用率的情況下,對(duì)一個(gè)節(jié)點(diǎn)能容納多少個(gè)Pod的估計(jì)。我們可以把剩余的Pod容量加起來,粗略地估計(jì)一下我們能在不遇到問題的情況下,集群還能擴(kuò)大多少。
檢查CPU總百分比使用率,CPU requests百分比使用率,CPU limits百分比使用率:CPU總百分比使用率可以告訴你現(xiàn)在使用了多少。CPU requests百分比使用率可以告訴你應(yīng)該需要多少。CPU limits百分比使用率限制了你可以使用多少。
在下面的例子中,我們只使用了可用計(jì)算能力的2.5%。我們的剩余資源過多。相比之下,我們定義的CPU requests是46%,所以我們認(rèn)為Pod需要的比Pod實(shí)際使用的多得多。我們的預(yù)估不夠準(zhǔn)確。
最后,我們的CPU limits總和是37%。由于這低于我們的CPU requests,這是一個(gè)錯(cuò)誤的配置,我們需要重新檢查我們的CPU limits。
檢查內(nèi)存的百分比使用率、memory requests百分比使用率,memory limits百分比使用率。就像CPU一樣,查看是否有過多的剩余資源。只有3.8%的使用率告訴我們,我們確實(shí)資源過剩,但我們可以安全的進(jìn)行水平擴(kuò)展。
檢查節(jié)點(diǎn)間的Pod分布
當(dāng)我們查看Pod在集群中的分布情況時(shí),我們希望得到一個(gè)大致均勻的分布。如果某些節(jié)點(diǎn)完全超載或負(fù)載不足,這可能是一個(gè)值得深入研究的問題。
以下是可能導(dǎo)致分布不均勻的一些事項(xiàng):
- Node affinity,親和性是一種Pod設(shè)置,它使Pod更喜歡具有某些屬性的節(jié)點(diǎn)。例如,Pod可能需要在附加了GPU或SSD的節(jié)點(diǎn)上運(yùn)行,或者Pod可能需要具有特定安全隔離或策略的節(jié)點(diǎn)。檢查親和性設(shè)置可以幫助分析不均勻分布的原因,并減少可能出現(xiàn)的問題。
Taints and tolerations,污點(diǎn)是親和性的反義詞。Pod不太喜歡被分配到這些被“污染”的節(jié)點(diǎn)上。如果你希望為特定的Pod保留節(jié)點(diǎn),或者確保該節(jié)點(diǎn)上的Pod可以完全訪問可用資源,那么可以使用此方法。
Limits and requests,查看limit和request的設(shè)置。這常常是Pod分布不均勻的原因,因此值得在本節(jié)的三個(gè)部分中提及。如果Kubernetes調(diào)度程序沒有Pod需要什么的正確信息,那么調(diào)度程序在調(diào)度方面就會(huì)做得很差。
檢查Pod是否處于不良狀態(tài)
在Kubernetes環(huán)境中,Pod的狀態(tài)時(shí)刻在變化,所以過度關(guān)注每一個(gè)被終止的Pod將會(huì)慢慢吞噬你的時(shí)間和理智。但是,下面的列表值得你關(guān)注,以確保達(dá)到期望的集群狀態(tài)。
- Nodes not ready:節(jié)點(diǎn)可能由許多原因而陷入這種狀態(tài),但通常是因?yàn)閮?nèi)存或磁盤空間不足。
- Unscheduled pods:Pod通常以未調(diào)度狀態(tài)結(jié)束,由于調(diào)度程序無(wú)法滿足Pod所需要的CPU或內(nèi)存請(qǐng)求。檢查集群是否擁有足夠的可用資源。
- Pods that failed to create:Pod在創(chuàng)建時(shí)失敗,這通常是由于在Pod的啟動(dòng)腳本中缺少某些依賴項(xiàng)之類的鏡像導(dǎo)致的。在這種情況下,回到起點(diǎn),反復(fù)檢查Pod的各種參數(shù)配置。
Container restarts:一些容器重新啟動(dòng)不值得關(guān)注,但是看到很多這樣的情況,可能意味著Pod處于OOMKill(內(nèi)存耗盡)狀態(tài)。內(nèi)存不足是Kubernetes集群中最常見的錯(cuò)誤之一,可能是由鏡像問題、下游依賴項(xiàng)問題或各種意外、限制和請(qǐng)求問題引起的。
這些集群健康最佳實(shí)踐可以限制Kubernetes集群出現(xiàn)意外情況,并確保集群在擴(kuò)展時(shí)不會(huì)遇到問題。還為你提供了一個(gè)很好的起點(diǎn),以幫助你回答那些無(wú)定形的問題,如“我的Kubernetes集群是否健康?” 如果所有這些檢查點(diǎn)都是綠色的,那么你的集群可能處于健康狀態(tài),你可以高枕無(wú)憂了。
名稱欄目:5種方法讓你知道Kubernetes集群的健康狀況
標(biāo)題網(wǎng)址:http://m.fisionsoft.com.cn/article/dhsdddh.html


咨詢
建站咨詢
