本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。
在 1.16 中删除的已弃用 API:你需要了解的内容
随着 Kubernetes API 的发展,API 会定期进行重组或升级。当 API 发展时,旧的 API 将被弃用并最终删除。
v1.16 版本将停止提供以下已弃用的 API 版本,转而使用更新、更稳定的 API 版本
- extensions/v1beta1 API 版本中的 NetworkPolicy 将不再提供
- 迁移到使用 networking.k8s.io/v1 API 版本,该版本自 v1.8 起可用。可以通过新版本检索/更新现有的持久化数据。
- extensions/v1beta1 API 版本中的 PodSecurityPolicy
- 迁移到使用 policy/v1beta1 API,该版本自 v1.10 起可用。可以通过新版本检索/更新现有的持久化数据。
- extensions/v1beta1 和 apps/v1beta2 API 版本中的 DaemonSet 将不再提供
- 迁移到使用 apps/v1 API 版本,该版本自 v1.9 起可用。可以通过新版本检索/更新现有的持久化数据。
- 值得注意的更改
- 删除了
spec.templateGeneration
- 现在需要
spec.selector
,且创建后不可变;使用现有的模板标签作为选择器以实现无缝升级 spec.updateStrategy.type
现在默认为RollingUpdate
(extensions/v1beta1
中的默认值为OnDelete
)
- 删除了
- extensions/v1beta1、apps/v1beta1 和 apps/v1beta2 API 版本中的 Deployment 将不再提供
- 迁移到使用 apps/v1 API 版本,该版本自 v1.9 起可用。可以通过新版本检索/更新现有的持久化数据。
- 值得注意的更改
- 删除了
spec.rollbackTo
- 现在需要
spec.selector
,且创建后不可变;使用现有的模板标签作为选择器以实现无缝升级 spec.progressDeadlineSeconds
现在默认为600
秒 (extensions/v1beta1
中的默认值是没有截止时间)spec.revisionHistoryLimit
现在默认为10
(apps/v1beta1
中的默认值为2
,extensions/v1beta1
中的默认值是保留所有)maxSurge
和maxUnavailable
现在默认为25%
(extensions/v1beta1
中的默认值为1
)
- 删除了
- apps/v1beta1 和 apps/v1beta2 API 版本中的 StatefulSet 将不再提供
- 迁移到使用 apps/v1 API 版本,该版本自 v1.9 起可用。可以通过新版本检索/更新现有的持久化数据。
- 值得注意的更改
- 现在需要
spec.selector
,且创建后不可变;使用现有的模板标签作为选择器以实现无缝升级 spec.updateStrategy.type
现在默认为RollingUpdate
(apps/v1beta1
中的默认值为OnDelete
)
- 现在需要
- extensions/v1beta1、apps/v1beta1 和 apps/v1beta2 API 版本中的 ReplicaSet 将不再提供
- 迁移到使用 apps/v1 API 版本,该版本自 v1.9 起可用。可以通过新版本检索/更新现有的持久化数据。
- 值得注意的更改
- 现在需要
spec.selector
,且创建后不可变;使用现有的模板标签作为选择器以实现无缝升级
- 现在需要
v1.22 版本将停止提供以下已弃用的 API 版本,转而使用更新、更稳定的 API 版本
- extensions/v1beta1 API 版本中的 Ingress 将不再提供
- 迁移到使用 networking.k8s.io/v1beta1 API 版本,该版本自 v1.14 起可用。可以通过新版本检索/更新现有的持久化数据。
如何操作
Kubernetes 1.16 计划于 2019 年 9 月发布,所以请务必立即审核您的配置和集成!
- 更改 YAML 文件以引用较新的 API
- 更新自定义集成和控制器以调用较新的 API
- 更新第三方工具(入口控制器、持续交付系统)以调用较新的 API
迁移到新的 Ingress API 只需要更改 API 路径 - API 字段保持不变。但是,迁移其他资源(例如 Deployment)将需要根据更改的字段进行一些更新。您可以使用 kubectl convert
命令自动转换现有对象:kubectl convert -f <file> --output-version <group>/<version>
。
例如,要将较旧的 Deployment 转换为 apps/v1,您可以运行:kubectl convert -f ./my-deployment.yaml --output-version apps/v1
。请注意,这可能会使用非理想的默认值。要了解有关特定资源的更多信息,请查看 Kubernetes API 参考。
您可以通过启动禁用上述资源的 apiserver 来测试您的集群,以模拟即将到来的删除。将以下标志添加到 apiserver 启动参数
--runtime-config=apps/v1beta1=false,apps/v1beta2=false,extensions/v1beta1/daemonsets=false,extensions/v1beta1/deployments=false,extensions/v1beta1/replicasets=false,extensions/v1beta1/networkpolicies=false,extensions/v1beta1/podsecuritypolicies=false
想了解更多?
弃用会在 Kubernetes 发布说明中宣布。您可以在 1.14 和 1.15 中查看这些公告。
您可以在我们的 弃用策略文档 中阅读更多关于 Kubernetes API 和其他 Kubernetes 组件的弃用策略的信息。弃用策略因组件(例如,主要 API 与管理 CLI)和成熟度(alpha、beta 或 GA)而异。
这些细节也曾在 Kubernetes 1.14 和 1.15 发布时在 kubernetes-dev 邮件列表中发布过。来自 Jordan Liggitt
In case you missed it in the 1.15.0 release notes, the timelines for deprecated resources in the extensions/v1beta1, apps/v1beta1, and apps/v1beta2 API groups to no longer be served by default have been updated:
* NetworkPolicy resources will no longer be served from extensions/v1beta1 by default in v1.16. Migrate to the networking.k8s.io/v1 API, available since v1.8. Existing persisted data can be retrieved/updated via the networking.k8s.io/v1 API.
* PodSecurityPolicy resources will no longer be served from extensions/v1beta1 by default in v1.16. Migrate to the policy/v1beta1 API, available since v1.10. Existing persisted data can be retrieved/updated via the policy/v1beta1 API.
* DaemonSet, Deployment, StatefulSet, and ReplicaSet resources will no longer be served from extensions/v1beta1, apps/v1beta1, or apps/v1beta2 by default in v1.16. Migrate to the apps/v1 API, available since v1.9. Existing persisted data can be retrieved/updated via the apps/v1 API.
To start a v1.15.0 API server with these resources disabled to flush out dependencies on these deprecated APIs, and ensure your application/manifests will work properly against the v1.16 release, use the following --runtime-config argument:
--runtime-config=apps/v1beta1=false,apps/v1beta2=false,extensions/v1beta1/daemonsets=false,extensions/v1beta1/deployments=false,extensions/v1beta1/replicasets=false,extensions/v1beta1/networkpolicies=false,extensions/v1beta1/podsecuritypolicies=false