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

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

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

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

Индексы

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

Kubernetes 1.27

  • SeccompDefault стабилен.

    Чтобы использовать SeccompDefault, добавьте --seccomp-default command line flag с помощью kubelet на каждом узле. Если эта функция включена, профиль RuntimeDefault будет использоваться для всех рабочих нагрузок по умолчанию, вместо профиля Unconfined (seccomp отключён).

  • Директивы планирования Jobs можно настраивать.

    Эта функция была введена в Kubernetes 1.22 и стабилизирована в Kubernetes 1.27. В большинстве случаев вы используете job для управления тем, где будут запускаться pod'ы, например, все в одной AZ. Эта функция позволяет изменять директивы планирования до запуска job. Вы можете приостановить job, используя поле suspend. На этапе приостановки директивы планирования (например, node selector, node affinity, anti-affinity и tolerations) в шаблоне pod'а job можно изменить. Подробности см. в Mutable Scheduling Directives.

  • Downward API hugepages стабилен.

    In Kubernetes 1.20, requests.hugepages-<pagesize> and limits.hugepages-<pagesize> were introduced to the downward API. Requests and limits can be configured for hugepages like other resources.

  • Pod scheduling readiness переходит в beta.

    После создания pod, планировщик Kubernetes выбирает подходящий узел для запуска pod в состоянии pending. На практике некоторые pod могут оставаться в состоянии pending длительное время из‑за недостатка ресурсов. Эти pod могут влиять на работу других компонентов, таких как Cluster Autoscaler в кластере. Указывая или удаляя .spec. schedulingGates для pod, вы можете контролировать, когда pod готов к планированию. Подробнее см. Pod Scheduling Readiness.

  • Поддерживается доступ к журналам узла с помощью API Kubernetes.

    Эта функция находится в alpha phase. Администратор кластера может напрямую запрашивать журналы узла, чтобы отлаживать неисправные сервисы, работающие на узле. Чтобы использовать эту функцию, убедитесь, что NodeLogQuery feature gate включён для этого узла, а параметры конфигурации kubelet enableSystemLogHandler и enableSystemLogQuery установлены в true.

  • ReadWriteOncePod access mode переходит в beta.

    Kubernetes 1.22 представил режим доступа ReadWriteOncePod для PV и PVC. Эта функция перешла в beta phase. Том может быть смонтирован в один pod в режиме чтения/записи. Используйте этот режим доступа, если необходимо гарантировать, что только один pod в кластере может читать этот PVC или записывать в него. Подробнее см. Access Modes.

  • Поле matchLabelKeys в ограничении pod topology spread переходит в beta.

    matchLabelKeys — это список ключей меток pod. Он используется для выбора группы pod, над которой будет рассчитываться распределение. С помощью matchLabelKeys вам не требуется обновлять pod.spec между разными ревизиями. Контроллер или оператор просто задаёт разные значения одного и того же ключа метки для разных ревизий. Планировщик автоматически определит значения на основе matchLabelKeys. Подробнее см. Pod Topology Distribution Constraints.

  • Функция эффективного назначения меток SELinux томам переходит в beta.

    По умолчанию среда выполнения контейнеров рекурсивно назначает метку SELinux всем файлам во всех томах pod. Чтобы ускорить этот процесс, Kubernetes использует параметр монтирования -o context=\u003clabel\u003e для немедленного назначения метки SELinux тому. Подробнее см. Efficient SELinux volume relabeling.

  • Восстановление VolumeManager переходит в beta.

    После восстановления VolumeManager, если включён NewVolumeManagerReconstruction feature gate, смонтированные тома будут получаться более эффективно во время запуска kubelet.

  • Проверка полей на стороне сервера и OpenAPI V3 находятся в stable.

    OpenAPI V3 был добавлен в Kubernetes 1.23. В Kubernetes 1.24 он перешёл в beta. В Kubernetes 1.27 он находится в stable.

  • StatefulSet start ordinals переходит в beta.

    Kubernetes 1.26 представил новую функцию уровня alpha для StatefulSets, позволяющую управлять порядковой нумерацией реплик pod. Начиная с Kubernetes 1.27, эта функция переходит в beta. Порядковые номера могут начинаться с произвольных неотрицательных чисел. Подробности см. в Kubernetes 1.27: StatefulSet Start Ordinal Simplifies Migration.

  • ContainerResource метрика в HorizontalPodAutoscaler переходит в beta.

    Kubernetes 1.20 представил container resource metrics в Horizontal Pod Autoscalers (HPAs). В Kubernetes 1.27 эта функция переходит в beta, и feature gate HPAContainerMetrics включён по умолчанию.

  • Автоматическое удаление PVC в StatefulSet переходит в beta.

    Kubernetes 1.27 предоставляет новую политику для управления жизненным циклом PVC в StatefulSets. Эта политика позволяет пользователям указывать, должны ли PVC, созданные из шаблона spec StatefulSet, автоматически удаляться или сохраняться, когда StatefulSet удаляется или реплики в StatefulSet масштабируются вниз. Подробности см. в PersistentVolumeClaim retention.

  • Снимки групп томов введены.

    Снимки групп томов представлены как функция уровня alpha в Kubernetes 1.27. Эта функция позволяет пользователям создавать снимки нескольких томов для обеспечения согласованности данных при возникновении сбоя. Она использует селектор меток для группировки нескольких PVC для снимков. Эта функция поддерживает только драйверы томов CSI. Подробности см. в Kubernetes 1.27: Introducing an API for Volume Group Snapshots.

  • kubectl apply pruning более безопасен и эффективен.

    В Kubernetes 1.5 флаг --prune был введён в kubectl apply для удаления ресурсов, которые больше не нужны. Это позволяло kubectl apply автоматически очищать ресурсы, удалённые из текущей конфигурации. Однако существующая реализация --prune имеет конструктивные дефекты, ухудшающие её производительность и приводящие к непредвиденному поведению. В Kubernetes 1.27 kubectl apply предоставляет ApplySet‑based pruning, находящийся в альфа‑фазе. Подробности см. в Declarative Management of Kubernetes Objects Using Configuration Files.

  • Конфликты при выделении портов для NodePort Service можно избежать.

    В Kubernetes 1.27 вы можете включить новый feature gate ServiceNodePortStaticSubrange, чтобы использовать различные политики выделения портов для NodePort Services. Это снижает риск конфликтов портов. Эта функция находится в альфа‑фазе.

  • Поддерживается изменение размеров ресурсов, назначенных pod, без перезапуска контейнеров.

    Kubernetes 1.27 позволяет пользователям изменять размеры CPU и памяти, назначенных pod, без перезапуска контейнера. Эта функция находится в альфа‑фазе. Подробности см. в Kubernetes 1.27: In-place Resource Resize for Kubernetes Pods (alpha).

  • Запуск pod ускорен.

    В Kubernetes 1.27 выполнена серия настроек параметров, таких как параллельные загрузки образов и увеличенный лимит запросов API по умолчанию для kubelet в секунду, чтобы ускорить запуск pod. Подробности см. в Kubernetes 1.27: updates on speeding up Pod startup.

  • KMS V2 переходит в бета.

    API управления ключами KMS V2 переходит в бета. Это значительно улучшило производительность провайдера шифрования KMS. Для получения подробной информации см. Using a KMS provider for data encryption.

