1.16中已删除的不赞成使用的API:这是您需要知道的

作者:瓦莱里·兰西(Lyft)

随着Kubernetes API的发展,API会定期进行重组或升级。 随着API的发展,旧的API已被弃用并最终被删除。

v1.16 版本将停止提供以下不推荐使用的API版本,而支持更新和更稳定的API版本:

  • 中的NetworkPolicy 扩展程序/ v1beta1 不再提供API版本
    • 迁移使用 联网.k8s.io / v1 API版本,自v1.8起可用。 可以通过新版本检索/更新现有的持久数据。
  • 中的PodSecurityPolicy 扩展程序/ v1beta1 API版本
    • 迁移使用 政策/ v1beta1 API,自v1.10起可用。 可以通过新版本检索/更新现有的持久数据。
  • DaemonSet中的 扩展程序/ v1beta1apps / v1beta2 不再提供API版本
    • 迁移使用 应用/ v1 API版本,自v1.9起可用。 可以通过新版本检索/更新现有的持久数据。
    • 显着变化:
      • spec.templateGeneration 已移除
      • spec.selector 现在是必需的,创建后是不变的;使用现有的模板标签作为选择器以进行无缝升​​级
      • spec.updateStrategy.type now defaults to RollingUpdate (the default in 扩展程序/ v1beta1 was OnDelete)
  • 部署在 扩展程序/ v1beta1, apps / v1beta1apps / v1beta2 不再提供API版本
    • 迁移使用 应用/ v1 API版本,自v1.9起可用。 可以通过新版本检索/更新现有的持久数据。
    • 显着变化:
      • spec.rollbackTo 已移除
      • spec.selector 现在是必需的,创建后是不变的;使用现有的模板标签作为选择器以进行无缝升​​级
      • spec.progressDeadlineSeconds now defaults to 600 seconds (the default in 扩展程序/ v1beta1 was no deadline)
      • spec.revisionHistoryLimit now defaults to 10 (the default in apps / v1beta1 was 2, the default in 扩展程序/ v1beta1 was to retain all)
      • maxSurgemaxUnavailable now default to 25% (the default in 扩展程序/ v1beta1 was 1)
  • StatefulSet中的 apps / v1beta1apps / v1beta2 不再提供API版本
    • 迁移使用 应用/ v1 API版本,自v1.9起可用。 可以通过新版本检索/更新现有的持久数据。
    • 显着变化:
      • spec.selector 现在是必需的,创建后是不变的;使用现有的模板标签作为选择器以进行无缝升​​级
      • spec.updateStrategy.type now defaults to RollingUpdate (the default in apps / v1beta1 was OnDelete)
  • ReplicaSet在 扩展程序/ v1beta1, apps / v1beta1apps / v1beta2 不再提供API版本
    • 迁移使用 应用/ v1 API版本,自v1.9起可用。 可以通过新版本检索/更新现有的持久数据。
    • 显着变化:
      • spec.selector 现在是必需的,创建后是不变的;使用现有的模板标签作为选择器以进行无缝升​​级

v1.22 版本将停止提供以下不推荐使用的API版本,而支持更新和更稳定的API版本:

  • 进入 扩展程序/ v1beta1 API版本将不再提供
    • 迁移使用 联网.k8s.io / v1beta1 API版本,自v1.14起可用。 可以通过新版本检索/更新现有的持久数据。

该怎么办

Kubernetes 1.16将于2019年9月发布,因此请务必进行审核 立即进行您的配置和集成!

  • 更改YAML文件以引用较新的API
  • 更新自定义集成和控制器以调用较新的API
  • 更新第三方工具(入口控制器,连续交付系统) 调用较新的API

迁移到新的Ingress API只需更改API路径- API字段保持不变。但是,迁移其他资源(例如EG部署) 将需要根据更改的字段进行一些更新。您可以使用 kubectl convert 自动转换现有对象的命令: kubectl convert -f <file> --output-version <group>/<version>.

例如,转换 将较旧的Deployments部署到apps / v1,则可以运行: kubectl convert -f ./my-deployment.yaml --output-version 应用/ 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发行说明中将宣布弃用。你可以看到这些 announcements in 1.141.15.

您可以阅读更多 在我们的弃用政策文件中 有关Kubernetes API和其他Kubernetes组件的弃用策略的信息。 弃用政策因组件而异(例如,主要API与 管理员CLI)和到期时间(alpha,beta或GA)。

这些细节也 先前宣布 在kubernetes-dev邮件列表中,以及Kubernetes 1.14的发行版中 和1.15。从乔丹·利吉特(Jordan Liggitt):

In case you missed it in the 1.15.0 release notes, the timelines for deprecated resources in the 扩展程序/ v1beta1, apps / v1beta1, 和  apps / v1beta2 API groups to no longer be served by default have been updated:

* NetworkPolicy resources will no longer be served from 扩展程序/ v1beta1 by default in v1.16. Migrate to the 联网.k8s.io / v1 API, available since v1.8. Existing persisted data can be retrieved/updated via the 联网.k8s.io / v1 API.
* PodSecurityPolicy resources will no longer be served from 扩展程序/ v1beta1 by default in v1.16. Migrate to the 政策/ v1beta1 API,自v1.10起可用。 Existing persisted data can be retrieved/updated via the 政策/ v1beta1 API.
* DaemonSet, Deployment, StatefulSet, 和  ReplicaSet resources will no longer be served from 扩展程序/ v1beta1, apps / v1beta1, or apps / v1beta2 by default in v1.16. Migrate to the 应用/ v1 API, available since v1.9. Existing persisted data can be retrieved/updated via the 应用/ v1 API.

To start a v1.15.0 API server with these resources disabled to flush out dependencies on these deprecated APIs, 和  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