Tytułowy problem okazuje się być dosyć skomplikowany – Kubernetes oczekuje bycia uruchomionym na gołej maszynie (bare metal), natomiast m.in. AppArmor obecny w mechanizmie LXC trochę go ogranicza. Nie chciałem zmniejszać poziomu bezpieczeństwa całej maszyny, dając czemukolwiek pełne uprawnienia – mam tu na myśli często sugerowane, a według mnie niezbyt bezpieczne, wyłączenie wszelkich ograniczeń dla LXC, która ma mieć uruchomiony kube.
Szybkim rozwiązaniem byłoby uruchomienie maszyny wirtualnej, ale wtedy tracimy zasoby na wirtualizację – zatem, podjąłem walkę o uruchomienie K3s na LXC.
Po naprawdę wielu spędzonych godzinach na próbach, udało się znaleźć Ten Jeden Post na forum[1], który okazał się pomocny w uruchomieniu – w moim przypadku – k3s, a nie pełnego k8s, ale to raczej bez większej różnicy. Całe rozwiązanie sprowadza się do:
# cat /etc/rancher/k3s/config.yaml
protect-kernel-defaults: false
kube-apiserver-arg:
- 'feature-gates=KubeletInUserNamespace=true'
kube-controller-manager-arg:
- 'feature-gates=KubeletInUserNamespace=true'
kubelet-arg:
- 'feature-gates=KubeletInUserNamespace=true'
# tego już nie polecam:
# snapshotter: 'fuse-overlayfs'I właściwie to tyle – systemctl restart k3s. Jeżeli w błędach pojawi się brak FUSE, to w samych ustawieniach LXC to włączamy:

Pierwsze problemy [aktualizacja]
Po podniesieniu systemu do Debiana 13, zaskoczyły mnie niedziałające reguły NetworkPolicy. Na szczęście nie jestem pierwszy, i rozwiązaniem tego problemu jest zmiana iptables-nft na iptables-legacy:
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
$ sudo iptables-nft -F && sudo iptables-nft -X
$ sudo systemctl restart k3sDrugie problemy – FUSE
Backupy. Niestety, ale FUSE jest znany z problemów z backupami. Wraz z rozrastaniem się mojego klastra, zawieszanie kontenera z K3s następowało coraz częściej. Co gorsza, cały host PVE stawał dęba – nawet zalogowanie się za pomocą panelu webowego nie było możliwe.
Rozwiązaniem jest… wyłączenie FUSE. Tyle. Linijka snapshotter: 'fuse-overlayfs' nie jest już potrzebna na nowszym jądrze i wersji k3s, a wszystko działa out of the box.