Kubernetes 1.26

  • CRI v1alpha2 удалён.

    Kubernetes 1.26 не поддерживает CRI v1alpha2. Используйте CRI v1 (версия containerd должна быть не ниже 1.5.0). containerd 1.5.x и более ранние версии не поддерживаются Kubernetes 1.26. Обновите версию containerd до 1.6.x или новее перед обновлением kubelet до 1.26.

    Note

    Версия containerd, используемая CCE, — 1.6.14, что соответствует требованиям. Если существующие узлы не соответствуют требованиям к версии containerd, сбросьте их до последней версии.

  • Добавлен Alpha API для динамического распределения ресурсов.

    В Kubernetes 1.26 добавлена Dynamic Resource Allocation для запроса и совместного использования ресурсов между pod‑ами и между контейнерами в pod‑е. Ресурсы инициализируются на основе параметров, предоставленных пользователем. Эта функция всё ещё находится в альфа‑фазе. Необходимо включить feature gate DynamicResourceAllocation и группу API resource.k8s.io/v1alpha1. Требуется установить драйверы для управления конкретными ресурсами. Для получения подробной информации см. Kubernetes 1.26: Alpha API for Dynamic Resource Allocation.

  • Функция non-graceful node shutdown переходит в бета.

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

  • Поддерживается передача pod fsGroup драйверам CSI во время монтирования.

    Делегирование управления fsGroup драйверам CSI впервые было представлено как альфа‑функция в Kubernetes 1.22 и перешло в бета в Kubernetes 1.25. Эта функция официально выпущена в Kubernetes 1.26. Для получения подробной информации см. Delegating volume permission and ownership change to CSI driver.

  • Введена Pod scheduling readiness.

    Kubernetes 1.26 вводит новую функцию schedulingGates, которая позволяет планировщику знать, когда можно выполнять планирование pod‑ов. Для получения подробной информации см. Pod Scheduling Readiness.

  • CPU manager официально выпущен.

    CPU manager является частью kubelet. Начиная с Kubernetes 1.10, он перемещён в beta. CPU manager может выделять эксклюзивные CPU контейнерам. Эта функция стабильна в Kubernetes 1.26. Для получения подробной информации см. Control CPU Management Policies on the Node.

  • Трафик‑инжиниринг Kubernetes продвинут.

    Internal node-local traffic optimization и EndpointSlice conditions обновлены до официальной версии релиза. ProxyTerminatingEndpoints перемещён в beta.

  • Поддерживаются источники данных томов из разных пространств имён.

    Эта функция позволяет указать источник данных, принадлежащий различным пространствам имён, для PVC. Эта функция находится в альфа‑фазе. Для получения подробной информации см. Cross namespace data sources.

  • Retroactive default StorageClass assignment перемещается в beta.

    В Kubernetes 1.25 была введена альфа‑функция, изменяющая способ назначения default StorageClass для PVC. После включения этой функции вам больше не требуется создавать default StorageClass и затем создавать PVC для назначения класса. Кроме того, любые PVC без назначенного StorageClass могут быть обновлены позже. Эта функция перемещается в beta в Kubernetes 1.26. Для получения подробной информации см. Retroactive default StorageClass assignment.

  • PodDisruptionBudget позволяет пользователям задавать политики выселения для нездоровых pod‑ов.

    Kubernetes 1.26 позволяет пользователям задавать политики выселения для нездоровых pod‑ов через PodDisruptionBudgets (PDBs). Это помогает поддерживать доступность во время управления узлом. Эта функция находится в бета‑фазе. Для получения подробной информации см. Unhealthy Pod Eviction Policy.

  • Количество Horizontal Pod Autoscaler (HPAs) можно настроить.

    kube-controller-manager позволяет --concurrent-horizontal-pod-autoscaler-syncs настроить количество рабочих узлов pod‑autoscaler для горизонтального масштабирования.

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

