Skip to content

Commit 19dd209

Browse files
authored
Merge pull request #4625 from HirazawaUi/promote-DisableNodeKubeProxyVersion-to-beta
KEP-4004: promote stage to beta
2 parents b38aeda + 7bae9b7 commit 19dd209

File tree

3 files changed

+173
-8
lines changed

3 files changed

+173
-8
lines changed

keps/prod-readiness/sig-network/4004.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
kep-number: 4004
55
alpha:
66
approver: "@wojtek-t"
7+
beta:
8+
approver: "@wojtek-t"

keps/sig-network/4004-deprecate-kube-proxy-version/README.md

Lines changed: 169 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,69 @@ The feature should continue to work just fine.
187187

188188
###### Are there any tests for feature enablement/disablement?
189189

190-
In addition to the unit tests, we will manually confirm that restarting kubelet with the
191-
feature gate toggled has the expected behavior (that it sets `kubeProxyVersion` if the
192-
feature gate is disabled, even if it doesn't also need to set `kubeletVersion`, and that
193-
it clears `kubeProxyVersion` if the feature gate is enabled).
190+
I manually confirmed that restarting kubelet behaves as expected with feature gate enabled/disabled.
191+
192+
I've tried to simulate this manually by running (using `local-cluster-up.sh).
193+
194+
Cluster Version v1.31+, `FEATURE_GATES=DisableNodeKubeProxyVersion=false` (manual setting):
195+
196+
```
197+
~ kubectl get nodes 127.0.0.1 -oyaml
198+
apiVersion: v1
199+
kind: Node
200+
...
201+
name: 127.0.0.1
202+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
203+
...
204+
kubeProxyVersion: v0.0.0-master+$Format:%H$
205+
...
206+
```
207+
208+
* Change the value of `DisableNodeKubeProxyVersion` to true and restart kubelet, The value of the `kubeProxyVersion` field in nodeInfo is empty.
209+
210+
```
211+
~ sudo sed -i s@DisableNodeKubeProxyVersion:\ false@DisableNodeKubeProxyVersion:\ true@g /tmp/local-up-cluster.sh.VABqgo/kubelet.yaml
212+
➜ kubernetes git:(master) ✗ sudo -E /home/bing/go/src/k8s.io/kubernetes/kubernetes/_output/local/bin/linux/arm64/kubelet \
213+
--v=3 --vmodule= --hostname-override=127.0.0.1 --cloud-provider= \
214+
--cloud-config= --bootstrap-kubeconfig=/var/run/kubernetes/kubelet.kubeconfig \
215+
--kubeconfig=/var/run/kubernetes/kubelet-rotated.kubeconfig \
216+
--config=/tmp/local-up-cluster.sh.VABqgo/kubelet.yaml
217+
```
218+
219+
```
220+
➜ ~ kubectl get nodes 127.0.0.1 -oyaml
221+
apiVersion: v1
222+
kind: Node
223+
...
224+
name: 127.0.0.1
225+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
226+
...
227+
kubeProxyVersion: ""
228+
...
229+
```
230+
231+
* Change the value of `DisableNodeKubeProxyVersion` to false and restart kubelet, The value of the `kubeProxyVersion` field in nodeInfo is not empty.
232+
233+
```
234+
~ sudo sed -i s@DisableNodeKubeProxyVersion:\ true@DisableNodeKubeProxyVersion:\ false@g /tmp/local-up-cluster.sh.VABqgo/kubelet.yaml
235+
➜ kubernetes git:(master) ✗ sudo -E /home/bing/go/src/k8s.io/kubernetes/kubernetes/_output/local/bin/linux/arm64/kubelet \
236+
--v=3 --vmodule= --hostname-override=127.0.0.1 --cloud-provider= \
237+
--cloud-config= --bootstrap-kubeconfig=/var/run/kubernetes/kubelet.kubeconfig \
238+
--kubeconfig=/var/run/kubernetes/kubelet-rotated.kubeconfig \
239+
--config=/tmp/local-up-cluster.sh.VABqgo/kubelet.yaml
240+
```
241+
242+
```
243+
~ kubectl get nodes 127.0.0.1 -oyaml
244+
apiVersion: v1
245+
kind: Node
246+
...
247+
name: 127.0.0.1
248+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
249+
...
250+
kubeProxyVersion: v0.0.0-master+$Format:%H$
251+
...
252+
```
194253

195254
### Rollout, Upgrade and Rollback Planning
196255

@@ -204,11 +263,107 @@ N/A
204263

205264
###### Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?
206265

