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: content/en/blog/_posts/2024-07-18-kubernetes-1.31-deprecations-and-removals.md
+48-16Lines changed: 48 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,72 +11,99 @@ author: >
11
11
Yigit Demirbas
12
12
---
13
13
14
-
As Kubernetes develops and matures, features may be deprecated, removed, or replaced with better ones for the project's overall health. 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. The Information listed below is based on the current status of the v1.31 release. It may change before the actual release date.
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.
15
18
16
19
### The Kubernetes API Removal and Deprecation process
17
-
The Kubernetes project has a well-documented [deprecation policy](/docs/reference/using-api/deprecation-policy/) for features. 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. A deprecated API has been marked for removal in a future Kubernetes release. It will continue to function until removal (at least one year from the deprecation), but usage will result in a warning being displayed. Removed APIs are no longer available in the current version, so you must migrate to using the replacement.
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 result in a warning being displayed.
24
+
Removed APIs are no longer available in the current version, so you must migrate to using the replacement.
18
25
19
26
* Generally available (GA) or stable API versions may be marked as deprecated but must not be removed within a major version of Kubernetes.
20
27
21
28
* Beta or pre-release API versions must be supported for 3 releases after the deprecation.
22
29
23
30
* Alpha or experimental API versions may be removed in any release without prior deprecation notice.
24
31
25
-
Whether an API is removed because a feature graduated from beta to stable or because that API simply did not succeed, all removals comply with this deprecation policy. Whenever an API is removed, migration options are communicated in the [documentation](/docs/reference/using-api/deprecation-guide/).
32
+
Whether an API is removed because a feature graduated from beta to stable or because that API simply 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/).
26
34
27
35
## A note about SHA-1 signature support fully going away in go1.24
28
36
29
-
In [go1.18](https://go.dev/doc/go1.18#sha1) (released in March 2022), the crypto/x509 library started to reject certificates that were signed with a SHA-1 hash function. 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 of webhooks. 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.
37
+
In [go1.18](https://go.dev/doc/go1.18#sha1) (released in March 2022), the crypto/x509 library started to reject certificates that were 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.
30
40
31
-
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. If you rely on SHA-1 certificates, please start moving off them.
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.
32
43
33
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.
34
45
35
46
## Deprecations and Removals in Kubernetes 1.31
36
47
37
48
### Deprecate kustomize from kubectl [KEP 4706](https://github.com/kubernetes/enhancements/issues/4706)
49
+
38
50
In the early days of Kubernetes, when not that many tools in the field of declarative configurations existed, [kustomize](https://github.com/kubernetes-sigs/kustomize) was introduced, and to make life easier for kubectl users, it was included in kubectl by default.
39
51
40
-
Over the past several years, the ecosystem around Kubernetes has grown significantly, resulting in a wider spread of tooling, including declarative configuration. With these new options, it's best left to the user to match their use cases with the best tool capable of resolving the problem at hand. Using [kubectl plugins](/docs/tasks/extend-kubectl/kubectl-plugins/), users can choose the best tool to match their needs.
52
+
Over the past several years, the ecosystem around Kubernetes has grown significantly, resulting in a wider spread of tooling, including declarative configuration.
53
+
With these new options, users are able to use [kubectl plugins](/docs/tasks/extend-kubectl/kubectl-plugins/) to match their use cases with the best tool capable of resolving the problem at hand.
41
54
42
-
With Kubernetes v1.31, kustomize will be deprecated from kubectl. It will be removed in a future release. This will allow both tools to be developed and maintained separately.
55
+
With Kubernetes v1.31, kustomize will be deprecated from kubectl. It will be removed in a future release.
56
+
The exact removal timeline is currently described in [the enhancement](https://github.com/kubernetes/enhancements/blob/master/keps/sig-cli/4706-deprecate-and-remove-kustomize/README.md).
57
+
This will allow both tools to be developed and maintained separately.
The kubelet support for RunOnce mode is being deprecated and will be removed in a future release. Users are advised to deprecate RunOnce mode by disabling the `LegacyNodeRunOnceMode` feature gate. Starting in Kubernetes v1.31, kubelet will refuse to start if this feature gate is disabled.
46
60
47
-
If you still rely on this feature, migrate to using the `podman kube` subcommand. Refer to the [podman documentation](https://docs.podman.io/en/latest/markdown/podman-kube.1.html.) for more information.
61
+
The kubelet support for RunOnce mode is being deprecated and will be removed in a future release.
62
+
Users are advised to deprecate RunOnce mode by disabling the `LegacyNodeRunOnceMode` feature gate.
63
+
Starting in Kubernetes v1.31, kubelet will refuse to start if this feature gate is disabled.
64
+
65
+
If you still rely on this feature, migrate to using the `podman kube` subcommand.
66
+
Refer to the [podman documentation](https://docs.podman.io/en/latest/markdown/podman-kube.1.html.) for more information.
48
67
49
68
### Deprecate status.nodeInfo.kubeProxyVersion field [KEP 4004](https://github.com/kubernetes/enhancements/issues/4004)
50
-
The `status.nodeInfo.kubeProxyVersionv1.Node` field is being deprecated due to inaccuracies and will be removed in a future release. This field is set by the kubelet, which does not have reliable information about the kube-proxy version or whether kube-proxy is running.
69
+
70
+
The `status.nodeInfo.kubeProxyVersionv1.Node` field is being deprecated due to inaccuracies and will be removed in a future release.
71
+
This field is set by the kubelet, which does not have reliable information about the kube-proxy version or whether kube-proxy is running.
51
72
52
73
After deprecation, users can no longer retrieve the kube-proxy version from the Node object.
53
74
54
75
### Removal of in-tree cloud providers - sig-cloudprovider
55
76
56
77
As highlighted in our [previous blog](/blog/2024/05/20/completing-cloud-provider-migration/), the last bits of in-tree cloud provider code have been removed.
57
-
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. This change helps Kubernetes to get closer to being a truly vendor-neutral platform.
78
+
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.
79
+
This change helps Kubernetes to get closer to being a truly vendor-neutral platform.
58
80
59
-
For further details on the cloud provider integrations, read our [v1.29 Cloud Provider Integrations feature blog](https://kubernetes.io/blog/2023/12/14/cloud-provider-integration-changes/). For additional context about the in-tree code removal, we invite you to check the ([v1.29 deprecation blog](https://kubernetes.io/blog/2023/11/16/kubernetes-1-29-upcoming-changes/#removal-of-in-tree-integrations-with-cloud-providers-kep-2395-https-kep-k8s-io-2395)).
81
+
For further details on the cloud provider integrations, read our [v1.29 Cloud Provider Integrations feature blog](https://kubernetes.io/blog/2023/12/14/cloud-provider-integration-changes/).
82
+
For additional context about the in-tree code removal, we invite you to check the ([v1.29 deprecation blog](https://kubernetes.io/blog/2023/11/16/kubernetes-1-29-upcoming-changes/#removal-of-in-tree-integrations-with-cloud-providers-kep-2395-https-kep-k8s-io-2395)).
60
83
61
84
The latter blog also contains useful information for users who need to migrate to version v1.29 and later.
62
85
63
86
64
87
### Removal of Kubelet Flag `--keep-terminated-pod-volumes`
88
+
65
89
The Kubelet flag `--keep-terminated-pod-volumes`, which was deprecated in 2017, has now been removed.
66
90
67
91
You can find more details in the pull request [#122082](https://github.com/kubernetes/kubernetes/pull/122082).
68
92
69
93
### Removal of CephFS volume plugin
94
+
70
95
[CephFS volume plugin](/docs/concepts/storage/volumes/#cephfs) was removed in this release and the `cephfs` volume type became non-functional.
71
96
72
97
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.
73
98
74
99
CephFS volume plugin was formally marked as deprecated in v1.28.
75
100
76
101
### Removal of Ceph RBD volume plugin
102
+
77
103
This release removed the [Ceph RBD volume plugin](/docs/concepts/storage/volumes/#rbd) and its CSI migration support, making the `rbd` volume type non-functional.
78
104
79
-
It's recommended that you use the [RBD CSI driver](https://github.com/ceph/ceph-csi/) in your clusters instead. 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.
105
+
It's recommended that you use the [RBD CSI driver](https://github.com/ceph/ceph-csi/) in your clusters instead.
106
+
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.
80
107
81
108
The CephRBD volume plugin was formally marked as deprecated in v1.28.
82
109
@@ -89,19 +116,24 @@ The `kube-scheduler` has deprecated all non-CSI volume limit plugins and removed
89
116
- EBSLimits
90
117
- GCEPDLimits
91
118
92
-
Its recommended that you use `NodeVolumeLimits` plugin instead because it can handle the same functionality as the removed plugins since those volume types have been migrated to CSI. Please replace the deprecated plugins with the `NodeVolumeLimits` plugin if you explicitly use them in the [scheduler config](/docs/reference/scheduling/config/). The `AzureDiskLimits`, `CinderLimits`, `EBSLimits`, and `GCEPDLimits` plugins will be removed in Kubernetes v1.32.
119
+
Its recommended that you use `NodeVolumeLimits` plugin instead because it can handle the same functionality as the removed plugins since those volume types have been migrated to CSI.
120
+
Please replace the deprecated plugins with the `NodeVolumeLimits` plugin if you explicitly use them in the [scheduler config](/docs/reference/scheduling/config/).
121
+
The `AzureDiskLimits`, `CinderLimits`, `EBSLimits`, and `GCEPDLimits` plugins will be removed in Kubernetes v1.32.
93
122
94
123
These plugins have been removed from the default plugins as they have been marked as deprecated since Kubernetes v1.14.
95
124
96
125
## Looking ahead
97
126
The official list of API removals planned for [Kubernetes v1.32](/docs/reference/using-api/deprecation-guide/#v1-32) include:
98
127
99
-
* The `flowcontrol.apiserver.k8s.io/v1beta3` API version of FlowSchema and PriorityLevelConfiguration will be removed. 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. 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.
128
+
* The `flowcontrol.apiserver.k8s.io/v1beta3` API version of FlowSchema and PriorityLevelConfiguration will be removed.
129
+
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.
130
+
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.
100
131
101
132
For more information please refer to [these docs](/docs/reference/using-api/deprecation-guide/#v1-32).
102
133
103
134
## Want to know more?
104
-
The Kubernetes release notes announce deprecations. 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.
135
+
The Kubernetes release notes announce deprecations.
136
+
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.
105
137
106
138
You can see the announcements of pending deprecations in the release notes for:
0 commit comments