LXC 下无法启动 Containerd

Caret Up

在使用 LXC 容器部署 Docker 环境,或搭建 K3s,K8s 集群时,遇到报错导致无法成功启动的,可以使用如下方式解决

创建特权容器

image1-1

配置 LXC

需进入宿主机编辑 LXC 配置文件

  • 建议先将 LCX 容器关停

vi /etc/pve/lxc/[id].conf

1
2
3
4
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:
lxc.mount.auto: "proc:rw sys:rw"

至此,大部分情况下都已经可以正常运行 Docker 与 K3s,K8s 集群了,如果还不行,接着往下看

LXC 内创建绑定脚本

/etc/rc.local

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh -e

# Kubeadm 1.15 needs /dev/kmsg to be there, but it's not in lxc, but we can just use /dev/console instead
# see: https://github.com/kubernetes-sigs/kind/issues/662
if [ ! -e /dev/kmsg ]; then
    ln -s /dev/console /dev/kmsg
fi

# https://medium.com/@kvaps/run-kubernetes-in-lxc-container-f04aa94b6c9c
mount --make-rshared /

授权并重启

1
2
chmod +x /etc/rc.local
reboot

参考