I wanted to run Microk8s on a Proxmox 6 host inside of an LXC container. These are my notes from the journey.
- Create a privileged LXC container through the Proxmox web interface
- Enable nesting and FUSE
- In Proxmox UI, select container, then Options > Features > Check nesting and FUSE boxes
- SSH into the Proxmox host and edit the container's config in /etc/pve/lxc/.conf
- Add the following lines
- lxc.apparmor.profile: unconfined
- lxc.cap.drop:
- lxc.mount.auto: proc:rw sys:rw
- Add the following lines
- Start (or restart) the container
- SSH into the container and create a symlink for /dev/kmsg, which is missing in Ubuntu 19.10 containers
- ln -s /dev/console /dev/kmsg
- Has to be repeated on container reboot, which is annoying.
- Install snapd: apt install snapd
- Install microk8s: snap install microk8s --classic
The snap commands may need to be run more than once to get past errors.
If you get "cannot change profile for the next exec call: No such file or directory", try running: apparmor_parser -r /var/lib/snapd/apparmor/profiles/*
Followed the instructions and got the microk8s cluster working, however pods do not have access to networking (e.g.
socket: permission denied
or similar when attempting to bind ports or use commands such asip addr list
). I can see pods are being allocated IPs by Calico correctly otherwise viaget pod
.My guess is this is a capabilities issue but
lxc.cap.drop:
is set as mentioned above and I even tried launching pods with explicitsecurityContext
policy but still no luck.Did anyone run across this by chance? I tried Debian 11 and Ubuntu 22.04 templates but same result
I did not encounter this issue if launching as a VM instead of LXC