Kubernetes 1.27

  • В Kubernetes 1.27 функции‑ворота, используемые для расширения томов и находящиеся в статусе GA, включая ExpandCSIVolumes, ExpandInUsePersistentVolumes и ExpandPersistentVolumes, удалены и более не могут быть указаны в флаге --feature-gates.
  • Параметр --master-service-namespace удалён. Этот параметр указывает, где создавать Service с именем kubernetes для представления API‑сервера. Этот параметр был помечен как устаревший в Kubernetes 1.26 и удалён из Kubernetes 1.27.
  • Флаг функции ControllerManagerLeaderMigration удалён. Leader Migration предоставляет механизм для HA‑кластеров безопасно мигрировать "cloud specific" контроллеры, используя общий блокирующий ресурс между kube-controller-manager и cloud-controller-manager при обновлении реплицированного плоскости управления. Эта функция была включена безусловно с её выпуска в Kubernetes 1.24. В Kubernetes 1.27 эта функция удаляется.
  • Параметр --enable-taint-manager удалён. Функция, которую он поддерживает, taint-based eviction, включена по умолчанию. Она будет продолжать включаться неявно после удаления флага.
  • Параметр --pod-eviction-timeout удалён из kube-controller-manager.
  • Флаг функции CSIMigration удалён. Программа CSI migration позволяет плавно мигрировать от in-tree volume plug‑ins к out-of-tree CSI drivers. Эта функция была официально выпущена в Kubernetes 1.16.
  • Флаг функции CSIInlineVolume удалён. Функция (CSI Ephemeral Volume) позволяет указывать тома CSI непосредственно в спецификации pod для эпhemerальных сценариев использования. Их можно использовать для внедрения произвольных состояний, таких как конфигурация, secrets, identity, variables или аналогичная информация, непосредственно внутри pod с помощью смонтированного тома. Эта функция перешла в GA в Kubernetes 1.25 и удаляется в Kubernetes 1.27.
  • Флаг функции EphemeralContainers удалён. Для Kubernetes 1.27 поддержка API для epoxyhemeral containers включена безусловно.
  • Флаг функции LocalStorageCapacityIsolation удалён. Этот флаг функции (Local Ephemeral Storage Capacity Isolation) перешёл в GA в Kubernetes 1.25. Функция обеспечивает поддержку изоляции ёмкости локального эпhemerального хранилища между pod‑ами, например томов emptyDir, чтобы pod мог быть ограничен в потреблении общих ресурсов. kubelet будет вытеснять pod, если его потребление локального эпhemerального хранилища превышает настроенный лимит.
  • Флаг функции NetworkPolicyEndPort удалён. В Kubernetes 1.25 endPort в NetworkPolicy перешёл в GA. Провайдеры NetworkPolicy, поддерживающие поле endPort, могут использоваться для указания диапазона портов, к которым применяется NetworkPolicy.
  • Флаг функции StatefulSetMinReadySeconds удалён. Для pod, являющегося частью StatefulSet, Kubernetes помечает pod как read-only, когда pod доступен (и проходит проверку) в течение как минимум периода, указанного в minReadySeconds. Эта функция была официально выпущена в Kubernetes 1.25. По умолчанию она установлена в true и удаляется в Kubernetes 1.27.
  • Флаг функции IdentifyPodOS удалён. Если эта функция включена, вы можете указать ОС для pod. Она была стабильной с Kubernetes 1.25. Эта функция удаляется из Kubernetes 1.27.
  • Флаг функции DaemonSetUpdateSurge удалён. В Kubernetes 1.25 эта функция была стабильной. Она была реализована для минимизации простоя DaemonSet во время развертывания, но удаляется из Kubernetes 1.27.
  • Параметр --container-runtime удалён. kubelet принимает устаревший параметр --container-runtime. После удаления кода dockershim единственным допустимым значением для этого параметра будет remote. Этот параметр был помечен как устаревший в 1.24 и более поздних версиях и удалён из Kubernetes 1.27.

