Skip to content

Commit af094ed

Browse files
Feature Blog placeholder PR
1 parent 44f0e07 commit af094ed

File tree

2 files changed

+134
-0
lines changed

2 files changed

+134
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
---
2+
layout: blog
3+
title: "Kubernetes v1.35: Kubelet Configuration Drop-in Directory Graduates to GA"
4+
date: 2025-10-23
5+
slug: kubelet-config-drop-in-directory-ga
6+
author: >
7+
Sohan Kunkerkar (Red Hat)
8+
---
9+
10+
Announcing the graduation to General Availability (GA) of the Kubelet Configuration Drop-in Directory feature in Kubernetes v1.35!
11+
12+
The Kubernetes SIG Node team is excited to announce that the Kubelet Configuration Drop-in Directory feature, first introduced as alpha in Kubernetes v1.28 and promoted to beta in v1.30, has now reached GA status and is officially part of the Kubernetes v1.35 release. This enhancement significantly simplifies the management of kubelet configurations across large, heterogeneous Kubernetes clusters.
13+
14+
With v1.35, the `--config-dir` flag is production-ready and fully supported, allowing you to specify a directory containing kubelet configuration drop-in files that will be automatically merged with your main kubelet configuration. This allows cluster administrators to maintain a cohesive base kubelet configuration while enabling targeted customizations for different node groups or use cases—all without complex tooling or manual configuration management.
15+
16+
## The problem: Managing kubelet configuration at scale
17+
18+
As Kubernetes clusters grow larger and more complex, they often include heterogeneous node pools with different hardware capabilities, workload requirements, and operational constraints. This diversity necessitates different kubelet configurations across node groups—yet managing these varied configurations at scale becomes increasingly challenging. Several pain points emerge:
19+
20+
- **Configuration drift**: Different nodes may have slightly different configurations, leading to inconsistent behavior
21+
- **Node group customization**: GPU nodes, edge nodes, and standard compute nodes often require different kubelet settings
22+
- **Operational overhead**: Maintaining separate, complete configuration files for each node type is error-prone and difficult to audit
23+
- **Change management**: Rolling out configuration changes across heterogeneous node pools requires careful coordination
24+
25+
Previously, cluster administrators had to choose between using a single monolithic configuration file for all nodes, maintaining multiple complete configuration files, or implementing custom tooling—each approach with its own drawbacks. The Kubelet Configuration Drop-in Directory feature provides a native, built-in solution to this challenge.
26+
27+
## What changed?
28+
29+
With GA graduation in v1.35, the `--config-dir` flag is production-ready with stable API guarantees. This allows you to compose kubelet configuration from multiple drop-in files that are automatically merged, enabling you to maintain a base configuration while layering node-specific or environment-specific settings.
30+
31+
## Real-world use cases
32+
33+
### Managing heterogeneous node pools
34+
35+
Consider a cluster with multiple node types: standard compute nodes, GPU nodes for ML workloads, and edge nodes with specialized requirements.
36+
37+
**Base configuration** (`00-base.conf`):
38+
```yaml
39+
apiVersion: kubelet.config.k8s.io/v1beta1
40+
kind: KubeletConfiguration
41+
clusterDNS:
42+
- "10.96.0.10"
43+
clusterDomain: cluster.local
44+
```
45+
46+
**GPU node override** (`50-gpu-nodes.conf`):
47+
```yaml
48+
apiVersion: kubelet.config.k8s.io/v1beta1
49+
kind: KubeletConfiguration
50+
maxPods: 50
51+
systemReserved:
52+
memory: "4Gi"
53+
cpu: "1000m"
54+
```
55+
56+
**Edge node override** (`50-edge-nodes.conf`):
57+
```yaml
58+
apiVersion: kubelet.config.k8s.io/v1beta1
59+
kind: KubeletConfiguration
60+
evictionHard:
61+
memory.available: "500Mi"
62+
nodefs.available: "5%"
63+
```
64+
65+
With this structure, GPU nodes apply both the base configuration and the GPU-specific overrides, while edge nodes apply the base configuration with edge-specific settings.
66+
67+
### Gradual configuration rollouts
68+
69+
When rolling out configuration changes, you can:
70+
71+
1. Add a new drop-in file with a high numeric prefix (e.g., `99-new-feature.conf`)
72+
2. Test the changes on a subset of nodes
73+
3. Gradually roll out to more nodes
74+
4. Once stable, merge changes into the base configuration
75+
76+
## Viewing the merged configuration
77+
78+
Since configuration is now spread across multiple files, you can inspect the final merged configuration using the kubelet's `/configz` endpoint:
79+
80+
```bash
81+
# Start kubectl proxy
82+
kubectl proxy
83+
84+
# In another terminal, fetch the merged configuration
85+
curl -X GET http://127.0.0.1:8001/api/v1/nodes/<node-name>/proxy/configz | jq .
86+
```
87+
88+
This shows the actual configuration the kubelet is using after all merging has been applied.
89+
90+
## How to use it?
91+
92+
As this feature has graduated to GA, there's no need to enable a feature gate. Simply make sure you are running Kubernetes v1.35 or later.
93+
94+
For detailed setup instructions, configuration examples, and merging behavior, see the official documentation:
95+
- [Set Kubelet Parameters Via A Configuration File](/docs/tasks/administer-cluster/kubelet-config-file/#kubelet-conf-d)
96+
- [Kubelet Configuration Directory Merging](/docs/reference/node/kubelet-config-directory-merging/)
97+
98+
## Best practices
99+
100+
When using kubelet configuration drop-in directories:
101+
102+
1. **Test configurations incrementally**: Always test new drop-in configurations on a subset of nodes before rolling out cluster-wide to minimize risk
103+
104+
2. **Version control your drop-ins**: Store your drop-in configuration files in version control alongside your infrastructure as code to track changes and enable easy rollbacks
105+
106+
3. **Use numeric prefixes for predictable ordering**: Name files with numeric prefixes (e.g., `00-`, `50-`, `90-`) to explicitly control merge order and make the configuration layering obvious to other administrators
107+
108+
## Acknowledgments
109+
110+
This feature was developed through the collaborative efforts of [SIG Node](https://github.com/kubernetes/community/tree/master/sig-node). Special thanks to all contributors who helped design, implement, test, and document this feature across its journey from alpha in v1.28, through beta in v1.30, to GA in v1.35.
111+
112+
To provide feedback, join our [Kubernetes Node Special-Interest-Group](https://github.com/kubernetes/community/tree/master/sig-node) or participate in discussions on our [public Slack channel](http://slack.k8s.io/) (#sig-node).
113+
114+
## Get involved
115+
116+
If you have feedback or questions about kubelet configuration management, or want to share your experience using this feature, join the discussion:
117+
118+
- [SIG Node community page](https://github.com/kubernetes/community/tree/master/sig-node)
119+
- [Kubernetes Slack](http://slack.k8s.io/) in the #sig-node channel
120+
- [SIG Node mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-node)
121+
122+
We'd love to hear about your experiences using kubelet configuration drop-in directories in production!
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
layout: blog
3+
title: "Kubernetes v1.35: Kubelet Configuration Drop-in Directory Graduates to GA"
4+
slug: kubelet-config-drop-in-directory-ga
5+
date: 2025-10-23
6+
author: >
7+
Sohan Kunkerkar (Red Hat)
8+
---
9+
10+
## Contact
11+
12+
For any inquiries or specific questions related to Kubelet Configuration Drop-in Directory, please reach out to the [SIG Node community](https://github.com/kubernetes/community/tree/master/sig-node).

0 commit comments

Comments
 (0)