Kubernetes: supply parameters for docker

10/22/2019

I want to run docker containers using real-time scheduler. Is it possible to pass parameters in pod/deployment file to Kubernetes to run my containers as follows?

docker run -it --cpu-rt-runtime=950000 \
                  --ulimit rtprio=99 \
                  --cap-add=sys_nice \
                  debian:jessie
-- Václav Struhár
docker
kubernetes

2 Answers

10/22/2019

https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/

You can use config maps to declare variables.

Then mount config map to env variables. Pass env variables to docker args.

https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#configure-all-key-value-pairs-in-a-configmap-as-container-environment-variables

Create config map

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  SPECIAL_LEVEL: very
  SPECIAL_TYPE: charm

Create POD

apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      envFrom:
      - configMapRef:
          name: special-config
  restartPolicy: Never
-- Ankit Deshpande
Source: StackOverflow

10/25/2019

Unfortunately not all Docker command line features has relevant options in Kubernetes YAML.

While sys_time capability can be set using securiyContext in yaml, the --cpu-rt-runtime=950000 cannot.

In the K8s API Pod documentation you can find all the configuration that can be pass into container under PodSecurityContext v1 core.

Another thing is that I`ve tried to run a container itself with the specs that you provided but I ran into an error:

docker: Error response from daemon: Your kernel does not support
cgroup cpu real-time runtime. See 'docker run --help'

This is related directly to kernel configuration named CONFIG_RT_GROUP_SCHED that is missing from your kernel image. Without it the cpu-rt-runtime won`t be possible to set to container.

-- acid_fuji
Source: StackOverflow