You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-network/4004-deprecate-kube-proxy-version/README.md
+17-4
Original file line number
Diff line number
Diff line change
@@ -76,9 +76,18 @@ or even if kube-proxy is running.
76
76
77
77
### Non-Goals
78
78
79
+
- Having kube-proxy itself set `status.nodeInfo.kubeProxyVersion`. Components should not
80
+
be trying to figure out what Service features are available based on the kube-proxy
81
+
version anyway, since some clusters may run an alternative service proxy implementation.
82
+
If there is a need for a Service proxy feature discovery feature in the future, then
83
+
that would need to be designed at that time.
84
+
85
+
- Changing `v1.Node` validation to *require* that the field be unset.
86
+
79
87
## Proposal
80
88
81
-
The proposal is to deprecate the `kubeProxyVersion` field of `NodeStatus`, and to stop setting it in the future.
89
+
The proposal is to deprecate the `kubeProxyVersion` field of `NodeStatus`, and to have
90
+
kubelet set it to an empty string, rather than the kubelet version, in the future.
82
91
83
92
This field was used by the GCP cloud provider up until 1.28 for the legacy built-in cloud provider ([kubernetes #117806], and up until 1.29 for the external cloud-provider ([cloud-provider-gcp #533]). It may also be used by other components. Thus, we will use a feature gate to protect it until all components are fixed.
84
93
@@ -120,9 +129,10 @@ to implement this enhancement.
120
129
121
130
- Add a test to `TestVersionInfo` in `pkg/kubelet/nodestatus` to see if FeatureGate behaves as expected when it is turned on or off.
122
131
- If DisableNodeKubeProxyVersion FeatureGate is enabled:
123
-
-`status.nodeInfo.kubeProxyVersion` will be empty.
132
+
-`status.nodeInfo.kubeProxyVersion` will remain unset if it is initially unset.
133
+
-`status.nodeInfo.kubeProxyVersion` will be cleared if it is set.
124
134
- Else:
125
-
-`status.nodeInfo.kubeProxyVersion` will be not empty .
135
+
-`status.nodeInfo.kubeProxyVersion` will be set to the same value as `status.nodeInfo.kubeletVersion`
126
136
127
137
##### Integration tests
128
138
@@ -177,7 +187,10 @@ The feature should continue to work just fine.
177
187
178
188
###### Are there any tests for feature enablement/disablement?
179
189
180
-
No, we don't need to test what happens when the value of the field changes, because our goal is to make sure no one is looking at the value at all, so no components should notice if the value changes.
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).
0 commit comments