沙箱运行时配置
K8E 自动检测已安装的运行时并注册对应的 RuntimeClass。根据你的隔离需求选择:
| 运行时 | 隔离方式 | 要求 | 启动时间 |
|---|---|---|---|
| gVisor | 系统调用拦截(用户态内核) | 无 | ~10ms |
| Kata Containers | 虚拟机后端(QEMU) | 嵌套虚拟化或裸机 | ~500ms |
| Firecracker | 硬件微虚拟机(KVM) | /dev/kvm | ~125ms |
gVisor —— 推荐默认
# 官方 “Latest release” 包:https://gvisor.dev/docs/user_guide/install/#latest-release
# 2026-07 起改为多文件布局,不再单独发布 runsc 二进制。
ARCH=$(uname -m) # x86_64 最常见,ARM 为 aarch64
URL=https://storage.googleapis.com/gvisor/releases/release/latest/${ARCH}
wget ${URL}/gvisor.tar.zstd ${URL}/gvisor.tar.zstd.sha512
sha512sum -c gvisor.tar.zstd.sha512 # 必须输出 OK
sudo tar --zstd -xf gvisor.tar.zstd -C /usr/local/bin
ls -l /usr/local/bin/runsc /usr/local/bin/containerd-shim-runsc-v1 /usr/local/bin/gvisor-bin # 确认已安装
主机没有
zstd?同一目录提供了gvisor.tar.bz2,可改用sudo tar -xjf gvisor.tar.bz2 -C /usr/local/bin。
压缩包含
runsc、containerd-shim-runsc-v1shim 以及gvisor-bin/侧车二进制目录(runsc在自身二进制旁边查找)。请整体解压、保持文件在一起 —— 不要单独移动runsc。
不要运行
runsc install—— K8E 管理自己的 containerd 配置(/var/lib/k8e/agent/etc/containerd/config.toml),启动时自动注入 gVisor 配置。
Kata Containers
bash -c "$(curl -fsSL https://raw.githubusercontent.com/kata-containers/kata-containers/main/utils/kata-manager.sh) install-packages"
kata-runtime check
Firecracker(需要 /dev/kvm)
ls /dev/kvm # 验证 KVM 可用
# 安装 firecracker-containerd shim + devmapper snapshotter
# 参见: https://github.com/firecracker-microvm/firecracker-containerd
mkdir -p /var/lib/firecracker-containerd/runtime
# 将 hello-vmlinux.bin 和 default-rootfs.img 放到这里
应用变更
在启动 K8E 之前安装运行时,即可零重启配置。如果 K8E 已在运行,安装新的运行时 shim 后重启:
systemctl restart k8e
kubectl get runtimeclass
# NAME HANDLER AGE
# gvisor runsc 10s
# kata kata-qemu 10s
# firecracker firecracker 10s ← 仅当存在 /dev/kvm 时