Облачная платформаAdvanced

Kubernetes 1.25 (EOM) Примечания к выпуску

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

CCE прошёл Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. В этом разделе описаны изменения, внесённые в Kubernetes 1.25 по сравнению с Kubernetes 1.23.

Индексы

Основные моменты

Kubernetes 1.25

  • Pod Security Admission стабилен. PodSecurityPolicy устарел.

    PodSecurityPolicy заменён на Pod Security Admission. Для получения подробностей о миграции см. Migrate from PodSecurityPolicy to the Built-In PodSecurity Admission Controller.

  • Ephemeral containers стабильны.

    An ephemeral container запускается временно в существующем pod. Он полезен для устранения неполадок, особенно когда kubectl exec нельзя использовать для проверки контейнера, который выходит из строя, или его образ не содержит инструмента отладки.

  • Поддержка cgroups v2 переходит в стабильную фазу.

    Kubernetes поддерживает cgroups v2, которые предоставляют некоторые улучшения по сравнению с cgroups v1. Для получения подробностей см. About cgroup v2.

  • SeccompDefault переходит в beta.

    Чтобы включить эту функцию, добавьте параметр запуска --seccomp-default=true в kubelet. Таким образом, seccomp по умолчанию устанавливается в RuntimeDefault, повышая безопасность системы. Кластеры v1.25 более не поддерживают seccomp.security.alpha.kubernetes.io/pod и container.seccomp.security.alpha.kubernetes.io/annotation. Замените их полем securityContext.seccompProfile в pod'ах или контейнерах. Подробнее см. Configure a Security Context for a Pod or Container.

    Note

    После включения этой функции некоторые системные вызовы, необходимые приложению, могут быть ограничены runtime. Поэтому включайте функцию только в тестовой среде, чтобы сначала убедиться, что приложение работает корректно и не пострадало.

  • endPort в network policy переходит в stable.

    endPort в Network Policy стабилен. Эта функция включена в версии 1.21. endPort добавлен в NetworkPolicy. Вы можете указать диапазон портов.

  • Изоляция ёмкости локального эфемерного хранилища стабильна.

    Эта функция поддерживает изоляцию ёмкости локального эфемерного хранилища, совместно используемого между pod'ами, например emptyDir. Если pod потребляет больше ёмкости локального эфемерного хранилища, чем установленный предел, pod может быть выгружен, чтобы ограничить потребление общих ресурсов.

  • Язык выражений проверки CRD переходит в beta.

    Это позволяет объявить, как проверять пользовательские ресурсы с помощью CEL. Подробнее см. Validation rules.

  • Введены API KMS v2.

    API KMS v2 alpha1 введён для добавления улучшений производительности, ротации и наблюдаемости. Этот API использует AES-GCM вместо AES-CBC и использует DEK для шифрования данных в состоянии покоя (Kubernetes Secrets). Дополнительные операции не требуются. Кроме того, данные могут читаться через AES-GCM и AES-CBC. Подробнее см. Using a KMS provider for data encryption.

  • Pod network readiness введена.

    Kubernetes 1.25 вводит альфа‑поддержку PodHasNetwork. Этот статус находится в поле status pod'а. Подробнее см. Pod network readiness.

  • Две функции, используемые для развертывания приложений, стабильны.
    • В Kubernetes 1.25 minReadySeconds для StatefulSets стабилен. Он позволяет каждому pod ждать ожидаемый период времени, чтобы замедлить развертывание StatefulSet. Подробнее см. Minimum ready seconds.
    • В Kubernetes 1.25, maxSurge для DaemonSets стабилен. Он позволяет DaemonSet запускать более одного pod на узле во время развертывания. Это минимизирует простой DaemonSet для пользователей. DaemonSet не позволяет одновременно использовать maxSurge и hostPort, поскольку два активных pod не могут использовать один и тот же порт на одном узле. Для получения подробной информации см. Perform a Rolling Update on a DaemonSet.
  • Предоставлена альфа‑поддержка запуска pod с пользовательскими пространствами имён.

    Предоставлена альфа‑поддержка запуска pod с пользовательскими пространствами имён. Пользователь root в pod сопоставляется с ненулевым ID за пределами контейнера, поэтому пользователь root выглядит как root в контейнерах, но с точки зрения хоста представляет собой обычный непривилегированный ID. Эта функция находится за пределами feature gate, поэтому убедитесь, что включили gate UserNamespacesStatelessPodsSupport, прежде чем использовать новую функцию. Для получения подробной информации см. Alpha support for running pods with user namespaces.

