nestybox / sysbox

An open-source, next-generation "runc" that empowers rootless containers to run workloads such as Systemd, Docker, Kubernetes, just like VMs.
Apache License 2.0
2.77k stars 152 forks source link

Support sysbox installation on K3s? #841

Open Teachh opened 2 weeks ago

Teachh commented 2 weeks ago

Hi everyone, I am actually trying to install Sysbox in my Kubernetes Cluster with all the nodes on 23.04.

I saw that the last supported version for Ubuntu is 22.04. Is there any way to use the DaemonSet from this manifests?

I tried to change the Dockerimage from the DaemonSet to allow my node version but I'm having the following error in the Pod

Job for kubelet-config-helper.service failed because the control process exited with error code. See "systemctl status kubelet-config-helper.service" and "journalctl -xe" for details.

Thanks!

ctalledo commented 1 week ago

Hi @Teachh, thanks for giving Sysbox a try.

If I understand correctly, you are trying to install Sysbox on a K8s cluster with nodes using Ubuntu 23.04 (rather than Ubuntu 22.04 for example).

Yes, we don't officially support sysbox-deploy-k8s on Ubuntu 23.04, but having said that I am surprised it failed after you modified the distro version check.

Question: when it failed, did you try logging into the K8s node and typing systemctl status kubelet-config-helper.service to see why it failed?

Also, what version of K8s are you running?

Thanks!

Teachh commented 4 days ago

Hi @ctalledo, first of all thanks for answering!

Executing the systemctl command output is:

systemctl status kubelet-config-helper.service
× kubelet-config-helper.service - Kubelet config service
     Loaded: loaded (/lib/systemd/system/kubelet-config-helper.service; static)
     Active: failed (Result: exit-code) since Wed 2024-10-16 12:55:08 UTC; 7s ago
    Process: 4036663 ExecStart=/bin/sh -c /usr/local/bin/kubelet-config-helper.sh (code=exited, status=1/FAILURE)
   Main PID: 4036663 (code=exited, status=1/FAILURE)
        CPU: 39ms

Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: + kubelet_bin=
Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: + '[' -z '' ']'
Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: + die 'Kubelet binary not identified.'
Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: + msg='Kubelet binary not identified.'
Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: + echo 'ERROR: Kubelet binary not identified.'
Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: ERROR: Kubelet binary not identified.
Oct 16 12:55:08 k8s-slave2-gotham sh[4036664]: + exit 1
Oct 16 12:55:08 k8s-slave2-gotham systemd[1]: kubelet-config-helper.service: Main process exited, code=exited, status=1/FAILURE
Oct 16 12:55:08 k8s-slave2-gotham systemd[1]: kubelet-config-helper.service: Failed with result 'exit-code'.
Oct 16 12:55:08 k8s-slave2-gotham systemd[1]: Failed to start kubelet-config-helper.service - Kubelet config service.

The version of all the nodes of the cluster is v1.28.2+k3s1 with a K3S distribution.

To bypass the version check, I have modified this file and add my Ubuntu version on lines 709 and 263.

Thanks!

ctalledo commented 1 day ago

Hi @Teachh,

Thanks for the info, that clarifies the problem, and it's not related to the version of Ubuntu.

Rather, sysbox-deploy-k8s only works on K8s cluster, not on k3s clusters because the latter does not carry a separate binary for the kubelet component which sysbox-deploy-k8s reconfigures and restarts (to point the kubelet to CRI-O instead of containerd).

I am sure we could make it work on k3s, but it's a fair amount of work and there are no plans (but of course if anyone wants to contribute this we would be happy to take a look).