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