无根
从 kind 0.11.0 开始,无根 Docker、无根 Podman 和 无根 nerdctl 可用作 kind 的节点提供程序。
提供程序要求 🔗︎
- Docker:20.10 或更高版本
- Podman:3.0 或更高版本
- nerdctl:1.7 或更高版本
主机要求 🔗︎
主机需要运行 cgroup v2。确保 docker info
命令的结果包含 Cgroup Version: 2
。如果它打印 Cgroup Version: 1
,请尝试将 GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=1"
添加到 /etc/default/grub
并运行 sudo update-grub
以启用 cgroup v2。
此外,根据主机配置,可能需要执行以下步骤
-
使用以下内容创建
/etc/systemd/system/user@.service.d/delegate.conf
,然后运行sudo systemctl daemon-reload
[Service] Delegate=yes
(默认情况下不启用此功能,因为 “[委托“cpu”控制器] 的运行时影响仍然过高”。请注意,更改此配置可能会影响系统性能。)
请注意
- 如果您的主机上不存在
/etc/systemd/system/user@.service.d/
目录,则需要创建它 - 如果使用 Docker 并且在执行此步骤时它已经在运行,则需要重新启动才能使更改生效
systemctl --user restart docker
- 如果您的主机上不存在
-
使用以下内容创建
/etc/modules-load.d/iptables.conf
ip6_tables ip6table_nat ip_tables iptable_nat
-
如果使用 podman,请注意,默认情况下,对可以创建的 pid 数量存在 限制。这会导致问题,例如容器内的 nginx 工作进程无法正确生成。
- 如果要禁用此限制,请编辑您的
containers.conf
文件(通常位于/etc/containers/containers.conf
中)。请注意,这可能会导致主机上出现诸如 pid 耗尽之类的问题。或者,将0
更改为所需的新的限制
[containers] pids_limit = 0
- 如果要禁用此限制,请编辑您的
限制 🔗︎
无根 Docker 的限制也适用于 kind 集群。
例如
- 除非主机使用内核 >= 5.11 或 Ubuntu/Debian 内核,否则无法使用 OverlayFS
- 无法挂载块存储
- 无法挂载 NFS
使用无根 Docker 创建 kind 集群 🔗︎
要使用无根 Docker 创建 kind 集群,只需运行
$ export DOCKER_HOST=unix://${XDG_RUNTIME_DIR}/docker.sock
$ kind create cluster
使用无根 Podman 创建 kind 集群 🔗︎
要使用无根 Podman 创建 kind 集群,只需运行
$ KIND_EXPERIMENTAL_PROVIDER=podman kind create cluster
在某些发行版上,您可能需要使用 systemd-run 将 kind 启动到其自己的 cgroup 范围
$ systemd-run --scope --user kind create cluster
使用无根 nerdctl 创建 kind 集群 🔗︎
注意:需要 containerd v1.7+
要使用 nerdctl 创建 kind 集群,只需运行
$ KIND_EXPERIMENTAL_PROVIDER=nerdctl kind create cluster
提示 🔗︎
- 要启用 OOM 监视,请通过运行
sysctl -w kernel.dmesg_restrict=0
允许dmesg
。