Kubernetes 1.24

  • Dockershim удалён из kubelet.

    Dockershim был помечен как устаревший в Kubernetes 1.20 и официально удалён из kubelet в Kubernetes 1.24. Если вы хотите использовать контейнер Docker, переключитесь на cri-dockerd или другие среды выполнения, поддерживающие CRI, такие как containerd и CRI-O.

    Note

    Проверьте, есть ли агенты или приложения, зависящие от Docker Engine. Например, если используются docker ps, docker run и docker inspect, убедитесь, что несколько сред выполнения совместимы, и переключитесь на стандартный CRI.

  • Beta API отключены по умолчанию.

    Сообщество Kubernetes обнаружило, что 90 % администраторов кластера не обращали внимания на beta API и оставляли их включёнными. Однако beta‑функции не рекомендуется использовать, поскольку эти API включены в производственной среде по умолчанию и создают риски. Поэтому, начиная с версии 1.24 и выше, beta API отключены по умолчанию, но существующие beta API сохранят исходные настройки.

  • Поддерживается OpenAPI v3.

    В Kubernetes 1.24 и более поздних версиях OpenAPI V3 включён по умолчанию.

  • Отслеживание ёмкости хранилища стабильно.

    В Kubernetes 1.24 и более поздних версиях API CSIStorageCapacity поддерживает раскрытие доступной ёмкости хранилища. Это гарантирует, что pod планируются на узлы с достаточной ёмкостью хранилища, что уменьшает задержку планирования pod, вызванную ошибками создания и монтирования томов. Для получения подробной информации см. Storage Capacity.

  • Проба контейнера gRPC переходит в beta.

    В Kubernetes 1.24 и более поздних версиях проба gRPC переходит в beta. Feature gate GRPCContainerProbe доступен по умолчанию. Для получения подробной информации о том, как использовать эту пробу, см. Configure Probes.

  • LegacyServiceAccountTokenNoAutoGeneration включен по умолчанию.

    LegacyServiceAccountTokenNoAutoGeneration переходит в бета. По умолчанию эта функция включена, при этом секретный токен не генерируется автоматически для учетной записи службы. Чтобы использовать токен, который никогда не истекает, создайте секрет для хранения токена. Подробнее см. Service account token Secrets.

  • Конфликт IP-адресов предотвращён.

    Kubernetes 1.24 вводит новую функцию, позволяющую пользователям мягко резервировать диапазон для статических назначений IP-адресов Service. После включения этой функции IP-адреса Service будут автоматически назначаться из пула IP-адресов для минимизации конфликтов IP-адресов. Подробнее см. Avoid Collisions Assigning IP Addresses to Services.

  • Кластеры компилируются на основе Go 1.18.

    Kubernetes‑кластеры версий новее 1.24 компилируются на основе Go 1.18. По умолчанию алгоритм хеширования SHA‑1, такой как SHA1WithRSA и ECDSAWithSHA1, более не поддерживается для проверки подписи сертификата. Вместо этого используйте сертификат, сгенерированный алгоритмом SHA256.

  • Максимальное количество недоступных реплик StatefulSet настраиваемо.

    В Kubernetes 1.24 и более поздних версиях параметр maxUnavailable можно настраивать для StatefulSet, чтобы pod‑ы останавливались быстрее во время скользящего обновления.

  • Введена альфа‑поддержка некорректного завершения работы узла.

    В Kubernetes 1.24 некорректное завершение работы узла находится в альфа‑стадии. Завершение работы узла считается корректным только в том случае, если менеджер завершения работы узла kubelet может обнаружить предстоящие действия по завершению работы узла. Подробнее см. Non-graceful node shutdown handling.

