W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本頁(yè)概述了 Linux 和 Windows 在資源管理方式上的差異。
在 Linux 節(jié)點(diǎn)上,cgroups用作資源控制的 pod 邊界。容器是在該邊界內(nèi)創(chuàng)建的,用于網(wǎng)絡(luò)、進(jìn)程和文件系統(tǒng)隔離。Linux cgroup API 可用于收集 CPU、I/O 和內(nèi)存使用統(tǒng)計(jì)信息。
相比之下,Windows 使用帶有系統(tǒng)命名空間過(guò)濾器的每個(gè)容器的作業(yè)對(duì)象來(lái)包含容器中的所有進(jìn)程并提供與主機(jī)的邏輯隔離。(Job 對(duì)象是一種 Windows 進(jìn)程隔離機(jī)制,不同于 Kubernetes 所說(shuō)的工作)。
如果沒(méi)有適當(dāng)?shù)拿臻g過(guò)濾,就無(wú)法運(yùn)行 Windows 容器。這意味著無(wú)法在主機(jī)上下文中聲明系統(tǒng)特權(quán),因此特權(quán)容器在 Windows 上不可用。容器不能假設(shè)來(lái)自主機(jī)的身份,因?yàn)榘踩珟?hù)管理器 (SAM) 是獨(dú)立的
Windows 沒(méi)有 Linux 那樣的內(nèi)存不足進(jìn)程殺手。Windows 始終將所有用戶(hù)模式內(nèi)存分配視為虛擬的,并且頁(yè)面文件是強(qiáng)制性的。
Windows 節(jié)點(diǎn)不會(huì)為容器中運(yùn)行的進(jìn)程過(guò)度使用內(nèi)存。最終結(jié)果是 Windows 不會(huì)像 Linux 那樣達(dá)到內(nèi)存不足的情況,并且將頁(yè)面處理到磁盤(pán)而不是受到內(nèi)存不足 (OOM) 終止的影響。如果內(nèi)存過(guò)度配置并且所有物理內(nèi)存都用盡了,那么分頁(yè)會(huì)降低性能。
您可以使用 kubelet 參數(shù)?--kubelet-reserve
?和?/
?或?--system-reserve
?;限制工作負(fù)載的內(nèi)存使用。這些考慮了節(jié)點(diǎn)(容器外部)的內(nèi)存使用情況,并減少 了 NodeAllocatable。在部署工作負(fù)載時(shí),請(qǐng)?jiān)O(shè)置容器的資源限制。?NodeAllocatable
?一旦節(jié)點(diǎn)已滿(mǎn),這也會(huì)減少 并阻止調(diào)度程序添加更多 pod。
注意:當(dāng)您為 Windows 容器設(shè)置內(nèi)存資源限制時(shí),您應(yīng)該設(shè)置一個(gè)限制并且不指定內(nèi)存請(qǐng)求,或者將請(qǐng)求設(shè)置為等于該限制。
在 Windows 上,避免過(guò)度配置的良好做法是為 kubelet 配置至少 2GiB 的系統(tǒng)保留內(nèi)存,以解決 Windows、Kubernetes 和容器運(yùn)行時(shí)開(kāi)銷(xiāo)。
要考慮操作系統(tǒng)、容器運(yùn)行時(shí)和 Kubernetes 主機(jī)進(jìn)程(例如 kubelet)的 CPU 使用情況,您可以(并且應(yīng)該)保留總 CPU 的百分比。您應(yīng)該根據(jù)節(jié)點(diǎn)上可用的 CPU 內(nèi)核數(shù)來(lái)確定此 CPU 預(yù)留。要確定要保留的 CPU 百分比,請(qǐng)確定每個(gè)節(jié)點(diǎn)的最大 pod 密度并監(jiān)控在其中運(yùn)行的系統(tǒng)服務(wù)的 CPU 使用率,然后選擇一個(gè)滿(mǎn)足您的工作負(fù)載需求的值。
您可以使用 kubelet 參數(shù)限制工作負(fù)載的 CPU 使用率?--kubelet-reserve
?和?/
?或?--system-reserve
?考慮節(jié)點(diǎn)(容器外部)的 CPU 使用率。這減少了?NodeAllocatable
?。然后,集群范圍的調(diào)度程序在確定 pod 放置時(shí)會(huì)考慮此預(yù)留。
在 Windows 上,kubelet 支持命令行標(biāo)志來(lái)設(shè)置 kubelet 進(jìn)程的優(yōu)先級(jí):?--windows-priorityclass
?. 與在 Windows 主機(jī)上運(yùn)行的其他進(jìn)程相比,此標(biāo)志允許 kubelet 進(jìn)程獲得更多的 CPU 時(shí)間片。有關(guān)允許值及其含義的更多信息,請(qǐng)參閱 Windows 優(yōu)先級(jí)。為確保正在運(yùn)行的 Pod 不會(huì)餓死 kubelet 的 CPU 周期,請(qǐng)將此標(biāo)志設(shè)置為?ABOVE_NORMAL_PRIORITY_CLASS
?或更高。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: