OS Requirements¶
Realtime Scheduling¶
The cluster SHOULD run a kernel configured without
CONFIG_RT_GROUP_SCHED. The cluster MUST run with a kernel configured
without CONFIG_RT_GROUP_SCHED or with the
kernel.sched_rt_runtime_us sysctl set to -1.
Setting the kernel.sched_rt_runtime_us sysctl to -1 is NOT RECOMMENDED
for production use.
For more discussion on this see issue #121.
While docker supports using realtime features on systems with
CONFIG_RT_GROUP_SCHED and a non--1 value for
kernel.sched_rt_runtime_us, Kubernetes does currently not support that.
Once support for that lands, we may increase our k8s version requirements in
favour of this requirement.
Below, we describe how to check whether your os fulfills this requirement and, if it does not, how to get around it.
Check¶
You can check whether you are running a kernel built with CONFIG_RT_GROUP_SCHED enabled by executing:
grep CONFIG_RT_GROUP_SCHED /boot/config-$(uname -r)
Workaround¶
You can run the following daemon as a workaround for this problem.
kubectl -n $YAOOK_OP_NAMESPACE apply -f https://gitlab.com/yaook/operator/-/raw/devel/ci/devel_integration_tests/deploy/realtime-hack.yaml
Inotify limits¶
Many Linux distributions default max_user_instances to 128.
You can check that by running e.g. cat /proc/sys/fs/inotify/max_user_instances.
Yaook itself uses inotifyd for watching various directories for changes
and therefore you SHOULD increase this number so you don’t encounter errors
like inotifyd: no kernel support: No file descriptors available.
You can use e.g. the following command to increase it to 1024 which should be sufficient:
echo fs.inotify.max_user_instances=1024 >> /etc/sysctl.conf && sysctl -p