⎈ k8s knowledge compiler

Set Kubelet Parameters Via A Configuration File [page]deterministic

tasks

##

Some steps in this page use the `jq` tool. If you don't have `jq`, you can install it via your operating system's software sources, or fetch it from [https://jqlang.github.io/jq/](https://jqlang.github.io/jq/).

Some steps also involve installing `curl`, which can be installed via your operating system's software sources.

A subset of the kubelet's configuration parameters may be set via an on-disk config file, as a substitute for command-line flags.

Providing parameters via a config file is the recommended approach because it simplifies node deployment and configuration management.

## Create the config file

The subset of the kubelet's configuration that can be configured via a file is defined by the [`KubeletConfiguration`](/docs/reference/config-api/kubelet-config.v1beta1/) struct.

The configuration file must be a JSON or YAML representation of the parameters in this struct. Make sure the kubelet has read permissions on the file.

Here is an example of what this file might look like:

```yaml apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration address: "192.168.0.8" port: 20250 serializeImagePulls: false evictionHard: memory.available: "100Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" imagefs.inodesFree: "5%" ```

In this example, the kubelet is configured with the following settings:

1. `address`: The kubelet will serve on IP address `192.168.0.8`. 1. `port`: The kubelet will serve on port `20250`. 1. `serializeImagePulls`: Image pulls will be done in parallel. 1. `evictionHard`: The kubelet will evict Pods under one of the following conditions:

  • When the node's available memory drops below 100MiB. - When the node's main filesystem's available space is less than 10%. - When the image filesystem's available space is less than 15%. - When more than 95% of the node's main filesystem's inodes are in use.

> Note: In the example, by changing the default value of only one parameter for evictionHard, the default values of other parameters will not be inherited and will be set to zero. In order to provide custom values, you should provide all the threshold values respectively. Alternatively, you can set the MergeDefaultEvictionSettings to true in the kubelet configuration file, if any parameter is changed then the other parameters will inherit their default values instead of 0.

The `imagefs` is an optional filesystem that container runtimes use to store container images and container writable layers.

## Start a kubelet process configured via the config file

> Note: If you use kubeadm to initialize your cluster, use the kubelet-config while creating your cluster with `kubeadm init`. See [configuring kubelet using kubeadm](/docs/setup/production-environment/tools/kubeadm/kubelet-integration/) for details.

Start the kubelet with the `--config` flag set to the path of the kubelet's config file. The kubelet will then load its config from this file.

Note that command line flags which target the same value as a config file will override that value. This helps ensure backwards compatibility with the command-line API.

Note that relative file paths in the kubelet config file are resolved relative to the location of the kubelet config file, whereas relative paths in command line flags are resolved relative to the kubelet's current working directory.

Note that some default values differ between command-line flags and the kubelet config file. If `--config` is provided and the values are not specified via the command line, the defaults for the `KubeletConfiguration` version apply. In the above example, this version is `kubelet.config.k8s.io/v1beta1`.

## Drop-in directory for kubelet configuration files {#kubelet-conf-d}

You can specify a drop-in configuration directory for the kubelet. By default, the kubelet does not look for drop-in configuration files anywhere - you must specify a path. For example: `--config-dir=/etc/kubern …(trimmed)

Sources

tasks/administer-cluster/kubelet-config-file.md · docSet Kubelet Parameters Via A Configuration File

Related (7)

part_of {{% heading "prerequisites" %}}describes conf=1
part_of Create the config filedescribes conf=1
part_of Viewing the kubelet configurationdescribes conf=1
part_of {{% heading "whatsnext" %}}describes conf=1
part_of Kubelet configuration merging orderdescribes conf=1

← all Docs