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-node/2221-remove-dockershim/README.md
+36-35Lines changed: 36 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,20 +34,20 @@
34
34
35
35
Items marked with (R) are required *prior to targeting to a milestone / release*.
36
36
37
-
-[] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
38
-
-[] (R) KEP approvers have approved the KEP status as `implementable`
39
-
-[] (R) Design details are appropriately documented
40
-
-[] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
41
-
-[] (R) Graduation criteria is in place
42
-
-[] (R) Production readiness review completed
37
+
-[X] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
38
+
-[X] (R) KEP approvers have approved the KEP status as `implementable`
39
+
-[X] (R) Design details are appropriately documented
40
+
-[X] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
41
+
-[X] (R) Graduation criteria is in place
42
+
-[X] (R) Production readiness review completed
43
43
-[ ] Production readiness review approved
44
44
-[ ] "Implementation History" section is up-to-date for milestone
45
45
-[ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
46
46
-[ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
47
47
48
48
## Terms
49
49
50
-
-**CRI:** Container Runtime Interface – a plugin interface which enables kubelet to use a wide variety of container
50
+
-**CRI:** Container Runtime Interface – a plugin interface which enables kubelet to use a wide variety of container
51
51
runtimes, without the need to recompile.
52
52
53
53
## Summary
@@ -66,7 +66,8 @@ only developers in sig-node, but also cluster administrators when critical issue
66
66
runtimes. The pros of removing dockershim is straightforward:
67
67
68
68
### Pros
69
-
- Docker is not special and should be just a CRI implementation just like every other CRI implementation in our ecosystem.
69
+
70
+
- Docker is not special and should be just a CRI implementation just like every other CRI implementation in our ecosystem.
70
71
- Currently, dockershim "enjoys" some inconsistent integrations for various reasons (see [legacyLogProvider](https://cs.k8s.io/?q=legacyLogProvider&i=nope&files=&repos=kubernetes/kubernetes) for example) . Removing these "features" should eliminate maintenance burden of kubelet.
71
72
- A cri-dockerd can be maintained independently by folks who are interested in keeping this functionality
72
73
- Over time we can remove vendored docker dependencies in kubelet.
@@ -78,6 +79,7 @@ runtimes. The pros of removing dockershim is straightforward:
78
79
Having said that, cons of removal built-in dockershim requires lots of attention:
79
80
80
81
### Cons
82
+
81
83
- Deployment pain with a new binary in addition to kubelet.
82
84
- An additional component may aggravate the complexity currently. It may be relieved with docker version evolutions.
83
85
- The number of affected users may be large.
@@ -136,18 +138,22 @@ Actions:
136
138
137
139
Step 2: Release kubelet without dockershim
138
140
139
-
Target releases: 1.22
141
+
Target releases: 1.24 (assuming 3 release a year or after April 2021)
140
142
141
143
Actions:
144
+
142
145
- Document and announce migration guide.
143
-
- Release harness would build kubelet with `dockerless` tag on. So the default build will not support docker out of
144
-
the box.
146
+
- Release harness would build kubelet with `dockerless` tag on. So the default build will not support docker out of
147
+
the box.
145
148
- If folks need this support, they would have to build kubelet by themselves as the code is still present in the
146
149
source tree.
147
150
148
-
Step 3: Completely remove in-tree dockershim from kubelet.
151
+
Step 3: Completely remove in-tree dockershim from kubelet
149
152
150
-
Target releases: Deprecation should be for at least a year. So the earliest possible release after that time period.
153
+
Deprecation should be for at least a year. Deprecation was announced in December 2020
154
+
so dockershim might be deleted the same release it is not built.
155
+
156
+
Target releases: same as Step 2.
151
157
152
158
Actions:
153
159
@@ -158,23 +164,24 @@ Actions:
158
164
The easier we make it for folks to switch to CRI implementations the lesser the risk. Another option would be for
159
165
folks for a brand new CRI implementation that targets docker. Though even this option means that folks will have to
160
166
run an extra process outside of kubelet. The worst case scenario is for us to carry on the dockershim for a couple
161
-
of more releases.
167
+
of more releases.
162
168
163
169
### Test Plan
164
170
165
-
Node e2e testing will be augmented to test kubelet built with `dockerless` tag
171
+
Node e2e testing will be augmented to test kubelet built with `dockerless` tag.
166
172
167
173
### Graduation Criteria
168
174
169
175
- All feedback gathered from users
170
176
- Adequate test signal quality for node e2e
171
177
- Tests are in Testgrid and linked in KEP
172
178
- Allowing time for additional user feedback and bug reports
179
+
- Kubelet switched to use CRI API v1
173
180
174
181
### Upgrade / Downgrade Strategy
175
182
176
-
Upgrade: Users should follow the migration guide before upgrading to a version of the kubelet that no longer
177
-
includes dockershim.
183
+
Upgrade: Users should follow the [migration guide](https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/)
184
+
before upgrading to a version of the kubelet that no longer includes dockershim.
178
185
179
186
Downgrade: Not applicable.
180
187
@@ -189,28 +196,19 @@ Not applicable.
189
196
_This section must be completed when targeting alpha to a release._
190
197
191
198
***How can this feature be enabled / disabled in a live cluster?**
192
-
-[ ] Feature gate (also fill in values in `kep.yaml`)
193
-
- Feature gate name: NONE
194
-
- Components depending on the feature gate: kubelet
195
-
- Will enabling / disabling the feature require downtime or reprovisioning
196
-
of a node? No
199
+
Not applicable for this feature.
197
200
198
201
***Does enabling the feature change any default behavior?**
199
-
Yes, the kubelet will size the empty dir volume to match the precise
200
-
amount of memory the pod is able to write rather than over or undersizing.
201
-
Prior behavior is node dependent, and so pod authors had no mechanism
202
-
to control this behavior properly.
202
+
There are slight differences in behavior. Differences in behavior are [listed here](https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-deprecation-affects-you/).
203
203
204
-
***Can the feature be disabled once it has been enabled (i.e. can we roll back
205
-
the enablement)?** Yes
204
+
***Can the feature be disabled once it has been enabled (i.e. can we roll back the enablement)?**
205
+
No.
206
206
207
207
***What happens if we reenable the feature if it was previously rolled back?**
208
-
Pods that run on that node will have memory backed volumes sized based on Linux
209
-
host default. The sizing may not align with actual available memory for an app.
208
+
Not applicable. Roll back is not supported.
210
209
211
210
***Are there any tests for feature enablement/disablement?**
212
-
No, testing behavior with the feature disabled is dependent on node operating
213
-
system configuration. The point of this KEP is to address that coupling.
211
+
Not applicable. Enablement/disablement are not supported.
214
212
215
213
### Rollout, Upgrade and Rollback Planning
216
214
@@ -223,17 +221,17 @@ None.
223
221
***Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?**
224
222
I do not believe this is applicable.
225
223
226
-
***Is the rollout accompanied by any deprecations and/or removals of features, APIs,
224
+
***Is the rollout accompanied by any deprecations and/or removals of features, APIs,
227
225
fields of API types, flags, etc.?**
228
-
Even if applying deprecation policies, they may still surprise some users.
226
+
Even if applying deprecation policies, they may still surprise some users.
229
227
No.
230
228
231
229
### Monitoring Requirements
232
230
233
231
***How can an operator determine if the feature is in use by workloads?**
234
232
Not applicable (no feature gate).
235
233
236
-
***What are the SLIs (Service Level Indicators) an operator can use to determine
234
+
***What are the SLIs (Service Level Indicators) an operator can use to determine
0 commit comments