要求
RKE2 非常轻量,但有一些最低要求,如下所述。
先决条件
两个 RKE2 节点不能有相同的节点名称。默认情况下,节点名称取自机器的主机名。
如果您的两台或更多机器有相同的主机名,您必须执行以下操作之一:
-
将主机名更新为唯一值。
-
在配置文件中将
node-name参数设置为唯一值。 -
在配置文件中将
with-node-id参数设置为true,以将随机生成的 ID 号附加到主机名。
如果控制平面节点之间的往返时间 (RTT) 超过 2ms,请参考以下 指南。
操作系统
Linux
请参阅 RKE2 支持矩阵,了解所有已通过 RKE2 验证的操作系统版本。一般来说,RKE2 应该可以在任何使用 systemd 和 iptables 的 Linux 发行套件上运行。
Windows
|
Windows 支持要求选择 Calico 或 Flannel 作为 RKE2 集群的 CNI。 |
|
需要启用 Windows Server 容器功能,以使 RKE2 Windows 代理正常工作。 |
RKE2 Windows 节点(工作节点)代理已在以下操作系统及其后续非主要版本上进行了测试和验证:
-
Windows Server 2019 LTSC (amd64) (操作系统版本 17763.2061)
-
Windows Server 2022 LTSC (amd64) (操作系统版本 20348.169)
打开一个具有管理员权限的新 Powershell 窗口。
powershell -Command "Start-Process PowerShell -Verb RunAs"
在新的 Powershell 窗口中,运行以下命令。
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All
这将需要重启以使 Containers 功能正常运行。
硬件
硬件要求根据您的部署规模而变化。最低推荐配置在此列出。
虚拟机规格指南
当控制平面 + etcd 节点的处理器和 RAM 受限时,标准工作负载条件下可以加入的代理节点数量可能会受到限制。
| 服务器 处理器 | 服务器 RAM | 代理数量 |
|---|---|---|
2 |
4 GB |
0-225 |
4 |
8 GB |
226-450 |
8 |
16 GB |
451-1300 |
16+ |
32 GB |
1300+ |
建议以 50 个或更少的批次加入代理节点,以便处理器释放空间,因为节点加入时会出现峰值。如果希望超过 255 个节点,请记得修改默认 cluster-cidr!
这些数据是在特定测试条件下检索的。这将根据环境和工作负载而有所不同。以下步骤概述了为检索此数据而进行的测试。最后一次在 v1.27.4+rke2r1 上执行。所有机器均在 AWS 中配置,使用标准的 20 GiB gp3 卷。
-
使用 prometheus 数据源在 grafana 上监控资源。
-
以模拟持续集群活动的方式部署工作负载:
-
一个基本的工作负载,持续地扩展和缩减
-
一个在循环中被删除和重新创建的工作负载
-
一个包含多个其他资源(包括 CRD)的恒定工作负载。
-
-
以每次 30-50 个的批次加入代理节点。
Kernel Parameters
Some workloads particularly those that run many pods or watch large numbers of files, such as GPU operator validators can exhaust a node’s default inotify limits. When this happens, pods fail to start with an error like:
failed to create fsnotify watcher: too many open files
If you encounter this, raise the inotify limits on the affected nodes:
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 524288
To persist the change across reboots, write it to /etc/sysctl.d/99-inotify.conf and apply it with:
sudo sysctl --system
网络
|
如果您的节点安装并启用了 NetworkManager,请确保其配置为忽略 CNI 管理的接口。如果您的节点安装并启用了 Wicked,请确保转发 sysctl 配置已启用。 |
RKE2 服务器需要端口 6443 和 9345 可被集群中的其他节点访问。
当使用 Flannel VXLAN 时,所有节点需要能够通过 UDP 端口 8472 访问其他节点。
如果您希望使用指标服务器,您需要在每个节点上打开端口 10250。
|
节点上的 VXLAN 端口不应暴露给外部,因为这会使您的集群网络被任何人访问。在防火墙/安全组后运行您的节点,禁用对 8472 端口的访问。 |
入站网络规则
| 端口 | 协议 | 源 | 目标 | 说明 |
|---|---|---|---|---|
6443 |
TCP |
所有 RKE2 节点 |
RKE2 服务器节点 |
Kubernetes API |
9345 |
TCP |
所有 RKE2 节点 |
RKE2 服务器节点 |
RKE2 监控 API |
10250 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
kubelet 指标 |
2379 |
TCP |
RKE2 服务器节点 |
RKE2 服务器节点 |
etcd 客户端端口 |
2380 |
TCP |
RKE2 服务器节点 |
RKE2 服务器节点 |
etcd 对等端口 |
2381 |
TCP |
RKE2 服务器节点 |
RKE2 服务器节点 |
etcd 指标端口 |
30000-32767 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
NodePort 端口范围 |
CNI 特定的入站网络规则
-
Canal
-
Cilium
-
Calico
-
Flannel
| 端口 | 协议 | 源 | 目标 | 说明 |
|---|---|---|---|---|
8472 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 VXLAN 的 Canal CNI |
9099 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
Canal CNI 健康检查 |
51820 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 WireGuard IPv4 的 Canal CNI |
51821 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 WireGuard IPv6/双栈的 Canal CNI |
| 端口 | 协议 | 源 | 目标 | 说明 |
|---|---|---|---|---|
0, 8 * |
ICMP |
所有 RKE2 节点 |
所有 RKE2 节点 |
Cilium CNI 健康检查 |
4240 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
Cilium CNI 健康检查 |
8472 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 VXLAN 的 Cilium CNI |
51871 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 WireGuard 的 Cilium CNI |
|
|
| 端口 | 协议 | 源 | 目标 | 说明 |
|---|---|---|---|---|
179 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 BGP 的 Calico CNI |
4789 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 VXLAN 的 Calico CNI |
5473 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 Typha 的 Calico CNI |
9098 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
Calico Typha 健康检查 |
9099 |
TCP |
所有 RKE2 节点 |
所有 RKE2 节点 |
Calico 健康检查 |
| 端口 | 协议 | 源 | 目标 | 说明 |
|---|---|---|---|---|
4789 |
UDP |
所有 RKE2 节点 |
所有 RKE2 节点 |
使用 VXLAN 的 Flannel CNI |