Set Kubelet parameters via a config file
Kubernetes v1.18
beta
- The version names contain beta (e.g. v2beta3).
- Code is well tested. Enabling the feature is considered safe. Enabled by default.
- Support for the overall feature will not be dropped, though details may change.
- The schema and/or semantics of objects may change in incompatible ways in a subsequent beta or stable release. When this happens, we will provide instructions for migrating to the next version. This may require deleting, editing, and re-creating API objects. The editing process may require some thought. This may require downtime for applications that rely on the feature.
- Recommended for only non-business-critical uses because of potential for incompatible changes in subsequent releases. If you have multiple clusters that can be upgraded independently, you may be able to relax this restriction.
- Please do try our beta features and give feedback on them! After they exit beta, it may not be practical for us to make more changes.
A subset of the Kubelet’s configuration parameters may be set via an on-disk config file, as a substitute for command-line flags. This functionality is considered beta in v1.10.
Providing parameters via a config file is the recommended approach because it simplifies node deployment and configuration management.
- Before you begin
- Create the config file
- Start a Kubelet process configured via the config file
- Relationship to Dynamic Kubelet Config
Before you begin
- A v1.10 or higher Kubelet binary must be installed for beta functionality.
Create the config file
The subset of the Kubelet’s configuration that can be configured via a file
is defined by the KubeletConfiguration
struct
here (v1beta1).
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:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
evictionHard:
memory.available: "200Mi"
In the example, the Kubelet is configured to evict Pods when available memory drops below 200Mi. All other Kubelet configuration values are left at their built-in defaults, unless overridden by flags. Command line flags which target the same value as a config file will override that value.
For a trick to generate a configuration file from a live node, see Reconfigure a Node’s Kubelet in a Live Cluster.
Start a Kubelet process configured via the config file
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
.
Relationship to Dynamic Kubelet Config
If you are using the Dynamic Kubelet Configuration
feature, the combination of configuration provided via --config
and any flags which override these values
is considered the default “last known good” configuration by the automatic rollback mechanism.
Feedback
Was this page helpful?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.