Skip to content

Commit fe3375f

Browse files
committed
minor edits and adding line wrapping at the end of setences
1 parent 88cd7c0 commit fe3375f

File tree

1 file changed

+48
-16
lines changed

1 file changed

+48
-16
lines changed

content/en/blog/_posts/2024-07-18-kubernetes-1.31-deprecations-and-removals.md

Lines changed: 48 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,72 +11,99 @@ author: >
1111
Yigit Demirbas
1212
---
1313

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

1619
### 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.
1825

1926
* Generally available (GA) or stable API versions may be marked as deprecated but must not be removed within a major version of Kubernetes.
2027

2128
* Beta or pre-release API versions must be supported for 3 releases after the deprecation.
2229

2330
* Alpha or experimental API versions may be removed in any release without prior deprecation notice.
2431

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/).
2634

2735
## A note about SHA-1 signature support fully going away in go1.24
2836

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

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

3344
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.
3445

3546
## Deprecations and Removals in Kubernetes 1.31
3647

3748
### Deprecate kustomize from kubectl [KEP 4706](https://github.com/kubernetes/enhancements/issues/4706)
49+
3850
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.
3951

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

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

4459
### Deprecate Kubelet RunOnce mode [KEP 4580](https://github.com/kubernetes/enhancements/issues/4580)
45-
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.
4660

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

4968
### 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.
5172

5273
After deprecation, users can no longer retrieve the kube-proxy version from the Node object.
5374

5475
### Removal of in-tree cloud providers - sig-cloudprovider
5576

5677
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.
5880

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)).
6083

6184
The latter blog also contains useful information for users who need to migrate to version v1.29 and later.
6285

6386

6487
### Removal of Kubelet Flag `--keep-terminated-pod-volumes`
88+
6589
The Kubelet flag `--keep-terminated-pod-volumes`, which was deprecated in 2017, has now been removed.
6690

6791
You can find more details in the pull request [#122082](https://github.com/kubernetes/kubernetes/pull/122082).
6892

6993
### Removal of CephFS volume plugin
94+
7095
[CephFS volume plugin](/docs/concepts/storage/volumes/#cephfs) was removed in this release and the `cephfs` volume type became non-functional.
7196

7297
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.
7398

7499
CephFS volume plugin was formally marked as deprecated in v1.28.
75100

76101
### Removal of Ceph RBD volume plugin
102+
77103
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.
78104

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

81108
The CephRBD volume plugin was formally marked as deprecated in v1.28.
82109

@@ -89,19 +116,24 @@ The `kube-scheduler` has deprecated all non-CSI volume limit plugins and removed
89116
- EBSLimits
90117
- GCEPDLimits
91118

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

94123
These plugins have been removed from the default plugins as they have been marked as deprecated since Kubernetes v1.14.
95124

96125
## Looking ahead
97126
The official list of API removals planned for [Kubernetes v1.32](/docs/reference/using-api/deprecation-guide/#v1-32) include:
98127

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

101132
For more information please refer to [these docs](/docs/reference/using-api/deprecation-guide/#v1-32).
102133

103134
## 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.
105137

106138
You can see the announcements of pending deprecations in the release notes for:
107139

0 commit comments

Comments
 (0)