Skip to content

Commit 58374b8

Browse files
authored
Merge pull request #54323 from singh1203/merged-main-dev-1.36
Merge main branch into dev-1.36
2 parents a165367 + 274c5dd commit 58374b8

File tree

77 files changed

+6808
-2247
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+6808
-2247
lines changed

content/en/blog/_posts/2018-04-11-migrating-the-kubernetes-blog.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
title: 'Migrating the Kubernetes Blog'
33
author: zcorleissen
4-
date: 2018-04-11
54
slug: migrating-the-kubernetes-blog
65
---
76

content/en/blog/_posts/2018-04-24-kubernetes-application-survey-results-2018.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
title: 'Kubernetes Application Survey 2018 Results'
33
author: mattfarina
4-
date: 2018-04-24
54
slug: kubernetes-application-survey-results-2018
65
---
76

content/en/blog/_posts/2026-01-02-restart-all-containers.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,10 @@ spec:
6868
restartPolicy: Always
6969
restartPolicyRules:
7070
- action: RestartAllContainers
71-
onExit:
72-
exitCodes:
73-
operator: In
74-
# A specific exit code from the watcher triggers a full pod restart
75-
values: [88]
71+
exitCodes:
72+
operator: In
73+
# A specific exit code from the watcher triggers a full pod restart
74+
values: [88]
7675
containers:
7776
- name: main-application
7877
image: my-repo/training-app:1.0

content/en/blog/_posts/2026-01-22-headlamp-in-2025/index.md

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
layout: blog
33
title: "Headlamp in 2025: Project Highlights"
44
date: 2026-01-22T10:00:00+08:00
5+
slug: headlamp-in-2025-project-highlights
56
author: >
67
Evangelos Skopelitis (Microsoft)
78
---
@@ -40,28 +41,27 @@ This year, we were excited to work with several students through the Linux Found
4041

4142
Managing multiple clusters is challenging: teams often switch between tools and lose context when trying to see what runs where. Headlamp solves this by giving you a single view to compare clusters side-by-side. This makes it easier to understand workloads across environments and reduces the time spent hunting for resources.
4243

43-
<img src="./multi-cluster-view.png" alt="Multi-cluster view" style="display: block; margin-bottom: 0.5em;" />
44-
<em style="display: block; margin-bottom: 1em;">View of multi-cluster workloads</em>
44+
{{< figure src="multi-cluster-view.png" alt="Multi-cluster view" caption="View of multi-cluster workloads" >}}
4545

4646
### Projects
4747

4848
Kubernetes apps often span multiple namespaces and resource types, which makes troubleshooting feel like piecing together a puzzle. We’ve added **Projects** to give you an application-centric view that groups related resources across multiple namespaces – and even clusters. This allows you to reduce sprawl, troubleshoot faster, and collaborate without digging through YAML or cluster-wide lists.
4949

50-
<img src="./projects-feature.png" alt="Projects feature" style="display: block; margin-bottom: 0.5em;" />
51-
<em style="display: block; margin-bottom: 1em;">View of the new Projects feature</em>
50+
{{< figure src="projects-feature.png" alt="Projects feature" caption="View of the new Projects feature" >}}
5251

5352
Changes:
53+
5454
- New “Projects” feature for grouping namespaces into app- or team-centric projects
5555
- Extensible Projects details view that plugins can customize with their own tabs and actions
5656

5757
### Navigation and Activities
5858

5959
Day-to-day ops in Kubernetes often means juggling logs, terminals, YAML, and dashboards across clusters. We redesigned Headlamp’s navigation to treat these as first-class “activities” you can keep open and come back to, instead of one-off views you lose as soon as you click away.
6060

61-
<img src="./new-task-bar.png" alt="New task bar" style="display: block; margin-bottom: 0.5em;" />
62-
<em style="display: block; margin-bottom: 1em;">View of the new task bar</em>
61+
{{< figure src="new-task-bar.png" alt="New task bar" caption="View of the new task bar" >}}
6362

6463
Changes:
64+
6565
- A new task bar/activities model lets you pin logs, exec sessions, and details as ongoing activities
6666
- An activity overview with a “Close all” action and cluster information
6767
- Multi-select and global filters in tables
@@ -72,10 +72,10 @@ Thanks to [Jan Jansen](https://github.com/farodin91) and [Aditya Chaudhary](http
7272

7373
When something breaks in production, the first two questions are usually “where is it?” and “what is it connected to?” We’ve upgraded both search and the map view so you can get from a high-level symptom to the right set of objects much faster.
7474

75-
<img src="./advanced-search.png" alt="Advanced search" style="display: block; margin-bottom: 0.5em;" />
76-
<em style="display: block; margin-bottom: 1em;">View of the new Advanced Search feature</em>
75+
{{< figure src="advanced-search.png" alt="Advanced search" caption="View of the new Advanced Search feature" >}}
7776

7877
Changes:
78+
7979
- An Advanced search view that supports rich, expression-based queries over Kubernetes objects
8080
- Improved global search that understands labels and multiple search items, and can even update your current namespace based on what you find
8181
- EndpointSlice support in the Network section
@@ -87,10 +87,10 @@ Thanks to [Fabian](https://github.com/faebr), [Alexander North](https://github.c
8787

8888
We’ve put real work into making OIDC setup clearer and more resilient, especially for in-cluster deployments.
8989

90-
<img src="./user-info.png" alt="User info" style="display: block; margin-bottom: 0.5em;" />
91-
<em style="display: block; margin-bottom: 1em;">View of user information for OIDC clusters</em>
90+
{{< figure src="user-info.png" alt="User info" caption="View of user information for OIDC clusters" >}}
9291

9392
Changes:
93+
9494
- User information displayed in the top bar for OIDC-authenticated users
9595
- PKCE support for more secure authentication flows, as well as hardened token refresh handling
9696
- Documentation for using the access token using `-oidc-use-access-token=true`
@@ -104,20 +104,21 @@ Thanks to [David Dobmeier](https://github.com/daviddob) and [Harsh Srivastava](h
104104
We’ve broadened how you deploy and source apps via Headlamp, specifically supporting vanilla Helm repos.
105105

106106
Changes:
107+
107108
- A more capable Helm chart with optional backend TLS termination, PodDisruptionBudgets, custom pod labels, and more
108109
- Improved formatting and added missing access token arg in the Helm chart
109110
- New in-cluster Helm support with an `--enable-helm` flag and a service proxy
110111

111-
Thanks to [Vrushali Shah](https://github.com/shahvrushali22) and [Murali Annamneni](https://github.com/muraliinformal) from Oracle, and also to [Pat Riehecky](https://github.com/jcpunk), [Joshua Akers](https://github.com/jda258), [Rostislav Stříbrný](https://github.com/rstribrn), [Rick L](https://github.com/rickliujh),and [Victor](https://github.com/vnea).
112+
Thanks to [Vrushali Shah](https://github.com/shahvrushali22) and [Murali Annamneni](https://github.com/muraliinformal) from Oracle, and also to [Pat Riehecky](https://github.com/jcpunk), [Joshua Akers](https://github.com/jda258), [Rostislav Stříbrný](https://github.com/rstribrn), [Rick L](https://github.com/rickliujh), and [Victor](https://github.com/vnea).
112113

113114
### Performance, accessibility, and UX
114115

115116
Finally, we’ve spent a lot of time on the things you notice every day but don’t always make headlines: startup time, list views, log viewers, accessibility, and small network UX details. A continuous accessibility self-audit has also helped us identify key issues and make Headlamp easier for everyone to use.
116117

117-
<img src="./learn-section.png" alt="Learn section" style="display: block; margin-bottom: 0.5em;" />
118-
<em style="display: block; margin-bottom: 1em;">View of the Learn section in docs</em>
118+
{{< figure src="learn-section.png" alt="Learn section" caption="View of the Learn section in docs" >}}
119119

120120
Changes:
121+
121122
- Significant desktop improvements, with up to 60% faster app loads and much quicker dev-mode reloads for contributors
122123
- Numerous table and log viewer refinements: persistent sort order, consistent row actions, copy-name buttons, better tooltips, and more forgiving log inputs
123124
- Accessibility and localization improvements, including fixes for zoom-related layout issues, better color contrast, improved screen reader support, and expanded language coverage
@@ -126,14 +127,13 @@ Changes:
126127
- A more complete NetworkPolicy UI and network-related polish
127128
- Nightly builds available for early testing
128129

129-
Thanks to [Jaehan Byun](https://github.com/jaehanbyun) and [Jan Jansen](https://github.com/farodin91).
130+
Thanks to [Jaehan Byun](https://github.com/jaehanbyun) and [Jan Jansen](https://github.com/farodin91).
130131

131132
## Plugins and extensibility
132133

133-
Discovering plugins is simpler now – no more hopping between Artifact Hub and assorted GitHub repos. Browse our dedicated [Plugins page](https://headlamp.dev/plugins) for a curated catalog of Headlamp-endorsed plugins, along with a showcase of featured plugins.
134+
Discovering plugins is simpler now – no more hopping between Artifact Hub and assorted GitHub repos. Browse our dedicated [Plugins page](https://headlamp.dev/plugins) for a curated catalog of Headlamp-endorsed plugins, along with a showcase of featured plugins.
134135

135-
<img src="./plugins-page.png" alt="Plugins page" style="display: block; margin-bottom: 0.5em;" />
136-
<em style="display: block; margin-bottom: 1em;">View of the Plugins showcase</em>
136+
{{< figure src="plugins-page.png" alt="Plugins page" caption="View of the Plugins showcase" >}}
137137

138138
### Headlamp AI Assistant
139139

@@ -146,6 +146,7 @@ Managing Kubernetes often means memorizing commands and juggling tools. Headlamp
146146
Alongside the new AI Assistant, we’ve been growing Headlamp’s plugin ecosystem so you can bring more of your workflows into a single UI, with integrations like Minikube, Karpenter, and more.
147147

148148
Highlights from the latest plugin releases:
149+
149150
- Minikube plugin, providing a locally stored single node Minikube cluster
150151
- Karpenter plugin, with support for Azure Node Auto-Provisioning (NAP)
151152
- KEDA plugin, which you can learn more about [here](https://headlamp.dev/blog/2025/07/25/enabling-event-driven-autoscaling-with-the-new-keda-plugin-for-headlamp/)
@@ -157,10 +158,10 @@ Thanks to [Vrushali Shah](https://github.com/shahvrushali22) and [Murali Annamne
157158

158159
Alongside new additions, we’ve also spent time refining plugins that many of you already use, focusing on smoother workflows and better integration with the core UI.
159160

160-
<img src="./backstage-plugin.png" alt="Backstage plugin" style="display: block; margin-bottom: 0.5em;" />
161-
<em style="display: block; margin-bottom: 1em;">View of the Backstage plugin</em>
161+
{{< figure src="backstage-plugin.png" alt="Backstage plugin" caption="View of the Backstage plugin" >}}
162162

163163
Changes:
164+
164165
- **Flux plugin**: Updated for Flux v2.7, with support for newer CRDs, navigation fixes so it works smoothly on recent clusters
165166
- **App Catalog**: Now supports Helm repos in addition to Artifact Hub, can run in-cluster via /serviceproxy, and shows both current and latest app versions
166167
- **Plugin Catalog**: Improved card layout and accessibility, plus dependency and Storybook test updates
@@ -170,8 +171,7 @@ Changes:
170171

171172
We’ve focused on making it faster and clearer to build, test, and ship Headlamp plugins, backed by improved documentation and lighter tooling.
172173

173-
<img src="./plugin-development.png" alt="Plugin development" style="display: block; margin-bottom: 0.5em;" />
174-
<em style="display: block; margin-bottom: 1em;">View of the Plugin Development guide</em>
174+
{{< figure src="plugin-development.png" alt="Plugin development" caption="View of the Plugin Development guide" >}}
175175

176176
Changes:
177177
- New and expanded guides for [plugin architecture](https://headlamp.dev/docs/latest/development/architecture#plugins) and [development](https://headlamp.dev/docs/latest/development/plugins/getting-started), including how to publish and ship plugins
@@ -185,6 +185,7 @@ Changes:
185185
We've also been investing in keeping Headlamp secure – both by tightening how authentication works and by staying on top of upstream vulnerabilities and tooling.
186186

187187
Updates:
188+
188189
- We've been keeping up with security updates, regularly updating dependencies and addressing upstream security issues.
189190
- We tightened the Helm chart's default security context and fixed a regression that broke the plugin manager.
190191
- We've improved OIDC security with PKCE support, helping unblock more secure and standards-compliant OIDC setups when deploying Headlamp in-cluster.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
---
2+
layout: blog
3+
title: "Introducing Node Readiness Controller"
4+
date: 2026-02-03T10:00:00+08:00
5+
slug: introducing-node-readiness-controller
6+
author: >
7+
Ajay Sundar Karuppasamy (Google)
8+
---
9+
<img style="float: right; display: inline-block; margin-left: 2em; max-width: 15em;" src="./node-readiness-controller-logo.svg" alt="Logo for node readiness controller" />
10+
11+
In the standard Kubernetes model, a node’s suitability for workloads hinges on a single binary "Ready" condition. However, in modern Kubernetes environments, nodes require complex infrastructure dependencies—such as network agents, storage drivers, GPU firmware, or custom health checks—to be fully operational before they can reliably host pods.
12+
13+
Today, on behalf of the Kubernetes project, I am announcing the [Node Readiness Controller](https://node-readiness-controller.sigs.k8s.io/).
14+
This project introduces a declarative system for managing node taints, extending the readiness guardrails during node bootstrapping beyond standard conditions.
15+
By dynamically managing taints based on custom health signals, the controller ensures that workloads are only placed on nodes that met all infrastructure-specific requirements.
16+
17+
## Why the Node Readiness Controller?
18+
19+
Core Kubernetes Node "Ready" status is often insufficient for clusters with sophisticated bootstrapping requirements. Operators frequently struggle to ensure that specific DaemonSets or local services are healthy before a node enters the scheduling pool.
20+
21+
The Node Readiness Controller fills this gap by allowing operators to define custom scheduling gates tailored to specific node groups. This enables you to enforce
22+
distinct readiness requirements across heterogeneous clusters, ensuring for example, that GPU equipped nodes only accept pods once specialized drivers are verified,
23+
while general purpose nodes follow a standard path.
24+
25+
It provides three primary advantages:
26+
27+
- **Custom Readiness Definitions**: Define what _ready_ means for your specific platform.
28+
- **Automated Taint Management**: The controller automatically applies or removes node taints based on condition status, preventing pods from landing on unready infrastructure.
29+
- **Declarative Node Bootstrapping**: Manage multi-step node initialization reliably, with a clear observability into the bootstrapping process.
30+
31+
## Core concepts and features
32+
33+
The controller centers around the NodeReadinessRule (NRR) API, which allows you to define declarative _gates_ for your nodes.
34+
35+
### Flexible enforcement modes
36+
37+
The controller supports two distinct operational modes:
38+
39+
Continuous enforcement
40+
: Actively maintains the readiness guarantee throughout the node’s entire lifecycle. If a critical dependency (like a device driver) fails later, the node is immediately tainted to prevent new scheduling.
41+
42+
Bootstrap-only enforcement
43+
: Specifically for one-time initialization steps, such as pre-pulling heavy images or hardware provisioning. Once conditions are met, the controller marks the bootstrap as complete and stops monitoring that specific rule for the node.
44+
45+
### Condition reporting
46+
47+
The controller reacts to Node Conditions rather than performing health checks itself. This decoupled design allows it to integrate seamlessly with other tools existing in the ecosystem as well as custom solutions:
48+
49+
- **[Node Problem Detector](https://github.com/kubernetes/node-problem-detector) (NPD)**: Use existing NPD setups and custom scripts to report node health.
50+
- **Readiness Condition Reporter**: A lightweight agent provided by the project that can be deployed to periodically check local HTTP endpoints and patch node conditions accordingly.
51+
52+
### Operational safety with dry run
53+
54+
Deploying new readiness rules across a fleet carries inherent risk. To mitigate this, _dry run_ mode allows operators to first simulate impact on the cluster.
55+
In this mode, the controller logs intended actions and updates the rule's status to show affected nodes without applying actual taints, enabling safe validation before enforcement.
56+
57+
## Example: CNI bootstrapping
58+
59+
The following NodeReadinessRule ensures a node remains unschedulable until its CNI agent is functional. The controller monitors a custom `cniplugin.example.net/NetworkReady` condition and only removes the `readiness.k8s.io/acme.com/network-unavailable` taint once the status is True.
60+
61+
```yaml
62+
apiVersion: readiness.node.x-k8s.io/v1alpha1
63+
kind: NodeReadinessRule
64+
metadata:
65+
name: network-readiness-rule
66+
spec:
67+
conditions:
68+
- type: "cniplugin.example.net/NetworkReady"
69+
requiredStatus: "True"
70+
taint:
71+
key: "readiness.k8s.io/acme.com/network-unavailable"
72+
effect: "NoSchedule"
73+
value: "pending"
74+
enforcementMode: "bootstrap-only"
75+
nodeSelector:
76+
matchLabels:
77+
node-role.kubernetes.io/worker: ""
78+
```
79+
**Demo**:
80+
81+
{{< youtube id="hohIIEXlNpo" title="Node Readiness Controller Demo" >}}
82+
83+
## Getting involved
84+
85+
The Node Readiness Controller is just getting started, with our [initial releases](https://github.com/kubernetes-sigs/node-readiness-controller/releases/tag/v0.1.1) out, and we are seeking community feedback to refine the roadmap. Following our productive Unconference discussions at KubeCon NA 2025, we are excited to continue the conversation in person.
86+
87+
Join us at KubeCon + CloudNativeCon Europe 2026 for our maintainer track session: *[Addressing Non-Deterministic Scheduling: Introducing the Node Readiness Controller](https://sched.co/2EF6E)*.
88+
89+
In the meantime, you can contribute or track our progress here:
90+
91+
- GitHub: https://sigs.k8s.io/node-readiness-controller
92+
- Slack: Join the conversation in [#sig-node-readiness-controller](https://kubernetes.slack.com/messages/sig-node-readiness-controller)
93+
- Documentation: [Getting Started](https://node-readiness-controller.sigs.k8s.io/)

content/en/blog/_posts/2026-02-02-introducing-node-readiness-controller/node-readiness-controller-logo.svg

Lines changed: 34 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)