Red Hat

Red Hat

General approach to how Docker is configured when deploying a Kubernetes cluster on any operating system is described here.

When deploying a Kubernetes cluster via Kublr on Red Hat Enterprise Linux (RHEL) using Docker as container runtime environment, Kublr transfers the following Docker parameters/values to the kublr-daemon.json file (usually located at the /etc/docker folder):

{
"exec-opts": [
    "native.cgroupdriver=systemd"
    ],
    "ip-masq": false,
    "iptables": false,
    "log-driver": "json-file",
    "log-opts": {
           "max-file": "3",
           "max-size": "10M"
    },
    "selinux-enabled": true,
    "storage-driver": "overlay2",
      "storage-opts": [
      "overlay2.override_kernel_check=true"                                                I
    ]
}

These parameters/values are taken from the internal Kublr template file during cluster creation.

Notes:

  • selinux-enabled set to true has to be set at the moment for Kubernetes to work on RHEL.
  • log-opts: max-file and max-size configure Docker log rotation.
  • Kublr tries to merge the existing Docker configuration files.
  • Original Red Hat daemon.json file for Docker is kept as backup when kublr-daemon.json is created. It allows to quickly rollback the configuration if something goes wrong.

To override the parameters, access cluster specification and set you values for these parameters in the KublrAgentConfig section (globally or for the specific instance group), for example:

  master:
    kublrAgentConfig:
      docker:
        config:
          ip-masq: false
          iptable: false
          log-driver: json-file
          log-opts:
            max-file: 3
            max-size: 10M

Notes:

  • Kublr edits systemd unit file to add all these keys to Docker.

  • kublr-daemon.json file is enabled in the /etc/default/kublr-docker:

    KUBLR_DOCKER_OPTIONS=–config-file=/etc/docker/kublr-daemon.json