K3s
K3s is a fully compliant Kubernetes distribution that is easy to install, using half the memory, all in a binary of less than 50mb.
Instruction
SUSE Storage supports only K3s v0.10.0 and later versions by default.
If you want to deploy SUSE Storage on K3s versions earlier than v0.10.0, you need to set --kubelet-root-dir
to <data-dir>/agent/kubelet
for the Deployment longhorn-driver-deployer
in longhorn/deploy/longhorn.yaml
.
data-dir
is a k3s
arg and it can be set when you launch a k3s server. By default it is /var/lib/rancher/k3s
.
Troubleshooting
Failed to get arg root-dir: Cannot get kubelet root dir, no related proc for root-dir detection …
This error is due to SUSE Storage cannot detect where is the root dir setup for Kubelet, so the CSI plugin installation failed.
You can override the root-dir detection by setting environment variable KUBELET_ROOT_DIR
in https://github.com/longhorn/longhorn/blob/v1.7.0/deploy/longhorn.yaml.
How to find root-dir
?
For K3S prior to v0.10.0
Run ps aux | grep k3s
and get argument --data-dir
or -d
on k3s node.
e.g.
$ ps uax | grep k3s root 4160 0.0 0.0 51420 3948 pts/0 S+ 00:55 0:00 sudo /usr/local/bin/k3s server --data-dir /opt/test/kubelet root 4161 49.0 4.0 259204 164292 pts/0 Sl+ 00:55 0:04 /usr/local/bin/k3s server --data-dir /opt/test/kubelet
You will find data-dir
in the cmdline of proc k3s
. By default it is not set and /var/lib/rancher/k3s
will be used. Then joining data-dir
with /agent/kubelet
you will get the root-dir
. So the default root-dir
for K3S is /var/lib/rancher/k3s/agent/kubelet
.
If K3S is using a configuration file, you would need to check the configuration file to locate the data-dir
parameter.
For K3S v0.10.0+
It is always /var/lib/kubelet
Background
SUSE Storage versions earlier than v0.7.0 don’t work on K3s v0.10.0 or later
K3s now sets its kubelet directory to /var/lib/kubelet
. See the K3S release comment for details.