cat /proc/sys/net/bridge/bridge-nf-call-iptables
sysctl vm.swappiness=0
swapoff -a
The first time I tried to get this working, once the cluster was up, the traefik pods were in CrashloopBackoff due to ip_forwarding being disabled. Since LXC containers share the host's kernel, we need to enable this on the host.
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl --system
Edit the config file for the container (/etc/pve/lxc/$ID.conf
) and add the following:
lxc.apparmor.profile: unconfined
lxc.cgroup.devices.allow: a
lxc.cap.drop:
lxc.mount.auto: "proc:rw sys:rw"
/etc/rc.local doesn't exist in the default 20.04 LXC template provided by Rroxmox. Create it with these contents:
#!/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 /
Then run this:
chmod +x /etc/rc.local
reboot
Assuming $HOME/bin is in your PATH:
curl -sLS https://get.k3sup.dev | sh
mv k3sup ~/bin/k3sup && chmod +x ~/bin/k3sup
k3sup install --ip $CONTAINER_IP --user root
KUBECONFIG=kubeconfig kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-7566d596c8-zm7tj 1/1 Running 0 69m
kube-system local-path-provisioner-6d59f47c7-ldbcl 1/1 Running 0 69m
kube-system helm-install-traefik-glt48 0/1 Completed 0 69m
kube-system coredns-7944c66d8d-67lxp 1/1 Running 0 69m
kube-system traefik-758cd5fc85-wzcst 1/1 Running 0 68m
kube-system svclb-traefik-cwd9h 2/2 Running 0 42m
I would only recommend against bare metal as proxmox and other bare metal hypervisors allow you the freedom to wipe your environment and start fresh very easily, it also allows you to easily spin up parallel environments and tinker. Obviously you can accomplish the same thing with docker compose or LXD/C on bare metal, but my personal tinkering time is limited and I quite enjoy having an interface to turn knobs and glance at. I would likely never use proxmox or esxi in a professional setting. K8S on cloud infra has been serving me for years there.