K3s 非常輕巧,但有一些最低要求,如下所述。
無論您是將 K3s 集群配置為在 Docker 還是 Kubernetes 設置中運行,運行 K3s 的每個節(jié)點都應該滿足以下最低要求。你可能需要更多的資源來滿足你的需求。
-兩個節(jié)點不能有相同的主機名。如果您的所有節(jié)點都有相同的主機名,請使用?--with-node-id
?選項為每個節(jié)點添加一個隨機后綴,或者為您添加到集群的每個節(jié)點設計一個獨特的名稱,用?--node-name
?或?$K3S_NODE_NAME
?傳遞。
K3s 有望在大多數(shù)現(xiàn)代 Linux 系統(tǒng)上運行。
有些操作系統(tǒng)有特定要求:
關于 Rancher 管理的 K3s 集群測試了哪些操作系統(tǒng)的更多信息,請參考Rancher 支持和維護條款。
硬件要求根據(jù)您部署的規(guī)模而變化。這里列出了最低建議。
本節(jié) 的測試結果是為了確定 K3s agent、具有工作負載的 K3s server 和具有一個 agent 的 K3s server 的最低資源要求。它還包含了有關對 K3s server 和 agent 利用率產(chǎn)生最大影響的分析,以及如何保護集群數(shù)據(jù)存儲免受 agent 和工作負載的干擾。
K3s 的性能取決于數(shù)據(jù)庫的性能。為了確保最佳速度,我們建議盡可能使用 SSD。在使用 SD 卡或 eMMC 的 ARM 設備上,磁盤性能會有所不同。
K3s server 需要 6443 端口才能被所有節(jié)點訪問。
當使用 Flannel VXLAN 時,節(jié)點需要能夠通過 UDP 端口 8472 訪問其他節(jié)點,或者當使用 Flannel Wireguard 后端時,節(jié)點需要能夠通過 UDP 端口 51820 和 51821(使用 IPv6 時)訪問其他節(jié)點。該節(jié)點不應偵聽任何其他端口。 K3s 使用反向隧道,以便節(jié)點與服務器建立出站連接,并且所有 kubelet 流量都通過該隧道運行。但是,如果你不使用 Flannel 并提供自己的自定義 CNI,那么 K3s 不需要 Flannel 所需的端口。
如果要使用?metrics server
?,則需要在每個節(jié)點上打開端口 10250 端口。
如果計劃使用嵌入式 etcd 實現(xiàn)高可用性,則 server 節(jié)點必須在端口 2379 和 2380 上可以相互訪問。
重要
節(jié)點上的 VXLAN 端口不應公開暴露,因為它公開了集群網(wǎng)絡,任何人都可以訪問它。應在禁止訪問端口 8472 的防火墻/安全組后面運行節(jié)點。
警告: Flannel 依靠 Bridge CNI plugin 來創(chuàng)建一個可以交換流量的 L2 網(wǎng)絡。具有 NET_RAW 功能的 Rogue pod 可以濫用該 L2 網(wǎng)絡來發(fā)動攻擊,如 ARP 欺騙。因此,正如 kubernetes 文檔中記載的那樣,請設置一個受限配置文件,在不可信任的 pod 上禁用 NET_RAW。
K3s Server 節(jié)點的入站規(guī)則如下:
協(xié)議 | 端口 | 源 | 描述 |
---|---|---|---|
TCP | 6443 | K3s agent 節(jié)點 | Kubernetes API Server |
UDP | 8472 | K3s server 和 agent 節(jié)點 | 僅對 Flannel VXLAN 需要 |
UDP | 51820 | K3s server 和 agent 節(jié)點 | 只有 Flannel Wireguard 后端需要 |
UDP | 51821 | K3s server 和 agent 節(jié)點 | 只有使用 IPv6 的 Flannel Wireguard 后端才需要 |
TCP | 10250 | K3s server 和 agent 節(jié)點 | Kubelet metrics |
TCP | 2379-2380 | K3s server 節(jié)點 | 只有嵌入式 etcd 高可用才需要 |
通常情況下,所有出站流量都是允許的。
硬件要求取決于您的 K3s 集群的大小。對于生產(chǎn)和大型集群,我們建議使用具有外部數(shù)據(jù)庫的高可用性設置。對于生產(chǎn)中的外部數(shù)據(jù)庫,建議使用以下選項:
以下是高可用 K3s server 中節(jié)點的最低 CPU 和內存要求:
部署規(guī)模 | 節(jié)點 | VCPUS | 內存 |
---|---|---|---|
Small | Up to 10 | 2 | 4 GB |
Medium | Up to 100 | 4 | 8 GB |
Large | Up to 250 | 8 | 16 GB |
X-Large | Up to 500 | 16 | 32 GB |
XX-Large | 500+ | 32 | 64 GB |
集群性能取決于數(shù)據(jù)庫性能。為了確保最佳的讀寫速度,我們建議始終使用 SSD 磁盤來支持你的 K3s 集群。在云提供商上,您還需要使用允許最大 IOPS 的最小 size。
你應該考慮增加集群 CIDR 的子網(wǎng)大小,以免 Pod 的 IP 耗盡。你可以通過在啟動時向 K3s 服務器傳遞?--cluster-cidr
?選項來實現(xiàn)。
K3s 支持不同的數(shù)據(jù)庫,包括 MySQL、PostgreSQL、MariaDB 和 etcd,以下是運行大型集群所需的數(shù)據(jù)庫資源的大小指南:
部署規(guī)模 | 節(jié)點 | VCPUS | 內存 |
---|---|---|---|
Small | Up to 10 | 1 | 2 GB |
Medium | Up to 100 | 2 | 8 GB |
Large | Up to 250 | 4 | 16 GB |
X-Large | Up to 500 | 8 | 32 GB |
XX-Large | 500+ | 16 | 64 GB |
更多建議: