Kubernetes v1.16后将删除被弃用的 API
随着 Kubernetes API 的发展,API 会定期进行重组或升级,旧的 API 将被弃用,并最终被删除
v1.16.0 对以下四种类型资源的 API 做出调整
- NetworkPolicy
- PodSecurityPolicies
- Ingress
- DaemonSet, Deployment, StatefulSet 和 ReplicaSet
这些资源目前都不会从 Kubernetes 中删除,也不会以任何方式被弃用。但是,如果开发者想要继续使用这些资源,就必须使用 Kubernetes API 的当前版本
API 具体调整细节如下
- DaemonSet, Deployment, StatefulSet 和 ReplicaSet 从 extensions/v1beta1 改用 apps/v1;apps/v1 从 v1.9 版本开始提供API
- NetworkPolicies 从 extensions/v1beta1 改用 networking.k8s.io/v1;networking.k8s.io/v1 从 v1.8 版本开始提供API
- PodSecurityPolicies 从 extensions/v1beta1 改用 policy/v1beta1;policy/v1beta1 从 v1.10 版本开始提供API
- Ingress 从 extensions/v1beta1 改用 networking.k8s.io/v1beta1;networking.k8s.io/v1beta1 从v1.14 版本开始提供API
默认情况不在提供上面API,如果实在要临时启用,可使用 --runtime-config apiserver 标志临时启用这些API - apps/v1beta1=true
- apps/v1beta2=true
- extensions/v1beta1/daemonsets=true,extensions/v1beta1/deployments=true,extensions/v1beta1/replicasets=true,extensions/v1beta1/networkpolicies=true,extensions/v1beta1/podsecuritypolicies=true
注意:上面提供的 API 将在 v1.18 完全删除
下面列举部分 API 弃用预告
- extensions/v1beta1 从 v1.20 开始将不再提供 Ingress 资源networking.k8s.io/v1beta1 从 v1.14 开始提供API。可以通过 networking.k8s.io/v1beta1 API 检索现有的持久数据
- scheduling.k8s.io/v1beta1 和 scheduling.k8s.io/v1alpha1 从 v1.17 起不再提供 PriorityClass 资源。改用 scheduling.k8s.io/v1 API,自 v1.14 起可用。可以通过 scheduling.k8s.io/v1 API 检索现有的持久数据
- export 自 v1.14 起已弃用,将在 v1.18 删除
- 不推荐使用的节点条件类型 OutOfDisk 已被删除。使用 DiskPressure 条件代替
- GA PodPriority 功能现在默认情况下处于打开状态,无法禁用。功能将在 v1.18 中删除
- alpha.service-controller.kubernetes.io/exclude-balancer 不推荐使用云负载均衡器排除节点标签(使用 Service Type = LoadBalancer),而推荐使用 node.kubernetes.io/exclude-balancer。alpha.service-controller.kubernetes.io/exclude-balancer 将在 v1.18 删除
- admissionregistration.k8s.io/v1beta1 版本MutatingWebhookConfiguration 和 ValidatingWebhookConfiguration 已过时,将在 v1.19 移除,使用 admissionregistration.k8s.io/v1 替代
升级到 v1.16.0 之前需要做什么
- 更改 YAML 文件以引用新的 API
- 更新自定义集成和控制器来调用新的 API
- 更新第三方工具(ingress controllers、持续交付系统)来调用新的 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 reference[1]
你可以通过禁用上述资源启动 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
测试
可以通过配置 --runtime-config 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
本文链接:
/archives/kubernetesv116%E5%90%8E%E5%B0%86%E5%88%A0%E9%99%A4%E8%A2%AB%E5%BC%83%E7%94%A8%E7%9A%84api
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
爱吃可爱多!
喜欢就支持一下吧
打赏
微信
支付宝