前言
K8S 性能優(yōu)化系列文章,本文為第四篇:Kubernetes Node 性能優(yōu)化參數(shù)最佳實(shí)踐。
系列文章:
- 《K8S 性能優(yōu)化 - OS sysctl 調(diào)優(yōu)》
- 《K8S 性能優(yōu)化 - K8S APIServer 調(diào)優(yōu)》
- 《K8S 性能優(yōu)化 - 大型集群 CIDR 配置》
兩個(gè)參數(shù)
控制可以為 K8S Node 調(diào)度的最大 pod 數(shù)量的兩個(gè)參數(shù): podsPerCore 和 maxPods。
當(dāng)兩個(gè)參數(shù)都被設(shè)置時(shí),其中較小的值限制了節(jié)點(diǎn)上的 pod 數(shù)量。超過這些值可導(dǎo)致:
- CPU 使用率增加。
- 減慢 pod 調(diào)度的速度。
- 根據(jù)節(jié)點(diǎn)中的內(nèi)存數(shù)量,可能出現(xiàn)內(nèi)存耗盡的問題。
- 耗盡 IP 地址池。
- 資源過量使用,導(dǎo)致用戶應(yīng)用程序性能變差。
?? 重要
在 Kubernetes 中,包含單個(gè)容器的 pod 實(shí)際使用兩個(gè)容器。第二個(gè)容器用來在實(shí)際容器啟動(dòng)前設(shè)置聯(lián)網(wǎng)(pause)。因此,運(yùn)行 10 個(gè) pod 的系統(tǒng)實(shí)際上會(huì)運(yùn)行 20 個(gè)容器。
podsPerCore 根據(jù)節(jié)點(diǎn)中的處理器內(nèi)核數(shù)來設(shè)置節(jié)點(diǎn)可運(yùn)行的 pod 數(shù)量。例如:在一個(gè)有 4 個(gè)處理器內(nèi)核的節(jié)點(diǎn)上將 podsPerCore 設(shè)為 10 ,則該節(jié)點(diǎn)上允許的最大 pod 數(shù)量為 40。
kubeletConfig:
podsPerCore: 10
將 podsPerCore 設(shè)置為 0 可禁用這個(gè)限制。默認(rèn)為 0。podsPerCore 不能超過 maxPods。
maxPods 把節(jié)點(diǎn)可以運(yùn)行的 pod 數(shù)量設(shè)置為一個(gè)固定值,而不需要考慮節(jié)點(diǎn)的屬性。
kubeletConfig:
maxPods: 250
EOF
三人行, 必有我?guī)? 知識(shí)共享, 天下為公. 本文由東風(fēng)微鳴技術(shù)博客 EWhisper.cn 編寫.