本節(jié)介紹了為確定 K3s 的最低資源需求,而進(jìn)行的測(cè)試結(jié)果。
結(jié)果概述如下:
組件 | 處理器 | 最小 CPU | Kine/SQLite 的最小內(nèi)存 | 嵌入式 ETCD 的最小內(nèi)存 |
---|---|---|---|---|
具有工作負(fù)載的 K3s server | Intel(R) Xeon(R) Platinum 8124M CPU, 3.00 GHz | 10% of a core | 768 M | 896 M |
具有單個(gè) agent 的 K3s 集群 | Intel(R) Xeon(R) Platinum 8124M CPU, 3.00 GHz | 10% of a core | 512 M | 768 M |
K3s agent | Intel(R) Xeon(R) Platinum 8124M CPU, 3.00 GHz | 5% of a core | 256 M | 256 M |
具有工作負(fù)載的 K3s server | Pi4B BCM2711, 1.50 GHz | 20% of a core | 768 M | 896 M |
具有單個(gè) agent 的 K3s 集群 | Pi4B BCM2711, 1.50 GHz | 20% of a core | 512 M | 768 M |
K3s agent | Pi4B BCM2711, 1.50 GHz | 10% of a core | 256 M | 256 M |
資源測(cè)試的目的是為了解決以下問(wèn)題:
測(cè)試的組件有:
這些是一個(gè)穩(wěn)定系統(tǒng)的基準(zhǔn)數(shù)據(jù),只使用 K3s 打包的組件(Traefik Ingress,Klipper lb,local-path 存儲(chǔ)),運(yùn)行一個(gè)標(biāo)準(zhǔn)的監(jiān)控棧(Prometheus 和 Grafana)和 Guestbook 示例應(yīng)用程序。
包括 IOPS 在內(nèi)的資源僅適用于 Kubernetes 數(shù)據(jù)存儲(chǔ)和控制平面,不包括系統(tǒng)級(jí)管理 agent 或日志記錄、容器鏡像管理或任何特定工作負(fù)載要求的開(kāi)銷(xiāo)。
使用獨(dú)立的 Prometheus v2.21.0 實(shí)例,通過(guò) apt 安裝的?prometheus-node-exporter
?來(lái)收集主機(jī) CPU、內(nèi)存和磁盤(pán) IO 統(tǒng)計(jì)數(shù)據(jù)。
?systemd-cgtop
?用于抽查 systemd cgroup 級(jí)別的 CPU 和內(nèi)存利用率。?system.slice/k3s.service
?跟蹤 K3s 和 containerd 的資源利用率情況,而單個(gè) pod 則在?kubepods
?層次結(jié)構(gòu)下。
使用集成到 server 和 agent 進(jìn)程中的 kubelet exporter,從 ?process_resident_memory_bytes
?和 ?go_memstats_alloc_bytes
?指標(biāo)中收集了額外的詳細(xì) K3s 內(nèi)存利用率數(shù)據(jù)。
OS: Ubuntu 20.04 x86_64, aarch64
硬件:
本節(jié)捕獲了確定 K3s agent、帶工作負(fù)載的 K3s server 和帶一個(gè) agent 的 K3s server 的最低資源需求的測(cè)試結(jié)果。
這些是對(duì)單節(jié)點(diǎn)集群的要求,其中 K3s server 與工作負(fù)載共享資源。
對(duì) CPU 的要求是:
所需資源 | 測(cè)試處理器 |
---|---|
10% of a core | Intel(R) Xeon(R) Platinum 8124M CPU, 3.00 GHz |
20% of a core | Low-power processor such as Pi4B BCM2711, 1.50 GHz |
IOPS 和內(nèi)存的要求是:
測(cè)試數(shù)據(jù)存儲(chǔ) | IOPS | KiB/sec | 延時(shí) | RAM |
---|---|---|---|---|
Kine/SQLite | 10 | 500 | < 10 ms | 768 M |
Embedded etcd | 50 | 250 | < 5 ms | 896 M |
這些是 K3s 集群的基本要求,它有一個(gè) K3s server 節(jié)點(diǎn)和一個(gè) K3s agent,但沒(méi)有工作負(fù)載。
對(duì) CPU 的要求是:
所需資源 | 測(cè)試處理器 |
---|---|
10% of a core | Intel(R) Xeon(R) Platinum 8124M CPU, 3.00 GHz |
20% of a core | Pi4B BCM2711, 1.50 GHz |
IOPS 和內(nèi)存的要求是:
測(cè)試數(shù)據(jù)存儲(chǔ) | IOPS | KiB/sec | 延時(shí) | RAM |
---|---|---|---|---|
Kine/SQLite | 10 | 500 | < 10 ms | 512 M |
Embedded etcd | 50 | 250 | < 5 ms | 768 M |
對(duì) CPU 的要求是:
所需資源 | 測(cè)試處理器 |
---|---|
5% of a core | Intel(R) Xeon(R) Platinum 8124M CPU, 3.00 GHz |
10% of a core | Pi4B BCM2711, 1.50 GHz |
需要 256M 的內(nèi)存。
本節(jié)介紹了對(duì) K3s server 和 agent 利用率產(chǎn)生最大影響的因素,以及如何保護(hù)集群數(shù)據(jù)存儲(chǔ)免受 agent 和工作負(fù)載的干擾。
K3s server 的利用率數(shù)據(jù)主要是由支持 Kubernetes 數(shù)據(jù)存儲(chǔ)(kine 或 etcd)、API Server、Controller-Manager 和 Scheduler 控制,以及實(shí)現(xiàn)系統(tǒng)狀態(tài)變化所需的任何管理任務(wù)所驅(qū)動(dòng)。給 Kubernetes 控制平面帶來(lái)額外負(fù)載的操作,如創(chuàng)建/修改/刪除資源,將導(dǎo)致暫時(shí)的利用率上升。使用大量使用 Kubernetes 數(shù)據(jù)存儲(chǔ)的 operators 或應(yīng)用程序(如 Rancher 或其他 operators 類(lèi)型的應(yīng)用程序)將增加 server 的資源需求。通過(guò)添加額外的節(jié)點(diǎn)或創(chuàng)建許多集群資源來(lái)擴(kuò)展集群,將增加 server 的資源需求。
K3s agent 的利用率數(shù)據(jù)主要是由支持容器生命周期管理控制驅(qū)動(dòng)的。涉及管理鏡像、提供存儲(chǔ)或創(chuàng)建/銷(xiāo)毀容器的操作將導(dǎo)致利用率的暫時(shí)上升。拉取鏡像通常會(huì)影響 CPU 和 IO,因?yàn)樗鼈兩婕皩㈢R像內(nèi)容解壓到磁盤(pán)。如果可能的話(huà),工作負(fù)載存儲(chǔ)(pod 臨時(shí)存儲(chǔ)和卷)應(yīng)該與 agent 組件(/var/lib/rancher/k3s/agent)隔離,以確保不會(huì)出現(xiàn)資源沖突。
在 server 節(jié)點(diǎn)運(yùn)行工作負(fù)載 pod 時(shí),應(yīng)確保 agent 和工作負(fù)載 IOPS 不干擾數(shù)據(jù)存儲(chǔ)。
最好的辦法是將 server 組件(/var/lib/rancher/k3s/server)與 agent 組件(/var/lib/rancher/k3s/agent)放在不同的存儲(chǔ)介質(zhì)上,后者包括 containerd 鏡像存儲(chǔ)。
工作負(fù)載存儲(chǔ)(pod 臨時(shí)存儲(chǔ)和卷)也應(yīng)該與數(shù)據(jù)存儲(chǔ)隔離。
如果不能滿(mǎn)足數(shù)據(jù)存儲(chǔ)的吞吐量和延遲要求,可能會(huì)導(dǎo)致控制平面的延遲響應(yīng)或控制平面無(wú)法維持系統(tǒng)狀態(tài)。
更多建議: