Skip to content

Commit f71048a

Browse files
authored
Merge pull request kubernetes#2481 from SergeyKanzhelev/dockershimRemovalPostponement
updated Dockershim KEP and postponed graduation date for one release
2 parents 2c18f50 + 72ac3ef commit f71048a

File tree

1 file changed

+36
-35
lines changed
  • keps/sig-node/2221-remove-dockershim

1 file changed

+36
-35
lines changed

keps/sig-node/2221-remove-dockershim/README.md

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,20 @@
3434

3535
Items marked with (R) are required *prior to targeting to a milestone / release*.
3636

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
4343
- [ ] Production readiness review approved
4444
- [ ] "Implementation History" section is up-to-date for milestone
4545
- [ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
4646
- [ ] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
4747

4848
## Terms
4949

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
5151
runtimes, without the need to recompile.
5252

5353
## Summary
@@ -66,7 +66,8 @@ only developers in sig-node, but also cluster administrators when critical issue
6666
runtimes. The pros of removing dockershim is straightforward:
6767

6868
### 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.
7071
- 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.
7172
- A cri-dockerd can be maintained independently by folks who are interested in keeping this functionality
7273
- Over time we can remove vendored docker dependencies in kubelet.
@@ -78,6 +79,7 @@ runtimes. The pros of removing dockershim is straightforward:
7879
Having said that, cons of removal built-in dockershim requires lots of attention:
7980

8081
### Cons
82+
8183
- Deployment pain with a new binary in addition to kubelet.
8284
- An additional component may aggravate the complexity currently. It may be relieved with docker version evolutions.
8385
- The number of affected users may be large.
@@ -136,18 +138,22 @@ Actions:
136138

137139
Step 2: Release kubelet without dockershim
138140

139-
Target releases: 1.22
141+
Target releases: 1.24 (assuming 3 release a year or after April 2021)
140142

141143
Actions:
144+
142145
- 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.
145148
- If folks need this support, they would have to build kubelet by themselves as the code is still present in the
146149
source tree.
147150

148-
Step 3: Completely remove in-tree dockershim from kubelet.
151+
Step 3: Completely remove in-tree dockershim from kubelet
149152

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.
151157

152158
Actions:
153159

@@ -158,23 +164,24 @@ Actions:
158164
The easier we make it for folks to switch to CRI implementations the lesser the risk. Another option would be for
159165
folks for a brand new CRI implementation that targets docker. Though even this option means that folks will have to
160166
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.
162168

163169
### Test Plan
164170

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.
166172

167173
### Graduation Criteria
168174

169175
- All feedback gathered from users
170176
- Adequate test signal quality for node e2e
171177
- Tests are in Testgrid and linked in KEP
172178
- Allowing time for additional user feedback and bug reports
179+
- Kubelet switched to use CRI API v1
173180

174181
### Upgrade / Downgrade Strategy
175182

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.
178185

179186
Downgrade: Not applicable.
180187

@@ -189,28 +196,19 @@ Not applicable.
189196
_This section must be completed when targeting alpha to a release._
190197

191198
* **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.
197200

198201
* **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/).
203203

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.
206206

207207
* **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.
210209

211210
* **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.
214212

215213
### Rollout, Upgrade and Rollback Planning
216214

@@ -223,17 +221,17 @@ None.
223221
* **Were upgrade and rollback tested? Was the upgrade->downgrade->upgrade path tested?**
224222
I do not believe this is applicable.
225223

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,
227225
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.
229227
No.
230228

231229
### Monitoring Requirements
232230

233231
* **How can an operator determine if the feature is in use by workloads?**
234232
Not applicable (no feature gate).
235233

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
237235
the health of the service?**
238236
This does not seem relevant to this feature.
239237

@@ -286,6 +284,9 @@ Not applicable
286284

287285
## Implementation History
288286

287+
- 12/02/2020 (v1.20): [Dockershim Deprecation FAQ](https://kubernetes.io/blog/2020/12/02/dockershim-faq/) published.
288+
- 12/08/2020 (v1.20): dockershim deprecation [warning added to kubelet](https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/#dockershim-deprecation).
289+
289290
## Drawbacks
290291

291292
None.

0 commit comments

Comments
 (0)