|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
要求
K3s 非常轻量,但有一些最低要求,如下所述。
无论您是将 K3s 配置为在容器中运行还是作为本地 Linux 服务,每个运行 K3s 的节点都应满足以下最低要求。这些要求是 K3s 及其打包组件的基础,不包括工作负载本身消耗的资源。
先决条件
两个节点不能有相同的主机名。
如果多个节点将具有相同的主机名,或者如果主机名可能被自动配置系统重复使用,请使用 --with-node-id 选项为每个节点附加一个随机后缀,或为您添加到集群的每个节点设计一个唯一名称,并通过 --node-name 或 $K3S_NODE_NAME 传递。
体系结构
K3s 可用于以下架构:
-
x86_64
-
armhf
-
arm64/aarch64
|
ARM64 页面大小
在 2023 年 5 月之前的版本(v1.24.14+k3s1、v1.25.10+k3s1、v1.26.5+k3s1、v1.27.2+k3s1)中,在 |
操作系统
K3s 预计可以在大多数现代 Linux 系统上运行。
某些操作系统有额外的设置要求:
- SUSE Linux Enterprise / openSUSE
-
Firewalld
建议关闭 firewalld:
systemctl disable firewalld --now如果您希望保持 firewalld 启用,默认情况下,需要以下规则:
firewall-cmd --permanent --add-port=6443/tcp #apiserver firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services firewall-cmd --reload根据您的设置,可能需要打开其他端口。有关更多信息,请参见 入站规则。如果您更改了 pods 或服务的默认 CIDR,则需要相应地更新防火墙规则。
- Red Hat Enterprise Linux / CentOS / Fedora
-
RHEL 10
在 RHEL 10 上,需要额外的软件包:
sudo dnf install -y kernel-modules-extraFirewalld
建议关闭 firewalld:
systemctl disable firewalld --now如果您希望保持 firewalld 启用,默认情况下,需要以下规则:
firewall-cmd --permanent --add-port=6443/tcp #apiserver firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services firewall-cmd --reload根据您的设置,可能需要打开其他端口。有关更多信息,请参见 入站规则。如果您更改了 pods 或服务的默认 CIDR,则需要相应地更新防火墙规则。
旧版 RHEL/CentOSRHEL 8.4 之前的操作系统版本携带一个已知的 NetworkManager 错误,这会干扰 K3s 网络。如果使用旧版,必须禁用 nm-cloud-setup 并重启节点:
systemctl disable nm-cloud-setup.service nm-cloud-setup.timer reboot - Ubuntu / Debian
- 树莓派
-
树莓派操作系统基于Debian,可能会受到已知的iptables错误的影响。请参见已知问题。
Cgroups
标准树莓派操作系统安装不会以`cgroups`启用。K3S需要`cgroups`来启动systemd服务。
cgroups`可以通过将`cgroup_memory=1 cgroup_enable=memory`附加到/boot/firmware/cmdline.txt`来启用。在Debian 11及更早的树莓派操作系统版本中,cmdline.txt位于`/boot/cmdline.txt`。
示例cmdline.txt:
console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory
Ubuntu VXLAN 模块
在Ubuntu 21.10到Ubuntu 23.10之间,树莓派的vxlan支持被移入一个单独的内核模块。此步骤在 Ubuntu 24.04 及更高版本中不是必需的。
sudo apt install linux-modules-extra-raspi
有关测试过的操作系统与 Rancher 管理的 K3s 集群的信息,请参阅 Rancher 支持和维护条款。
硬件
硬件要求根据您的部署规模而变化。最低要求如下:
| 节点 | CPU | RAM |
|---|---|---|
服务器 |
2 个内核 |
2 GB |
代理 |
1 个内核 |
512 MB |
资源分析 捕获测试和分析的结果,以确定 K3s 代理、带工作负载的 K3s 服务器以及带有一个代理的 K3s 服务器的最低资源要求。
磁盘
K3s 的性能取决于数据库的性能。为了确保最佳速度,我们建议尽可能使用 SSD。
如果在 Raspberry Pi 或其他 ARM 设备上部署 K3s,建议使用外部 SSD。etcd 的写入密集;SD 卡和 eMMC 无法承受 IO 负载。
服务器规模指南
当服务器(控制平面 + etcd)节点的处理器和 RAM 受限时,标准工作负载条件下加入的代理节点数量会受到限制。
| 服务器 处理器 | 服务器 RAM | 代理数量 |
|---|---|---|
2 |
4 GB |
0-350 |
4 |
8 GB |
351-900 |
8 |
16 GB |
901-1800 |
16+ |
32 GB |
1800+ |
|
高可用性规模
在使用 3 个服务器节点的高可用性设置时,代理的数量可以大约扩展 ~50% 超过上述表格。例如,3 个服务器具有 4 个 vCPU/8 GB 可以扩展到 ~1200 个代理。 |
建议以 50 个或更少的批次加入代理节点,以便处理器释放空间,因为节点加入时会出现峰值。如果希望超过 255 个节点,请记得修改默认 cluster-cidr!
资源分析 包含了更多关于这些建议是如何得出的信息。
网络
K3s 服务器需要所有节点都能访问 6443 端口。
在使用 Flannel VXLAN 后端时,节点需要能够通过 UDP 端口 8472 访问其他节点,或者在使用 Flannel WireGuard 后端时,通过 UDP 端口 51820(如果使用 IPv6,则为 51821)访问。节点不应在任何其他端口上侦听。K3s 使用反向隧道,使得节点与服务器之间建立出站连接,所有 kubelet 流量都通过该隧道传输。然而,如果您不使用 Flannel 并提供自己的自定义 CNI,则 K3s 不需要 Flannel 所需的端口。
如果您希望使用指标服务器,则所有节点必须在 10250 端口上彼此可访问。
如果您计划通过嵌入式 etcd 实现高可用性,则服务器节点必须在 2379 和 2380 端口上彼此可访问。
|
重要说明
节点上的 VXLAN 端口不应暴露给外部,因为这会使您的集群网络被任何人访问。在防火墙/安全组后运行您的节点,禁用对 8472 端口的访问。 |
|
Flannel 依赖于 桥接 CNI 插件 来创建一个切换流量的 L2 网络。具有 |
K3s 节点的入站规则
| 协议 | 端口 | 源 | 目标 | 说明 |
|---|---|---|---|---|
TCP |
2379-2380 |
服务器 |
服务器 |
仅在使用嵌入式 etcd 时需要 |
TCP |
6443 |
代理 |
服务器 |
K3s 监视器和 Kubernetes API 服务器 |
UDP |
8472 |
所有节点 |
所有节点 |
仅在使用 Flannel VXLAN 时需要 |
TCP |
10250 |
所有节点 |
所有节点 |
Kubelet 指标 |
UDP |
51820 |
所有节点 |
所有节点 |
仅在使用 IPv4 的 Flannel WireGuard 时需要 |
UDP |
51821 |
所有节点 |
所有节点 |
仅在使用 IPv6 的 Flannel WireGuard 时需要 |
TCP |
5001 |
所有节点 |
所有节点 |
仅在嵌入式分布式注册表(Spegel)中需要 |
TCP |
6443 |
所有节点 |
所有节点 |
仅在嵌入式分布式注册表(Spegel)中需要 |
通常,所有出站流量都是允许的。
根据使用的操作系统,可能需要对防火墙进行额外更改。
大型集群
硬件要求基于您的 K3s 集群的大小。对于生产和大型集群,我们建议使用高可用性设置和外部数据库。以下选项建议用于生产中的外部数据库:
-
MySQL
-
PostgreSQL
-
etcd
处理器和内存
以下是高可用性 K3s 服务器中节点的最低处理器和内存要求:
| 部署规模 | 节点 | vCPUs | RAM |
|---|---|---|---|
小型 |
最多 10 |
2 |
4 GB |
中 |
最多 100 |
4 |
8 GB |
大型 |
最多 250 |
8 |
16 GB |
超大号 |
最多 500 |
16 |
32 GB |
XX-Large |
500+ |
32 |
64 GB |
数据库
K3s支持包括MySQL、PostgreSQL、MariaDB和etcd在内的不同数据库。 有关更多信息,请参见集群数据存储。
以下是运行大型集群所需数据库资源的大小指南:
| 部署规模 | 节点 | vCPUs | RAM |
|---|---|---|---|
小型 |
最多 10 |
1 |
2 GB |
中 |
最多 100 |
2 |
8 GB |
大型 |
最多 250 |
4 |
16 GB |
超大 |
最多 500 |
8 |
32 GB |
超超大 |
500+ |
16 |
64 GB |