Під час еволюції API Kubernetes періодично переглядаються або оновлюються. Коли API розвиваються, старий API стає застарілим і, зрештою, вилучається. Ця сторінка містить інформацію, яку вам потрібно знати у випадку міграції від застарілих версій API на новіші та стабільніші версії API.
У випуску v1.32 перестали обслуговуватися наступні застарілі версії API:
Версія API flowcontrol.apiserver.k8s.io/v1beta3 FlowSchema та PriorityLevelConfiguration більше не обслуговуються починаючи з v1.32.
spec.limited.nominalConcurrencyShares PriorityLevelConfiguration має стандартне значення 30, коли не вказане, і явне значення 0 не змінюється на 30.У випуску v1.29 перестали обслуговуватися наступні застарілі версії API:
Версія API flowcontrol.apiserver.k8s.io/v1beta2 FlowSchema та PriorityLevelConfiguration більше не обслуговується з версії v1.29.
spec.limited.assuredConcurrencyShares PriorityLevelConfiguration перейменоване на spec.limited.nominalConcurrencyShares і має стандартне значення 30, коли не вказане, і явне значення 0 не змінюється на 30.spec.limited.assuredConcurrencyShares PriorityLevelConfiguration перейменоване на spec.limited.nominalConcurrencySharesВипуск v1.27 припинив обслуговування наступних застарілих версій API:
Версія API CSIStorageCapacity storage.k8s.io/v1beta1 більше не обслуговується з версії v1.27.
Випуск v1.26 припинив обслуговування наступних застарілих версій API:
Версія API FlowSchema та PriorityLevelConfiguration flowcontrol.apiserver.k8s.io/v1beta1 більше не обслуговується з версії v1.26.
Версія API HorizontalPodAutoscaler autoscaling/v2beta2 більше не обслуговується з версії v1.26.
targetAverageUtilization замінено на target.averageUtilization та target.type: Utilization. Див. Автомасштабування за декількома метриками та власними метриками.Випуск v1.25 припинив обслуговування наступних застарілих версій API:
Версія API CronJob batch/v1beta1 більше не обслуговується з версії v1.25.
Версія API EndpointSlice discovery.k8s.io/v1beta1 більше не обслуговується з версії v1.25.
nodeName для кожного Endpoint замість застарілого поля topology["kubernetes.io/hostname"]zone для кожного Endpoint замість застарілого поля topology["topology.kubernetes.io/zone"]topology замінено полем deprecatedTopology, яке не доступне для запису у v1Версія API Event events.k8s.io/v1beta1 більше не обслуговується з версії v1.25.
type обмежено до Normal та WarninginvolvedObject перейменовано в regardingaction, reason, reportingController та reportingInstance є обовʼязковими при створенні нових events.k8s.io/v1 EventseventTime замість застарілого поля firstTimestamp (яке перейменовано в deprecatedFirstTimestamp та не допускається в нових events.k8s.io/v1 Events)series.lastObservedTime замість застарілого поля lastTimestamp (яке перейменовано в deprecatedLastTimestamp та не допускається в нових **events.k8ерсіях API events.k8s.io/v1 Events)series.count замість застарілого поля count (яке перейменовано в deprecatedCount та не допускається в нових events.k8s.io/v1 Events)reportingController замість застарілого поля source.component (яке перейменовано в deprecatedSource.component та не допускається в нових events.k8s.io/v1 Events)reportingInstance замість застарілого поля source.host (яке перейменовано в deprecatedSource.host та не допускається в нових events.k8s.io/v1 Events)Версія API HorizontalPodAutoscaler autoscaling/v2beta1 більше не обслуговується з версії v1.25.
targetAverageUtilization замінено на target.averageUtilization та target.type: Utilization. Див. Автомасштабування за декількома метриками та власними метриками.Версія API PodDisruptionBudget policy/v1beta1 більше не обслуговується з версії v1.25.
spec.selector ({}), записаний до policy/v1 PodDisruptionBudget, вибирає всі теки в просторі імен (у policy/v1beta1 пустий spec.selector не вибирав жодні теки). Неустановлений spec.selector вибирає жодні теки в обох версіях API.PodSecurityPolicy в версії API policy/v1beta1 більше не обслуговується з версії v1.25, і контролер допуску PodSecurityPolicy буде видалено.
Перейдіть до Pod Security Admission або виклику стороннього вебхуку допуску. Для настанов з міграції, див. Міграція з PodSecurityPolicy до вбудованого контролера допуску PodSecurity Admission Controller. Для отримання додаткової інформації про застарілість, див. ВPodSecurityPolicy Deprecation: Past, Present, and Future.
RuntimeClass в версії API node.k8s.io/v1beta1 більше не обслуговується з версії v1.25.
Випуск v1.22 припинив обслуговування наступних застарілих версій API:
Версія API admissionregistration.k8s.io/v1beta1 для MutatingWebhookConfiguration та ValidatingWebhookConfiguration більше не обслуговується з версії v1.22.
webhooks[*].failurePolicy змінено з Ignore на Fail для v1webhooks[*].matchPolicy змінено з Exact на Equivalent для v1webhooks[*].timeoutSeconds змінено з 30s на 10s для v1webhooks[*].sideEffects стандартно видалено, і тепер воно обовʼязкове,
і дозволяється лише None та NoneOnDryRun для v1webhooks[*].admissionReviewVersions та робиться обовʼязковим для v1 (підтримувані версії для AdmissionReview - v1 та v1beta1)webhooks[*].name повинно бути унікальним в списку для обʼєктів, створених через admissionregistration.k8s.io/v1Версія API apiextensions.k8s.io/v1beta1 для CustomResourceDefinition більше не обслуговується з версії v1.22.
spec.scope тепер не має станадртного значення Namespaced і повинно бути явно вказаноspec.version вилучено в v1; використовуйте замість цього spec.versionsspec.validation вилучено в v1; використовуйте замість цього spec.versions[*].schemaspec.subresources вилучено в v1; використовуйте замість цього spec.versions[*].subresourcesspec.additionalPrinterColumns вилучено в v1; використовуйте замість цього spec.versions[*].additionalPrinterColumnsspec.conversion.webhookClientConfig переміщено в spec.conversion.webhook.clientConfig в v1spec.conversion.conversionReviewVersions переміщено в spec.conversion.webhook.conversionReviewVersions в v1spec.versions[*].schema.openAPIV3Schema тепер обовʼязкове при створенні обʼєктів CustomResourceDefinition для v1, і повинно бути структурною схемоюspec.preserveUnknownFields: true заборонено при створенні обʼєктів CustomResourceDefinition для v1; воно повинно бути вказано у визначеннях схем як x-kubernetes-preserve-unknown-fields: trueadditionalPrinterColumns поле JSONPath перейменовано в jsonPath в v1
(виправлення #66531)Версія API apiregistration.k8s.io/v1beta1 для APIService більше не обслуговується з версії v1.22.
Версія API authentication.k8s.io/v1beta1 для TokenReview більше не обслуговується з версії v1.22.
Версія API authorization.k8s.io/v1beta1 для LocalSubjectAccessReview, SelfSubjectAccessReview, SubjectAccessReview та SelfSubjectRulesReview більше не обслуговується з версії v1.22.
spec.group перейменовано на spec.groups в v1 (виправляє #32709)Версія API certificates.k8s.io/v1beta1 для CertificateSigningRequest більше не обслуговується з версії v1.22.
certificates.k8s.io/v1:
spec.signerName тепер обовʼязкове
(див. відомі підписувачи Kubernetes), і запити на kubernetes.io/legacy-unknown не дозволяються бути створеними через API certificates.k8s.io/v1spec.usages тепер обовʼязкове, не може містити дубльованих значень та повинно містити лише відомі використанняstatus.conditions не може містити дублюються типиstatus.conditions[*].status тепер обовʼязковеstatus.certificate повинно бути в кодуванні PEM та містити лише блоки CERTIFICATEВерсія API coordination.k8s.io/v1beta1 для Lease більше не обслуговується з версії v1.22.
Версії API extensions/v1beta1 та networking.k8s.io/v1beta1 для Ingress більше не обслуговуються з версії v1.22.
spec.backend перейменовано на spec.defaultBackendserviceName бекенду перейменовано на service.nameservicePort бекенду перейменовані на service.port.numberservicePort бекенду перейменовані на service.port.namepathType тепер обовʼязковий для кожного вказаного шляху. Варіанти — Prefix, Exact, та ImplementationSpecific. Для відповідності невизначеній поведінці v1beta1 використовуйте ImplementationSpecific.Версія API networking.k8s.io/v1beta1 для IngressClass більше не обслуговується з версії v1.22.
Версія API rbac.authorization.k8s.io/v1beta1 для ClusterRole, ClusterRoleBinding, Role та RoleBinding більше не обслуговується з версії v1.22.
Версія API scheduling.k8s.io/v1beta1 для PriorityClass більше не обслуговується з версії v1.22.
Версія API storage.k8s.io/v1beta1 для CSIDriver, CSINode, StorageClass та VolumeAttachment більше не обслуговується з версії v1.22.
Випуск v1.16 припинив обслуговування наступних застарілих версій API:
Версія API extensions/v1beta1 для NetworkPolicy більше не обслуговується з версії v1.16.
Версії API extensions/v1beta1 та apps/v1beta2 для DaemonSet більше не обслуговуються з версії v1.16.
spec.templateGeneration видалено.spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.spec.updateStrategy.type тепер стандартно встановлено на RollingUpdate
(стандартно в extensions/v1beta1 було OnDelete).Версії API extensions/v1beta1, apps/v1beta1 та apps/v1beta2 для Deployment більше не обслуговуються з версії v1.16.
spec.rollbackTo видалено.spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.spec.progressDeadlineSeconds тепер стандартно встановлено на 600 секунд
(стандартно в extensions/v1beta1 було без крайнього терміну).spec.revisionHistoryLimit тепер стандартно встановлено на 10
(стандартно в apps/v1beta1 було 2, стандартно в extensions/v1beta1 було зберігати всі).maxSurge та maxUnavailable тепер стандартно встановлено на 25%
(стандартно в extensions/v1beta1 було 1).Версії API apps/v1beta1 та apps/v1beta2 для StatefulSet більше не обслуговуються з версії v1.16.
spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.spec.updateStrategy.type тепер стандартно встановлено на RollingUpdate (в apps/v1beta1 було OnDelete).Версії API extensions/v1beta1, apps/v1beta1 та apps/v1beta2 для ReplicaSet більше не обслуговуються з версії v1.16.
spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.Версія API extensions/v1beta1 для PodSecurityPolicy більше не обслуговується з версії v1.16.
Ви можете протестувати свої кластери, запустивши API сервер зі конкретними вимкненими версіями API, щоб змоделювати майбутні видалення. Додайте наступний прапорець до аргументів запуску API сервера:
--runtime-config=<group>/<version>=false
Наприклад:
--runtime-config=admissionregistration.k8s.io/v1beta1=false,apiextensions.k8s.io/v1beta1,...
Використовуйте попередження клієнтів, метрики та інформацію аудиту, доступні в версії 1.19+ для визначення використання застарілих API.
Оновіть власні інтеграції та контролери, щоб викликати незастарілі API.
Змініть YAML файли, щоб вони посилалися на незастарілі API.
Ви можете використовувати команду kubectl convert для автоматичного перетворення наявного обʼєкта:
kubectl convert -f <file> --output-version <group>/<version>.
Наприклад, щоб перетворити старий Deployment на apps/v1, ви можете виконати:
kubectl convert -f ./my-deployment.yaml --output-version apps/v1
Це перетворення може використовувати не ідеальні стандартні значення. Щоб дізнатися більше про конкретний ресурс, зверніться до довідника API Kubernetes.
Інструмент kubectl convert не стандартно встановлюється, хоча раніше він був частиною самого kubectl. Для отримання додаткової інформації ви можете прочитати питання про застарілість та видалення для вбудованої підкоманди.
Щоб дізнатися, як налаштувати kubectl convert на вашому компʼютері, відвідайте сторінку, яка відповідає вашій операційній системі:
Linux,
macOS або
Windows.