Skip to content

Commit c83ba56

Browse files
authored
Merge pull request #5525 from adrianmoisey/5495-deprecate-ipvs-mode-in-kube-proxy
KEP-5495: Deprecate IPVS mode in kube-proxy
2 parents b55ead6 + 81e01b3 commit c83ba56

File tree

3 files changed

+374
-0
lines changed

3 files changed

+374
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
kep-number: 5495
2+
deprecated:
3+
approver: "@soltysh"
Lines changed: 334 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,334 @@
1+
<!--
2+
**Note:** When your KEP is complete, all of these comment blocks should be removed.
3+
4+
To get started with this template:
5+
6+
- [X] **Pick a hosting SIG.**
7+
Make sure that the problem space is something the SIG is interested in taking
8+
up. KEPs should not be checked in without a sponsoring SIG.
9+
- [X] **Create an issue in kubernetes/enhancements**
10+
When filing an enhancement tracking issue, please make sure to complete all
11+
fields in that template. One of the fields asks for a link to the KEP. You
12+
can leave that blank until this KEP is filed, and then go back to the
13+
enhancement and add the link.
14+
- [ ] **Make a copy of this template directory.**
15+
Copy this template into the owning SIG's directory and name it
16+
`NNNN-short-descriptive-title`, where `NNNN` is the issue number (with no
17+
leading-zero padding) assigned to your enhancement above.
18+
- [ ] **Fill out as much of the kep.yaml file as you can.**
19+
At minimum, you should fill in the "Title", "Authors", "Owning-sig",
20+
"Status", and date-related fields.
21+
- [ ] **Fill out this file as best you can.**
22+
At minimum, you should fill in the "Summary" and "Motivation" sections.
23+
These should be easy if you've preflighted the idea of the KEP with the
24+
appropriate SIG(s).
25+
- [ ] **Create a PR for this KEP.**
26+
Assign it to people in the SIG who are sponsoring this process.
27+
- [ ] **Merge early and iterate.**
28+
Avoid getting hung up on specific details and instead aim to get the goals of
29+
the KEP clarified and merged quickly. The best way to do this is to just
30+
start with the high-level sections and fill out details incrementally in
31+
subsequent PRs.
32+
33+
Just because a KEP is merged does not mean it is complete or approved. Any KEP
34+
marked as `provisional` is a working document and subject to change. You can
35+
denote sections that are under active debate as follows:
36+
37+
```
38+
<<[UNRESOLVED optional short context or usernames ]>>
39+
Stuff that is being argued.
40+
<<[/UNRESOLVED]>>
41+
```
42+
43+
When editing KEPS, aim for tightly-scoped, single-topic PRs to keep discussions
44+
focused. If you disagree with what is already in a document, open a new PR
45+
with suggested changes.
46+
47+
One KEP corresponds to one "feature" or "enhancement" for its whole lifecycle.
48+
You do not need a new KEP to move from beta to GA, for example. If
49+
new details emerge that belong in the KEP, edit the KEP. Once a feature has become
50+
"implemented", major changes should get new KEPs.
51+
52+
The canonical place for the latest set of instructions (and the likely source
53+
of this file) is [here](/keps/NNNN-kep-template/README.md).
54+
55+
**Note:** Any PRs to move a KEP to `implementable`, or significant changes once
56+
it is marked `implementable`, must be approved by each of the KEP approvers.
57+
If none of those approvers are still appropriate, then changes to that list
58+
should be approved by the remaining approvers and/or the owning SIG (or
59+
SIG Architecture for cross-cutting KEPs).
60+
-->
61+
# KEP-5495: Deprecate IPVS mode in kube-proxy
62+
63+
<!-- toc -->
64+
- [Release Signoff Checklist](#release-signoff-checklist)
65+
- [Summary](#summary)
66+
- [Motivation](#motivation)
67+
- [Goals](#goals)
68+
- [Non-Goals](#non-goals)
69+
- [Proposal](#proposal)
70+
- [Notes/Constraints/Caveats (Optional)](#notesconstraintscaveats-optional)
71+
- [Risks and Mitigations](#risks-and-mitigations)
72+
- [Design Details](#design-details)
73+
- [Test Plan](#test-plan)
74+
- [Prerequisite testing updates](#prerequisite-testing-updates)
75+
- [Unit tests](#unit-tests)
76+
- [Integration tests](#integration-tests)
77+
- [e2e tests](#e2e-tests)
78+
- [Graduation Criteria](#graduation-criteria)
79+
- [Deprecation](#deprecation)
80+
- [Upgrade / Downgrade Strategy](#upgrade--downgrade-strategy)
81+
- [Version Skew Strategy](#version-skew-strategy)
82+
- [Production Readiness Review Questionnaire](#production-readiness-review-questionnaire)
83+
- [Feature Enablement and Rollback](#feature-enablement-and-rollback)
84+
- [Rollout, Upgrade and Rollback Planning](#rollout-upgrade-and-rollback-planning)
85+
- [Monitoring Requirements](#monitoring-requirements)
86+
- [Dependencies](#dependencies)
87+
- [Scalability](#scalability)
88+
- [Troubleshooting](#troubleshooting)
89+
- [Implementation History](#implementation-history)
90+
- [Drawbacks](#drawbacks)
91+
- [Alternatives](#alternatives)
92+
- [Infrastructure Needed (Optional)](#infrastructure-needed-optional)
93+
<!-- /toc -->
94+
95+
## Release Signoff Checklist
96+
97+
Items marked with (R) are required *prior to targeting to a milestone / release*.
98+
99+
- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
100+
- [ ] (R) KEP approvers have approved the KEP status as `implementable`
101+
- [ ] (R) Design details are appropriately documented
102+
- [ ] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
103+
- [ ] e2e Tests for all Beta API Operations (endpoints)
104+
- [ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
105+
- [ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
106+
- [ ] (R) Graduation criteria is in place
107+
- [ ] (R) [all GA Endpoints](https://github.com/kubernetes/community/pull/1806) must be hit by [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
108+
- [ ] (R) Production readiness review completed
109+
- [ ] (R) Production readiness review approved
110+
- [ ] "Implementation History" section is up-to-date for milestone
111+
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
112+
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
113+
114+
<!--
115+
**Note:** This checklist is iterative and should be reviewed and updated every time this enhancement is being considered for a milestone.
116+
-->
117+
118+
[kubernetes.io]: https://kubernetes.io/
119+
[kubernetes/enhancements]: https://git.k8s.io/enhancements
120+
[kubernetes/kubernetes]: https://git.k8s.io/kubernetes
121+
[kubernetes/website]: https://git.k8s.io/website
122+
123+
## Summary
124+
125+
This KEP proposes deprecation of `ipvs` in kube-proxy.
126+
127+
## Motivation
128+
129+
At time of writing, kube-proxy has four supported backends (`iptables`, `ipvs`, `nftables`, and `winkernel`).
130+
131+
sig-network currently lacks maintainers who are familar with the `ipvs` backend code, and as such, has been encouraging
132+
users who report `ipvs` bugs to move to using the `nftables` backend mode, where they can. (ie: [first example], [second example])
133+
134+
`ipvs` was introduced in [KEP-265] to solve performance problems in large clusters.
135+
[KEP-3866] was created to introduce a new `nftables` mode to kube-proxy. The goal of this new backend mode
136+
has always been to eventually replace `ipvs` and `iptables`[^1], as it solve the performance issues of iptables
137+
and already solves many of the bugs present in the `ipvs` mode.
138+
139+
[First example]: https://github.com/kubernetes/kubernetes/issues/132689#issuecomment-3031585314
140+
[second example]: https://github.com/kubernetes/kubernetes/issues/132068#issuecomment-2945169346
141+
[^1]: See https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/3866-nftables-proxy/README.md#we-will-hopefully-be-able-to-trade-2-supported-backends-for-1
142+
143+
[KEP-265]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/265-ipvs-based-load-balancing/README.md
144+
[KEP-3866]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/3866-nftables-proxy/README.md
145+
146+
### Goals
147+
148+
- Deprecate the `ipvs` mode of kube-proxy
149+
150+
### Non-Goals
151+
152+
- Removal of the `ipvs` mode of kube-proxy - The specifics of removal of `ipvs` are being handled in [KEP-5343]
153+
154+
[KEP-5343]: https://github.com/kubernetes/enhancements/pull/5344
155+
156+
## Proposal
157+
158+
### Notes/Constraints/Caveats (Optional)
159+
160+
The specifics of removal of `ipvs` mode will be handled in [KEP-5343]
161+
162+
### Risks and Mitigations
163+
164+
N/A
165+
166+
## Design Details
167+
168+
### Test Plan
169+
170+
[X] I/we understand the owners of the involved components may require updates to
171+
existing tests to make this code solid enough prior to committing the changes necessary
172+
to implement this enhancement.
173+
174+
##### Prerequisite testing updates
175+
176+
##### Unit tests
177+
178+
N/A - This KEP is only adding a deprecation warning and updating necessary parts of the website
179+
180+
##### Integration tests
181+
182+
N/A - This KEP is only adding a deprecation warning and updating nessesary parts of the website
183+
184+
##### e2e tests
185+
186+
N/A - This KEP is only adding a deprecation warning and updating nessesary parts of the website
187+
188+
### Graduation Criteria
189+
190+
#### Deprecation
191+
192+
- The Kubernetes web site has been updated with deprecation notices for the `ipvs` mode of kube-proxy
193+
- Kube-proxy prints a warning when a user starts kube-proxy in `ipvs` mode
194+
- All nftables-mode bugfixes have been backported to 1.34 and 1.33, to ensure that `ipvs` users on older releases can still migrate to `nftables`.
195+
196+
### Upgrade / Downgrade Strategy
197+
198+
N/A - The only code change is a warning notice
199+
200+
### Version Skew Strategy
201+
202+
N/A - The only code change is a warning notice
203+
204+
## Production Readiness Review Questionnaire
205+
206+
### Feature Enablement and Rollback
207+
208+
###### How can this feature be enabled / disabled in a live cluster?
209+
210+
N/A
211+
212+
###### Does enabling the feature change any default behavior?
213+
214+
N/A
215+
216+
###### Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)?
217+
218+
N/A
219+
220+
###### What happens if we reenable the feature if it was previously rolled back?
221+
222+
###### Are there any tests for feature enablement/disablement?
223+
224+
N/A
225+
226+
### Rollout, Upgrade and Rollback Planning
227+
228+
N/A
229+
230+
###### How can a rollout or rollback fail? Can it impact already running workloads?
231+
232+
N/A
233+
234+
###### What specific metrics should inform a rollback?
235+
236+
N/A
237+
238+
###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?
239+
240+
N/A
241+
242+
###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?
243+
244+
N/A
245+
246+
### Monitoring Requirements
247+
248+
N/A
249+
250+
###### How can an operator determine if the feature is in use by workloads?
251+
252+
N/A
253+
254+
###### How can someone using this feature know that it is working for their instance?
255+
256+
N/A
257+
258+
###### What are the reasonable SLOs (Service Level Objectives) for the enhancement?
259+
260+
N/A
261+
262+
###### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?
263+
264+
N/A
265+
266+
###### Are there any missing metrics that would be useful to have to improve observability of this feature?
267+
268+
N/A
269+
270+
### Dependencies
271+
272+
###### Does this feature depend on any specific services running in the cluster?
273+
274+
N/A
275+
276+
### Scalability
277+
278+
N/A
279+
280+
###### Will enabling / using this feature result in any new API calls?
281+
282+
N/A
283+
284+
###### Will enabling / using this feature result in introducing new API types?
285+
286+
N/A
287+
288+
###### Will enabling / using this feature result in any new calls to the cloud provider?
289+
290+
N/A
291+
292+
###### Will enabling / using this feature result in increasing size or count of the existing API objects?
293+
294+
N/A
295+
296+
###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs?
297+
298+
N/A
299+
300+
###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components?
301+
302+
N/A
303+
304+
###### Can enabling / using this feature result in resource exhaustion of some node resources (PIDs, sockets, inodes, etc.)?
305+
306+
N/A
307+
308+
### Troubleshooting
309+
310+
###### How does this feature react if the API server and/or etcd is unavailable?
311+
312+
###### What are other known failure modes?
313+
314+
N/A
315+
316+
###### What steps should be taken if SLOs are not being met to determine the problem?
317+
318+
## Implementation History
319+
320+
N/A
321+
322+
## Drawbacks
323+
324+
Users may be running version of the kernel which isn't new enough to support the `nftables` backend mode in kube-proxy.
325+
326+
## Alternatives
327+
328+
Getting active maintainers for `ipvs` may be a short term alternative, see [The ipvs mode of kube-proxy will not save us] (from [KEP-3866]) for details
329+
330+
[The ipvs mode of kube-proxy will not save us]: https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/3866-nftables-proxy/README.md#the-ipvs-mode-of-kube-proxy-will-not-save-us
331+
332+
## Infrastructure Needed (Optional)
333+
334+
N/A
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
title: Deprecate ipvs mode in kube-proxy
2+
kep-number: 5495
3+
authors:
4+
- "@adrianmoisey"
5+
owning-sig: sig-network
6+
participating-sigs: []
7+
status: implementable
8+
creation-date: 2025-08-25
9+
reviewers:
10+
- "@thockin"
11+
- "@danwinship"
12+
- "@aojea"
13+
approvers:
14+
- "@thockin"
15+
- "@danwinship"
16+
- "@aojea"
17+
18+
see-also:
19+
- "/keps/sig-network/265-ipvs-based-load-balancing/README.md"
20+
- "/keps/sig-network/3866-nftables-proxy/README.md"
21+
replaces: []
22+
23+
stage: deprecated
24+
25+
latest-milestone: "v1.35"
26+
27+
# The milestone at which this feature was, or is targeted to be, at each stage.
28+
milestone:
29+
deprecated: "v1.35"
30+
31+
# The following PRR answers are required at alpha release
32+
# List the feature gate name and the components for which it must be enabled
33+
feature-gates: []
34+
disable-supported: false
35+
36+
# The following PRR answers are required at beta release
37+
metrics: []

0 commit comments

Comments
 (0)