rancher / k3os

Purpose-built OS for Kubernetes, fully managed by Kubernetes.
https://k3os.io
Apache License 2.0
3.5k stars 397 forks source link

How to add drbd kernel module? #542

Open toonsevrin opened 4 years ago

toonsevrin commented 4 years ago

Hi everyone, how would I approach enabling the drbd module by LINBIT? Perhaps more in general, how would one approach installing a kernel module like this in a user friendly (as in, without forking) manner?

If someone can explain this to me, I'll gladly update the documentation to reflect this info :) Note that my kernel knowledge is weak :+1:

USA-RedDragon commented 4 years ago

Short term, I believe an approach like mine to adding drbd into k3os is probably the easiest solution right now. See https://github.com/USA-RedDragon/drbd-docker, the README explains how it works. The DaemonSet in the kubernetes/ dir is exactly what is running on my k3os cluster right now.

As a potential long term solution to kernel modules that would require a code change in k3os itself:

Something similar could be used to run a set of privileged containers at cluster init (maybe just before the process that sets up traefik, servicelb, etc) to bootstrap any needed kernel modules with DKMS from the ubuntu repo, as the kernel already provides the headers in /usr/src/, and one could persist and load them however they'd like.

I'd imagine something like:

k3os:
  modules_build:
  - drbd
  - <any other module that follows ubuntu packaging's module-dkms naming scheme>
  - https://github.com/USA-RedDragon/k3os-module
dweomer commented 4 years ago

Short term, I believe an approach like mine to adding drbd into k3os is probably the easiest solution right now. See https://github.com/USA-RedDragon/drbd-docker, the README explains how it works. The DaemonSet in the kubernetes/ dir is exactly what is running on my k3os cluster right now.

As a potential long term solution to kernel modules that would require a code change in k3os itself:

Something similar could be used to run a set of privileged containers at cluster init (maybe just before the process that sets up traefik, servicelb, etc) to bootstrap any needed kernel modules with DKMS from the ubuntu repo, as the kernel already provides the headers in /usr/src/, and one could persist and load them however they'd like.

I'd imagine something like:

k3os:
  modules_build:
  - drbd
  - <any other module that follows ubuntu packaging's module-dkms naming scheme>
  - https://github.com/USA-RedDragon/k3os-module

Thanks for sharing this @USA-RedDragon