Skip to content

Commit e45abe0

Browse files
authored
Merge pull request #46948 from a-mccarthy/kubernetes-1.31-deprecations-and-removals-blog
Add kubernetes 1.31 deprecations and removals blog
2 parents 65dfdc9 + d4a65b0 commit e45abe0

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
layout: blog
3+
title: 'Kubernetes Removals and Major Changes In v1.31'
4+
date: 2024-07-19
5+
slug: kubernetes-1-31-upcoming-changes
6+
author: >
7+
Abigail McCarthy,
8+
Edith Puclla,
9+
Matteo Bianchi,
10+
Rashan Smith,
11+
Yigit Demirbas
12+
---
13+
14+
As Kubernetes develops and matures, features may be deprecated, removed, or replaced with better ones for the project's overall health.
15+
This article outlines some planned changes for the Kubernetes v1.31 release that the release team feels you should be aware of for the continued maintenance of your Kubernetes environment.
16+
The information listed below is based on the current status of the v1.31 release.
17+
It may change before the actual release date.
18+
19+
## The Kubernetes API removal and deprecation process
20+
The Kubernetes project has a well-documented [deprecation policy](/docs/reference/using-api/deprecation-policy/) for features.
21+
This policy states that stable APIs may only be deprecated when a newer, stable version of that API is available and that APIs have a minimum lifetime for each stability level.
22+
A deprecated API has been marked for removal in a future Kubernetes release.
23+
It will continue to function until removal (at least one year from the deprecation), but usage will display a warning.
24+
Removed APIs are no longer available in the current version, so you must migrate to using the replacement.
25+
26+
* Generally available (GA) or stable API versions may be marked as deprecated but must not be removed within a major version of Kubernetes.
27+
28+
* Beta or pre-release API versions must be supported for 3 releases after the deprecation.
29+
30+
* Alpha or experimental API versions may be removed in any release without prior deprecation notice.
31+
32+
Whether an API is removed because a feature graduated from beta to stable or because that API did not succeed, all removals comply with this deprecation policy.
33+
Whenever an API is removed, migration options are communicated in the [documentation](/docs/reference/using-api/deprecation-guide/).
34+
35+
## A note about SHA-1 signature support
36+
37+
In [go1.18](https://go.dev/doc/go1.18#sha1) (released in March 2022), the crypto/x509 library started to reject certificates signed with a SHA-1 hash function.
38+
While SHA-1 is established to be unsafe and publicly trusted Certificate Authorities have not issued SHA-1 certificates since 2015, there might still be cases in the context of Kubernetes where user-provided certificates are signed using a SHA-1 hash function through private authorities with them being used for Aggregated API Servers or webhooks.
39+
If you have relied on SHA-1 based certificates, you must explicitly opt back into its support by setting `GODEBUG=x509sha1=1` in your environment.
40+
41+
Given Go's [compatibility policy for GODEBUGs](https://go.dev/blog/compat), the `x509sha1` GODEBUG and the support for SHA-1 certificates will [fully go away in go1.24](https://tip.golang.org/doc/go1.23) which will be released in the first half of 2025.
42+
If you rely on SHA-1 certificates, please start moving off them.
43+
44+
Please see [Kubernetes issue #125689](https://github.com/kubernetes/kubernetes/issues/125689) to get a better idea of timelines around the support for SHA-1 going away, when Kubernetes releases plans to adopt go1.24, and for more details on how to detect usage of SHA-1 certificates via metrics and audit logging.
45+
46+
## Deprecations and removals in Kubernetes 1.31
47+
48+
49+
### Deprecation of `status.nodeInfo.kubeProxyVersion` field for Nodes ([KEP 4004](https://github.com/kubernetes/enhancements/issues/4004))
50+
51+
The `.status.nodeInfo.kubeProxyVersion` field of Nodes is being deprecated in Kubernetes v1.31,
52+
and will be removed in a later release.
53+
It's being deprecated because the value of this field wasn't (and isn't) accurate.
54+
This field is set by the kubelet, which does not have reliable information about the kube-proxy version or whether kube-proxy is running.
55+
56+
The `DisableNodeKubeProxyVersion` [feature gate](/docs/reference/command-line-tools-reference/feature-gates/) will be set to `true` in by default in v1.31 and the kubelet will no longer attempt to set the `.status.kubeProxyVersion` field for its associated Node.
57+
58+
### Removal of all in-tree integrations with cloud providers
59+
60+
As highlighted in a [previous article](/blog/2024/05/20/completing-cloud-provider-migration/), the last remaining in-tree support for cloud provider integration will be removed as part of the v1.31 release.
61+
This doesn't mean you can't integrate with a cloud provider, however you now **must** use the
62+
recommended approach using an external integration. Some integrations are part of the Kubernetes
63+
project and others are third party software.
64+
65+
This milestone marks the completion of the externalization process for all cloud providers' integrations from the Kubernetes core ([KEP-2395](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cloud-provider/2395-removing-in-tree-cloud-providers/README.md)), a process started with Kubernetes v1.26.
66+
This change helps Kubernetes to get closer to being a truly vendor-neutral platform.
67+
68+
For further details on the cloud provider integrations, read our [v1.29 Cloud Provider Integrations feature blog](/blog/2023/12/14/cloud-provider-integration-changes/).
69+
For additional context about the in-tree code removal, we invite you to check the ([v1.29 deprecation blog](/blog/2023/11/16/kubernetes-1-29-upcoming-changes/#removal-of-in-tree-integrations-with-cloud-providers-kep-2395-https-kep-k8s-io-2395)).
70+
71+
The latter blog also contains useful information for users who need to migrate to version v1.29 and later.
72+
73+
74+
### Removal of kubelet `--keep-terminated-pod-volumes` command line flag
75+
76+
The kubelet flag `--keep-terminated-pod-volumes`, which was deprecated in 2017, will be removed as
77+
part of the v1.31 release.
78+
79+
You can find more details in the pull request [#122082](https://github.com/kubernetes/kubernetes/pull/122082).
80+
81+
### Removal of CephFS volume plugin
82+
83+
[CephFS volume plugin](/docs/concepts/storage/volumes/#cephfs) was removed in this release and the `cephfs` volume type became non-functional.
84+
85+
It is recommended that you use the [CephFS CSI driver](https://github.com/ceph/ceph-csi/) as a third-party storage driver instead. If you were using the CephFS volume plugin before upgrading the cluster version to v1.31, you must re-deploy your application to use the new driver.
86+
87+
CephFS volume plugin was formally marked as deprecated in v1.28.
88+
89+
### Removal of Ceph RBD volume plugin
90+
91+
The v1.31 release will remove the [Ceph RBD volume plugin](/docs/concepts/storage/volumes/#rbd) and its CSI migration support, making the `rbd` volume type non-functional.
92+
93+
It's recommended that you use the [RBD CSI driver](https://github.com/ceph/ceph-csi/) in your clusters instead.
94+
If you were using Ceph RBD volume plugin before upgrading the cluster version to v1.31, you must re-deploy your application to use the new driver.
95+
96+
The Ceph RBD volume plugin was formally marked as deprecated in v1.28.
97+
98+
### Deprecation of non-CSI volume limit plugins in kube-scheduler
99+
100+
The v1.31 release will deprecate all non-CSI volume limit scheduler plugins, and will remove some
101+
already deprected plugins from the [default plugins](/docs/reference/scheduling/config/), including:
102+
103+
- `AzureDiskLimits`
104+
- `CinderLimits`
105+
- `EBSLimits`
106+
- `GCEPDLimits`
107+
108+
It's recommended that you use the `NodeVolumeLimits` plugin instead because it can handle the same functionality as the removed plugins since those volume types have been migrated to CSI.
109+
Please replace the deprecated plugins with the `NodeVolumeLimits` plugin if you explicitly use them in the [scheduler config](/docs/reference/scheduling/config/).
110+
The `AzureDiskLimits`, `CinderLimits`, `EBSLimits`, and `GCEPDLimits` plugins will be removed in a future release.
111+
112+
These plugins will be removed from the default scheduler plugins list as they have been deprecated since Kubernetes v1.14.
113+
114+
## Looking ahead
115+
The official list of API removals planned for [Kubernetes v1.32](/docs/reference/using-api/deprecation-guide/#v1-32) include:
116+
117+
* The `flowcontrol.apiserver.k8s.io/v1beta3` API version of FlowSchema and PriorityLevelConfiguration will be removed.
118+
To prepare for this, you can edit your existing manifests and rewrite client software to use the `flowcontrol.apiserver.k8s.io/v1 API` version, available since v1.29.
119+
All existing persisted objects are accessible via the new API. Notable changes in flowcontrol.apiserver.k8s.io/v1beta3 include that the PriorityLevelConfiguration `spec.limited.nominalConcurrencyShares` field only defaults to 30 when unspecified, and an explicit value of 0 is not changed to 30.
120+
121+
For more information, please refer to the [API deprecation guide](/docs/reference/using-api/deprecation-guide/#v1-32).
122+
123+
## Want to know more?
124+
The Kubernetes release notes announce deprecations.
125+
We will formally announce the deprecations in [Kubernetes v1.31](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.31.md#deprecation) as part of the CHANGELOG for that release.
126+
127+
You can see the announcements of pending deprecations in the release notes for:
128+
129+
* [Kubernetes v1.30](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.30.md#deprecation)
130+
131+
* [Kubernetes v1.29](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.29.md#deprecation)
132+
133+
* [Kubernetes v1.28](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.28.md#deprecation)
134+
135+
* [Kubernetes v1.27](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.27.md#deprecation)
136+
137+

0 commit comments

Comments
 (0)