Устаревание и удаление

Kubernetes 1.25

  • Владение цепочками iptables уточнено.

    Kubernetes обычно создаёт цепочки iptables, чтобы гарантировать доставку пакетов данных к назначению. Эти цепочки iptables и их имена предназначены только для внутреннего использования. Они никогда не предполагались как часть каких‑либо гарантий API/ABI Kubernetes. Подробнее см. Kubernetes's IPTables Chains Are Not API.

    В версиях новее Kubernetes 1.25 Kubelet использует IPTablesCleanup для поэтапной миграции генерируемых Kubernetes цепочек iptables, используемых компонентами вне Kubernetes, чтобы такие цепочки iptables, как KUBE-MARK-DROP, KUBE-MARK-MASQ и KUBE-POSTROUTING, не создавались в таблице NAT. Подробнее см. Cleaning Up iptables Chain Ownership.

  • Встроенные драйверы томов от поставщиков облачных сервисов удалены.

Kubernetes 1.24

  • В Kubernetes 1.24 и более поздних версиях параметр Service.Spec.LoadBalancerIP помечен как устаревший, поскольку его нельзя использовать для двойных стеков протоколов. Вместо этого используйте пользовательские аннотации.
  • В Kubernetes 1.24 и более поздних версиях параметры --address, --insecure-bind-address, --port и --insecure-port=0 удалены из kube-apiserver.
  • В Kubernetes 1.24 и более поздних версиях параметры запуска --port=0 и --address удалены из kube-controller-manager и kube-scheduler.
  • В Kubernetes 1.24 и более поздних версиях kube-apiserver --audit-log-version и --audit-webhook-version поддерживают только audit.k8s.io/v1. В Kubernetes 1.24 audit.k8s.io/v1[alpha|beta]1 удалён, и можно использовать только audit.k8s.io/v1.
  • В Kubernetes 1.24 и более поздних версиях параметр запуска --network-plugin удалён из kubelet. Этот параметр, специфичный для Docker, доступен только когда среда выполнения контейнеров — Docker, и он удаляется вместе с Dockershim.
  • В Kubernetes 1.24 и более поздних версиях динамическая очистка журналов отменена и удалена. В журналы всех системных компонентов Kubernetes введён фильтр журналов для предотвращения утечки конфиденциальной информации через журналы. Однако эта функция может блокировать журналы и поэтому отменена. Подробнее см. Dynamic log sanitization и KEP-1753.
  • CRD VolumeSnapshot v1beta1 отменён в Kubernetes 1.20 и удалён в Kubernetes 1.24. Используйте VolumeSnapshot v1.
  • В Kubernetes 1.24 и более поздних версиях service annotation tolerate-unready-endpoints, отменённый в Kubernetes 1.11, заменён на Service.spec.publishNotReadyAddresses.
  • В Kubernetes 1.24 и более поздних версиях поле metadata.clusterName отменено и будет удалено в следующей версии.
  • В Kubernetes 1.24 и более поздних версиях логика kube-proxy прослушивать NodePorts удалена. Если NodePorts конфликтуют с kernel net.ipv4.ip_local_port_range, TCP‑соединения могут время от времени прерываться, что приводит к сбою проверки работоспособности или исключению сервиса. Перед обновлением убедитесь, что NodePorts кластера не конфликтуют с net.ipv4.ip_local_port_range всех узлов кластера. Подробнее см. Kubernetes PR.

Улучшенный Kubernetes 1.25 в CCE

Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.25, добавляя улучшенные функции.

Подробную информацию об обновлениях версии кластера см. в Release Notes for CCE Cluster Versions.

Ссылки

Для получения более подробной информации о сравнении производительности и функциональных улучшениях между Kubernetes 1.25 и другими версиями см. следующие документы: