You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CI容器中通过Podman运行KIND集群?

解决容器内运行kind create cluster的cgroup v2错误问题

核心问题分析

你遇到的错误是因为rootless模式下运行KIND必须依赖cgroup v2环境,而默认的容器环境(包括基于quay.io/podman/stable构建的镜像)未满足这个条件,同时宿主机的cgroup配置也会直接影响容器内的可用环境。

分步解决方案

1. 确保宿主机启用cgroup v2

容器的cgroup版本继承自宿主机,先确认并配置宿主机:

  • 检查当前cgroup版本:
    stat -fc %T /sys/fs/cgroup/
    
    输出cgroup2fs即为v2;若输出tmpfs则为v1。
  • 若宿主机是v1,需添加启动参数systemd.unified_cgroup_hierarchy=1(不同发行版配置位置不同,例如在/etc/default/grub的GRUB_CMDLINE_LINUX中添加后,执行grub2-mkconfig -o /boot/grub2/grub.cfg并重启)。

2. 修改Dockerfile,适配rootless运行

调整镜像安装rootless运行所需依赖,并配置普通用户环境:

FROM quay.io/podman/stable:latest

# 安装rootless容器运行必备依赖
RUN yum update -y && yum install -y golang openssl uidmap slirp4netns fuse-overlayfs

# 安装kubectl
RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
RUN install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# 安装helm
RUN curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# 安装kind
RUN go install sigs.k8s.io/kind@v0.20.0 && \
    install -o root -g root -m 0755 /root/go/bin/kind /usr/local/bin/kind

# 创建普通用户用于rootless运行
RUN useradd -m kind-user && \
    echo "kind-user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

# 初始化rootless podman环境
RUN su - kind-user -c "podman system migrate"

# 切换到普通用户执行后续操作
USER kind-user

3. 用正确参数启动容器

运行容器时需传递权限和cgroup相关参数,确保容器能访问宿主机的cgroup v2环境:

podman run -it --rm \
  --privileged \
  --cgroupns=host \
  --security-opt seccomp=unconfined \
  --security-opt apparmor=unconfined \
  <你的镜像名称>

4. 容器内启动KIND集群

进入容器后,设置环境变量指定使用podman作为provider,再创建集群:

export KIND_EXPERIMENTAL_PROVIDER=podman
kind create cluster

关键说明

  • --privileged和--cgroupns=host:让容器直接复用宿主机的cgroup命名空间,确保cgroup v2环境可用
  • 普通用户运行:rootless模式要求非root用户执行,避免权限冲突
  • 额外依赖:uidmap、slirp4netns等是rootless容器网络和权限映射的必备工具

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:42:53