Please enable Javascript to view the contents

Kubernetes[Release]-弃用API迁移说明(持续更新)

 ·  ☕ 7 分钟

重要

Kubernetes API弃用策略

Kubernetes 升级, 主要的API变化在v1.16\v1., 具体说明如下:

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

  • NetworkPolicy资源: 由extensions/v1beta1迁移至v1.8以来可用的networking.k8s.io/v1API。
  • PodSecurityPolicy资源: 由extensions/v1beta1迁移至v1.10以来可用的policy/v1beta1API。
  • DaemonSet资源: 由extensions/v1beta1apps/v1beta2迁移至v1.9以来可用的apps/v1API。
    • spec.templateGeneration字段被删除。
    • spec.selector为必填项, 且在创建后是不变的。使用现有的tmplate labels作为selector无缝升级
    • spec.updateStrategy.type默认值为RollingUpdateextensions/v1beta1默认值为OnDelete)
  • Deployment资源: 由extensions/v1beta1 apps/v1beta1 apps/v1beta2迁移至v1.9以来可用的apps/v1API。
    • spec.rollbackTo字段被删除
    • spec.selector为必填项, 且在创建后是不变的。使用现有的tmplate labels作为selector无缝升级
    • spec.progressDeadlineSeconds默认值为600s(extensions/v1beta1默认值没有截止日期)
    • spec.revisionHistoryLimit默认值为10(apps/v1beta1默认值为2,extensions/v1beta1中默认值为保留所有)
    • maxSurgemaxUnavailable默认值为25%(extensions/v1beta1默认值为1)
  • Statefulset资源: 由apps/v1beta1apps/v1beta2迁移至v1.9以来可用的apps/v1API。
    • spec.selector为必填项, 且在创建后是不变的。使用现有的tmplate labels作为selector无缝升级
    • spec.updateStrategy.type默认值为RollingUpdateextensions/v1beta1默认值为OnDelete)
  • ReplicaSet资源: 由extensions/v1beta1 apps/v1beta1 apps/v1beta2迁移至v1.9以来可用的apps/v1API。
    • spec.selector为必填项, 且在创建后是不变的。使用现有的tmplate labels作为selector无缝升级