207-
N/A
266+
I've tried to simulate this manually by running (using `local-cluster-up.sh`with `PRESERVE_ETCD=true`):
267+
268+
1. Cluster Version v1.30 `FEATURE_GATES=DisableNodeKubeProxyVersion=false` (default value)
269+
270+
```
271+
git checkout release-1.30
272+
Switched to branch 'release-1.30'
273+
Your branch is up to date with 'upstream/release-1.30'.
274+
➜ kubernetes git:(release-1.30)
275+
➜ kubernetes git:(release-1.30) sudo -E env PATH=$PATH PRESERVE_ETCD=true \
276+
ETCD_DIR=/tmp/etcd-temp ./hack/local-up-cluster.sh
277+
```
278+
279+
```
280+
~ kubectl get nodes 127.0.0.1 -oyaml
281+
apiVersion: v1
282+
kind: Node
283+
...
284+
name: 127.0.0.1
285+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
286+
...
287+
kubeProxyVersion: v0.0.0-master+$Format:%H$
288+
...
289+
```
290+
291+
* The value of the `kubeProxyVersion` field in nodeInfo is not empty.
292+
293+
2. Cluster Version v1.31+ `FEATURE_GATES=DisableNodeKubeProxyVersion=true` (default value)
294+
295+
```
296+
git checkout master
297+
Switched to branch 'master'
298+
➜ kubernetes git:(master) sudo -E env PATH=$PATH PRESERVE_ETCD=true \
299+
ETCD_DIR=/tmp/etcd-temp ./hack/local-up-cluster.sh
300+
301+
```
302+
```
303+
➜ ~ kubectl get nodes 127.0.0.1 -oyaml
304+
apiVersion: v1
305+
kind: Node
306+
...
307+
name: 127.0.0.1
308+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
309+
...
310+
kubeProxyVersion: ""
311+
...
312+
```
313+
314+
* The value of the `kubeProxyVersion` field in nodeInfo is empty.
315+
316+
3. Cluster Version v1.30 `FEATURE_GATES=DisableNodeKubeProxyVersion=true` (manual setting)
317+
318+
```
319+
git checkout release-1.30
320+
Already on 'release-1.30'
321+
Your branch is up to date with 'upstream/release-1.30'.
322+
➜ kubernetes git:(release-1.30)
323+
➜ kubernetes git:(release-1.30) sudo -E env PATH=$PATH PRESERVE_ETCD=true \
324+
ETCD_DIR=/tmp/etcd-temp FEATURE_GATES=DisableNodeKubeProxyVersion=true ./hack/local-up-cluster.sh
325+
```
326+
327+
```
328+
➜ ~ kubectl get nodes 127.0.0.1 -oyaml
329+
apiVersion: v1
330+
kind: Node
331+
...
332+
name: 127.0.0.1
333+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
334+
...
335+
kubeProxyVersion: ""
336+
...
337+
```
338+
339+
* The value of the `kubeProxyVersion` field in nodeInfo is empty.
340+
341+
4. Cluster Version v1.31+ `FEATURE_GATES=DisableNodeKubeProxyVersion=false` (manual setting)
342+
343+
```
344+
git checkout master
345+
Switched to branch 'master'
346+
➜ kubernetes git:(master) ✗ sudo -E env PATH=$PATH PRESERVE_ETCD=true \
347+
ETCD_DIR=/tmp/etcd-temp FEATURE_GATES=DisableNodeKubeProxyVersion=false ./hack/local-up-cluster.sh
348+
```
349+
350+
```
351+
~ kubectl get nodes 127.0.0.1 -oyaml
352+
apiVersion: v1
353+
kind: Node
354+
...
355+
name: 127.0.0.1
356+
uid: e74238e1-9e3c-41c5-a4ca-3a30941cd16c
357+
...
358+
kubeProxyVersion: v0.0.0-master+$Format:%H$
359+
...
360+
```
361+
362+
* The value of the `kubeProxyVersion` field in nodeInfo is not empty.
208363

209364
###### Is the rollout accompanied by any deprecations and/or removals of features, APIs, fields of API types, flags, etc.?
210365

211-
No
366+
* We will deprecate the `kubeProxyVersion` field in `v1.Node`.
212367

213368
### Monitoring Requirements
214369

@@ -252,14 +407,22 @@ No
252407

253408
###### How does this feature react if the API server and/or etcd is unavailable?
254409

410+
There will be no impact, because when the API server and etcd are not available, we will not be able to get the Node object.
411+
255412
###### What are other known failure modes?
256413

414+
N/A.
415+
257416
###### What steps should be taken if SLOs are not being met to determine the problem?
258417

418+
N/A.
419+
259420
## Implementation History
260421

261422
\- 2023-05-15: Initial draft KEP
262423

424+
\- 2024-06-10: Promoted to beta and add manual upgrade and rollback tests
425+
263426
## Drawbacks
264427

265428
## Alternatives

keps/sig-network/4004-deprecate-kube-proxy-version/kep.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ see-also: []
1717
replaces: []
1818

1919
# The target maturity stage in the current dev cycle for this KEP.
20-
stage: alpha
20+
stage: beta
2121

2222
# The most recent milestone for which work toward delivery of this KEP has been
2323
# done. This can be the current (upcoming) milestone, if it is being actively
2424
# worked on.
25-
latest-milestone: "v1.29"
25+
latest-milestone: "v1.31"
2626

2727
# The milestone at which this feature was, or is targeted to be, at each stage.
2828
milestone:

0 commit comments

Comments
 (0)