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 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