v1.22变化

  • MutatingWebhookConfigurationValidatingWebhookConfiguration资源: 由admissionregistration.k8s.io/v1beta1迁移至v1.16以来可用的admissionregistration.k8s.io/v1 API

    • webhooks[*].failurePolicy 默认值 from Ignore to Fail
    • webhooks[*].matchPolicy 默认值 from Exact to Equivalent
    • webhooks[*].timeoutSeconds 默认值 from 30s to 10s
    • webhooks[*].sideEffects 变为必填项 oneof None and NoneOnDryRun
    • webhooks[*].admissionReviewVersions 变为必填项
    • webhooks[*].name 名称必须唯一
  • CustomResourceDefinition资源: 由apiextensions.k8s.io/v1beta1 迁移至v1.16以来可用的apiextensions.k8s.io/v1API。

    • spec.scope 去除默认值 Namespaced,变为必须指定。
    • spec.version 去除,由 spec.versions 替换。
    • spec.validation 去除,由spec.versions[*].schema 替换。
    • spec.subresources 去除,由spec.versions[*].subresources 替换。
    • spec.additionalPrinterColumns 去除,由spec.versions[*].additionalPrinterColumns 替换。
    • spec.conversion.webhookClientConfig迁移至spec.conversion.webhook.clientConfig
    • spec.conversion.conversionReviewVersions迁移至spec.conversion.webhook.conversionReviewVersions
    • spec.versions[*].schema.openAPIV3Schema 为必填项, 并且必须为结构化schema
    • spec.preserveUnknownFields: true 不被允许,必须通过schema中指定 x-kubernetes-preserve-unknown-fields: true
    • additionalPrinterColumns 中, JSONPath 字段改为jsonPath (fixes #66531)
  • APIService资源: 由apiregistration.k8s.io/v1beta1 迁移至v1.10以来可用的apiregistration.k8s.io/v1API。

  • TokenReview资源: 由authentication.k8s.io/v1beta1 迁移至v1.6以来可用的authentication.k8s.io/v1API。

  • LocalSubjectAccessReviewSelfSubjectAccessReviewSubjectAccessReview

    authentication.k8s.io/v1beta1 迁移至v1.6以来可用的authentication.k8s.io/v1API。

    • spec.group字段重命名为spec.groups(fix #32709)
  • CertificateSigningRequest资源: 由certificates.k8s.io/v1beta1 迁移至v1.19以来可用的certificates.k8s.io/v1API。

    • 请求证书:
      • spec.signerName为必填项(请参阅Kubernetes signers), 并且不允许通过。certificate.k8s.io/v1API创建对kubernetes.io/legacy-unknown的请求。
      • spec.usages为必填项、不可重复,并且只能包含已知用法。
    • 颁发证书:
      • status.condition不可重复。
      • status.conditions[*].status为必填项。
      • status.certificate 必须为PEM-encoded, 并且仅包含CERTIFICATE 块。
  • Lease资源: 由coordination.k8s.io/v1beta1 迁移至v1.14以来可用的coordination.k8s.io/v1API。

  • Ingress资源: 由extensions/v1beta1迁移至v1.19以来可用的networking.k8s.io/v1beta1API。

    • spec.backend 字段名变为 spec.defaultBackend
    • spec.rules[*].http.paths[*].backend.serviceName 字段变为 spec.rules[*].http.paths[*].backend.service.name
    • spec.rules[*].http.paths[*].backend.servicePort 字段,值为数字变为 spec.rules[*].http.paths[*].backend.service.port.number
    • spec.rules[*].http.paths[*].backend.servicePort 字段,值为字符串变为 spec.rules[*].http.paths[*].backend.service.port.name
    • spec.rules[*].http.paths[*].pathType 为必填项,oneofPrefix, Exact, and ImplementationSpecific. ImplementationSpecific用来对应v1beta1.
    • spec.rules[*].http.paths[*].backend.path为必填项,匹配所有路径值设置为/
  • IngressClass资源: 由networking.k8s.io/v1beta1迁移至v1.19以来可用的networking.k8s.io/v1API。

  • ClusterRole, ClusterRoleBinding, Role, and RoleBinding 资源由rbac.authorization.k8s.io/v1beta1迁移至v1.8以来可用的rbac.authorization.k8s.io/v1API

  • PriorityClass资源由scheduling.k8s.io/v1beta1迁移至v1.14以来可用的scheduling.k8s.io/v1API

  • CSIDriver, CSINode, StorageClass, and VolumeAttachment 资源由storage.k8s.io/v1beta1迁移至storage.k8s.io/v1API

    • CSIDriverv1.19可用
    • CSINodev1.17可用
    • StorageClassv1.6可用
    • VolumeAttachmentv1.13可用

1.25变化

  • Event资源: 由events.k8s.io/v1beta1迁移至v1.19以来可用的events.k8s.io/v1API

    • type 仅限于 NormalWarning
    • involvedObject 被重命名为 regarding
    • action, reason, reportingComponent, and reportingInstance 为必填项
    • eventTime 替换废弃的字段firstTimestamp
    • series.lastObservedTime 替换废弃的字段lastTimestamp
    • series.count 替换废弃的字段count
    • reportingComponent 替换废弃的字段source.component
    • reportingInstance 替换废弃的字段source.host
  • RuntimeClass资源: 由node.k8s.io/v1beta1迁移至v1.20以来可用的node.k8s.io/v1API

Reference

Kubernetes API弃用策略

启用API迁移指南

分享

Hex
作者
Hex
CloudNative Developer

目录