Kubernetes 1.26

  • API HorizontalPodAutoscaler для v2beta2 удалён.

    API autoscaling/v2beta2 HorizontalPodAutoscaler более недоступен в Kubernetes 1.26. Для подробностей см. Removed APIs by release. Используйте API autoscaling/v2 вместо этого.

  • API flowcontrol.apiserver.k8s.io/v1beta1 удалён.

    В Kubernetes 1.26 и более поздних версиях версия API flowcontrol.apiserver.k8s.io/v1beta1 для FlowSchema и PriorityLevelConfiguration более не предоставляется. Подробности см. в Removed APIs by release. Начиная с Kubernetes 1.23 вместо неё можно использовать версию API flowcontrol.apiserver.k8s.io/v1beta2. Начиная с Kubernetes 1.26 вместо неё можно использовать версию API flowcontrol.apiserver.k8s.io/v1beta3.

  • Встроенные драйверы in-tree storage drivers поставщиков облачных сервисов удалены.
  • Режим userspace kube-proxy удалён.

    Устаревший режим userspace более не поддерживается в Linux или Windows. Пользователи Linux могут использовать iptables или IPVS, а пользователи Windows — пространство ядра. Ошибки возвращаются, если вы используете --mode userspace.

    • kube-proxy winkernel для Windows более не поддерживает API Windows HNS v1.
  • Флаг --prune-whitelist устарел.

    Флаг --prune-whitelist устарел и заменён на --prune-allowlist для поддержки Inclusive Naming Initiative. Этот устаревший флаг будет полностью удалён в более поздних версиях.

  • Фича‑гейт DynamicKubeletConfig удалён.

    Конфигурацию kubelet узлов можно динамически обновлять через API. Фича‑гейт удалён из kubelet в Kubernetes 1.24 и удалён из API Server в Kubernetes 1.26. Это упрощает код и повышает стабильность. Рекомендуется вместо этого изменить файл конфигурации kubelet и затем перезапустить kubelet. Подробности см. в Remove DynamicKubeletConfig feature gate from the code.

  • Параметр командной строки kube-apiserver удалён.

    Параметр --master-service-namespace устарел. Он не используется в API Server.

  • Несколько параметров kubectl run устарели.

    Несколько неиспользуемых флагов kubectl помечены как устарел и будут удалены в более поздних версиях. Эти флаги включают --cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout и --wait.

  • Некоторые параметры командной строки, связанные с логированием, удалены.

    Некоторые параметры командной строки, связанные с логированием, удалены. Эти параметры объявлены устаревшими в более ранних версиях.

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

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

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

Ссылки

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