CCE прошёл программу Certified Kubernetes Conformance и является сертифицированным предложением Kubernetes. CCE позволяет создавать Kubernetes кластеры 1.27. Этот раздел описывает изменения, внесённые в Kubernetes 1.27 по сравнению с Kubernetes 1.25.
Индексы
Новые функции
Kubernetes 1.27
- SeccompDefault стабилен.
Чтобы использовать SeccompDefault, добавьте --seccomp-default флаг командной строки используя kubelet на каждом узле. Если эта функция включена, то RuntimeDefault профиль будет использоваться для всех рабочих нагрузок по умолчанию, вместо Unconfined (seccomp disabled) профиль.
- Директивы планирования Jobs настраиваемы.
Эта функция была введена в Kubernetes 1.22 и стала стабильной в Kubernetes 1.27. В большинстве случаев вы используете job для управления тем, где будут запущены pod'ы, например все в одной AZ. Эта функция позволяет изменять директивы планирования до запуска job. Вы можете использовать suspend поле для приостановки job. На фазе приостановки директивы планирования (например node selector, node affinity, anti-affinity и tolerations) в шаблоне pod'а job могут быть изменены. Подробнее см. Изменяемые директивы планирования.
- Downward API hugepages стабилен.
В Kubernetes 1.20, requests.hugepages-<pagesize> и limits.hugepages-<pagesize> были введены в downward API. Запросы и ограничения можно настраивать для hugepages, как и для других ресурсов.
- Готовность планирования Pod переходит в бета.
После создания pod'а, планировщик Kubernetes выбирает подходящий узел для запуска pod'а в состоянии pending. На практике некоторые pod'ы могут оставаться в состоянии pending длительное время из‑за недостатка ресурсов. Эти pod'ы могут влиять на работу других компонентов, таких как Cluster Autoscaler в кластере. Указывая или удаляя .spec. schedulingGates для pod, вы можете контролировать, когда pod готов к планированию. Подробнее см. Готовность планирования Pod.
- Доступ к журналам узла с помощью Kubernetes API поддерживается.
Эта функция находится в альфа‑фазе. Администратор кластера может напрямую запрашивать журналы узла для отладки неисправных сервисов, работающих на узле. Чтобы использовать эту функцию, убедитесь, что NodeLogQuery feature gate включён для данного узла и параметры конфигурации kubelet enableSystemLogHandler и enableSystemLogQuery установлены в true.
- Режим доступа ReadWriteOncePod переходит в бета.
Kubernetes 1.22 ввёл режим доступа ReadWriteOncePod для PV и PVC. Эта функция перешла в бета‑фазу. Том может быть смонтирован в один pod в режиме чтения/записи. Используйте этот режим доступа, если хотите гарантировать, что только один pod в кластере может читать этот PVC или записывать в него. Подробнее см. Режимы доступа.
- Поле matchLabelKeys поле в ограничении распределения топологии pod переходит в бета.
matchLabelKeys это список ключей меток pod. Он используется для выбора группы pod, по которым будет вычисляться распределение. С matchLabelKeys, вам не нужно обновлять pod.spec между разными версиями. Контроллеру или оператору достаточно установить разные значения для того же ключа метки в разных версиях. Планировщик автоматически определит значения на основе matchLabelKeys. Подробнее см. Ограничения распределения топологии Pod.
- Функция эффективного маркирования томов SELinux переходит в бета.
По умолчанию среда выполнения контейнеров рекурсивно назначает метку SELinux всем файлам на всех томах pod. Чтобы ускорить процесс, Kubernetes использует опцию монтирования -o context=<label> для немедленного изменения метки SELinux тома. Подробнее см. Эффективное переименование томов SELinux.
- Восстановление VolumeManager переходит в бета.
После восстановления VolumeManager, если NewVolumeManagerReconstruction feature gate включён, смонтированные тома будут получаться более эффективно при запуске kubelet.
- Проверка полей на стороне сервера и OpenAPI V3 стабильны.
OpenAPI V3 был добавлен в Kubernetes 1.23. В Kubernetes 1.24 он перешел в бета. В Kubernetes 1.27 он стабильный.
- Начальный порядковый номер StatefulSet переходит в бета.
В Kubernetes 1.26 была введена новая функция уровня alpha для StatefulSet'ов, позволяющая контролировать порядковую нумерацию реплик pod. Начиная с Kubernetes 1.27, эта функция перешла в бета. Порядковые номера могут начинаться с произвольных неотрицательных чисел. Подробнее см. Kubernetes 1.27: Начальный порядковый номер StatefulSet упрощает миграцию.
- ContainerResource метрика в HorizontalPodAutoscaler переходит в бета.
В Kubernetes 1.20 была введена ContainerResource метрика в HorizontalPodAutoscaler (HPA). В Kubernetes 1.27 эта функция переходит в бета-версию, и feature gate HPAContainerMetrics включен по умолчанию.
- Автоматическое удаление PVC в StatefulSet переходит в бета-версию.
Kubernetes 1.27 предоставляет новую политику для управления жизненным циклом PVC в StatefulSets. Эта политика позволяет пользователям указывать, должны ли PVC, созданные из шаблона spec StatefulSet, автоматически удаляться или сохраняться при удалении StatefulSet или масштабировании реплик StatefulSet. Для получения подробной информации см. Сохранение PersistentVolumeClaim.
- Введены снимки группы томов.
Снимки группы томов представлены как альфа-функция в Kubernetes 1.27. Эта функция позволяет пользователям создавать снимки для нескольких томов для обеспечения согласованности данных при возникновении сбоя. Она использует селектор меток для группировки нескольких PVC для создания снимка. Эта функция поддерживает только драйверы томов CSI. Для получения подробной информации см. Kubernetes 1.27: Представление API для снимков группы томов.
- kubectl apply Обрезка более безопасна и эффективна.
В Kubernetes 1.5, --prune флаг был введён в kubectl apply для удаления ресурсов, которые больше не нужны. Это позволяло kubectl apply автоматически удалять ресурсы, удалённые из текущей конфигурации. Однако существующая реализация --prune имеет конструктивные недостатки, снижающие её производительность и приводящие к непредвиденному поведению. В Kubernetes 1.27, kubectl apply предоставляет обрезку на основе ApplySet, которая находится в альфа-фазе. Для получения подробной информации см. Декларативное управление объектами Kubernetes с использованием файлов конфигурации.
- Конфликты при распределении портов для службы NodePort можно избежать.
В Kubernetes 1.27 вы можете включить новую feature gate ServiceNodePortStaticSubrange для использования различных политик распределения портов для служб NodePort. Это снижает риск конфликтов портов. Эта функция находится в альфа-фазе.
- Поддерживается изменение размера ресурсов, назначенных подам, без перезапуска контейнеров.
Kubernetes 1.27 позволяет пользователям изменять размер ресурсов CPU и памяти, назначенных подам, без перезапуска контейнера. Эта функция находится в альфа-фазе. Для получения подробной информации см. Kubernetes 1.27: Изменение размера ресурсов на месте для подов Kubernetes (alpha).
- Запуск подов ускорен.
В Kubernetes 1.27 выполнена серия корректировок параметров, таких как параллельные загрузки образов и увеличение предельного количества запросов API по умолчанию для kubelet в секунду, чтобы ускорить запуск подов. Для получения подробной информации см. Kubernetes 1.27: обновления по ускорению запуска pod'ов.
- KMS V2 переходит в бета-версию.
API управления ключами KMS V2 переходит в бета-версию. Это значительно улучшило производительность провайдера шифрования KMS. Для получения подробной информации см. Использование провайдера KMS для шифрования данных.
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, сбросьте их до последней версии.
- Добавлен альфа API для динамического распределения ресурсов.
В Kubernetes 1.26, Dynamic Resource Allocation добавлена возможность запрашивать и совместно использовать ресурсы между pod'ами и между контейнерами внутри pod'а. Ресурсы могут быть инициализированы на основе параметров, предоставленных пользователем. Эта функция всё ещё находится в альфа-фазе. Необходимо включить feature gate DynamicResourceAllocation и resource.k8s.io/v1alpha1 группа API. Необходимо установить драйверы для управления конкретными ресурсами. Для получения подробной информации см. Kubernetes 1.26: Альфа API для динамического распределения ресурсов.
- Функция некорректного завершения работы узла переходит в бета-версию.
В Kubernetes 1.26 функция некорректного завершения работы узла переходит в бета-версию и включена по умолчанию. Завершение работы узла может быть корректным только если менеджер завершения работы узла kubelet может обнаружить предстоящий процесс завершения. Для получения подробной информации см. Обработка некорректного завершения узла.
- Передача pod fsGroup к драйверам CSI во время монтирования поддерживается.
В Kubernetes 1.22 делегирование fsGroup к драйверам CSI было впервые представлено как альфа-функция. В Kubernetes 1.25 она перешла в бета. В Kubernetes 1.26 эта функция переходит в официальную фазу выпуска. Для получения подробной информации см. Делегирование прав доступа к томам и изменения владения драйверу CSI.
- Готовность планирования pod'ов внедрена.
Kubernetes 1.26 вводит новую функцию schedulingGates, которая позволяет планировщику определять, когда можно выполнить планирование pod'а. Для получения подробной информации см. Готовность планирования pod'ов.
- CPU manager официально выпущен.
CPU manager является частью kubelet. С Kubernetes 1.10 он переместился в beta. CPU manager может выделять эксклюзивные CPU контейнерам. Эта функция является стабильной в Kubernetes 1.26. Для получения подробной информации см. Управление политиками CPU на узле.
- Kubernetes traffic engineering is advanced.
Внутренняя оптимизация трафика на уровне узла и условия EndpointSlice обновляются до официальной версии релиза. ProxyTerminatingEndpoints переводится в бета.
- Поддерживаются кросс‑пространственные источники данных томов.
Эта функция позволяет указать источник данных, принадлежащий различным пространствам имён, для PVC. Эта функция находится в альфа‑фазе. Подробности см. Кросс‑пространственные источники данных.
- Назначение ретроспективного стандартного StorageClass переводится в бета.
В Kubernetes 1.25 была введена альфа‑функция, изменяющая способ назначения стандартного StorageClass для PVC. После включения этой функции вам больше не нужно создавать стандартный StorageClass и затем создавать PVC для назначения класса. Кроме того, любые PVC без назначенного StorageClass можно будет обновить позже. Эта функция переводится в бета в Kubernetes 1.26. Подробности см. Ретроспективное назначение стандартного StorageClass.
- PodDisruptionBudget позволяет пользователям задавать политики выселения для нездоровых подов.
Вам разрешено указывать политики выселения нездоровых подов для PodDisruptionBudget (PDB). Эта функция помогает обеспечить доступность узлов во время управления узлами. Эта функция находится в бета‑фазе. Подробности см. Политика выселения нездоровых Pod.
- Можно настроить количество Horizontal Pod Autoscaler (HPA).
kube-controller-manager позволяет --concurrent-horizontal-pod-autoscaler-syncs для настройки количества рабочих узлов автоскейлера pod для горизонтального масштабирования.
Устаревание и удаление
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‑кластеров безопасно мигрировать «специфичные для облака» контроллеры, используя общий блок ресурсов между kube-controller-manager и cloud-controller-manager при обновлении реплицированного контрольного плана. Эта функция была включена безусловно с её релиза в Kubernetes 1.24. В Kubernetes 1.27 эта функция удалена.
- Эта --enable-taint-manager параметр удалён. Функция, которую он поддерживает, удаление на основе taint, включена по умолчанию и будет продолжать включаться неявно после удаления флага.
- Эта --pod-eviction-timeout параметр удалён из kube-controller-manager.
- Гейтфичу CSIMigration удалена. The CSI migration программа позволяет плавно мигрировать от встроенных volume plug‑ins к внешним CSI‑драйверам. Эта функция была официально выпущена в Kubernetes 1.16.
- Гейтфичу CSIInlineVolume удалена. Функция (CSI Ephemeral Volume) позволяет указывать CSI‑тома напрямую в спецификации pod для эпhemerных случаев использования. Их можно использовать для внедрения произвольных состояний, таких как конфигурация, секреты, идентификация, переменные или аналогичная информация, непосредственно внутри pod с помощью подключённого тома. Эта функция перешла в GA в Kubernetes 1.25 и удалена в Kubernetes 1.27.
- Гейтфичу EphemeralContainers удалена. Для Kubernetes 1.27 поддержка API для эпhemral containers включена безусловно.
- Гейтфичу LocalStorageCapacityIsolation удалена. Этот гейтфич (Local Ephemeral Storage Capacity Isolation) перешел в GA в Kubernetes 1.25. Функция обеспечивает поддержку изоляции ёмкости локального эпhemeral хранилища между pod‑ами, такими как emptyDir‑тома, чтобы pod мог быть ограничен в потреблении общих ресурсов. kubelet выселит pod, если его потребление локального эпhemeral хранилища превысит установленный лимит.
- Гейтфичу NetworkPolicyEndPort удалена. В Kubernetes 1.25, endPort в NetworkPolicy перешел в GA. Провайдеры NetworkPolicy, поддерживающие endPort поле может использоваться для указания диапазона портов, применимых к NetworkPolicy.
- Гейтфичу StatefulSetMinReadySeconds удалена. Для pod, являющегося частью StatefulSet, Kubernetes помечает pod как только‑для‑чтения, когда 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, и единственно допустимое значение будет remote после удаления кода dockershim. Этот параметр был помечен как устаревший в 1.24 и последующих версиях и удалён из Kubernetes 1.27.
Kubernetes 1.26
- API HorizontalPodAutoscaler для v2beta2 удалён.
API autoscaling/v2beta2 HorizontalPodAutoscaler более недоступен в Kubernetes 1.26. Подробности см. Удалённые API по релизу. Используйте autoscaling/v2 API вместо этого.
- Этот flowcontrol.apiserver.k8s.io/v1beta1 API удалён.
В Kubernetes 1.26 и более поздних версиях API flowcontrol.apiserver.k8s.io/v1beta1 версия для FlowSchema и PriorityLevelConfiguration больше не обслуживается. Подробности смотрите Удалённые API по релизу. Этот flowcontrol.apiserver.k8s.io/v1beta2 версия доступна в Kubernetes 1.23 и более поздних версиях, и flowcontrol.apiserver.k8s.io/v1beta3 версия доступна в Kubernetes 1.26 и более поздних версиях.
- Встроенные драйверы систем хранения поставщиков облачных сервисов удалены.
- Режим userspace kube-proxy удалён.
Устаревший режим userspace больше не поддерживается Linux или Windows. Пользователи Linux могут использовать Iptables или IPVS, а пользователи Windows могут использовать режим Kernelspace. Ошибки возвращаются, если вы используете --mode userspace.
- Windows winkernel kube-proxy больше не поддерживает Windows HNS v1 API.
- --prune-whitelist флаг устарел.
Этот --prune-whitelist флаг устарел и заменён на --prune-allowlist для поддержки Inclusive Naming Initiative. Этот устаревший флаг будет полностью удалён в последующих версиях.
- Фича‑гейт DynamicKubeletConfig удалён.
Конфигурацию kubelet узлов можно динамически обновлять через API. Фича‑гейт удалён из kubelet в Kubernetes 1.24 и удалён из API‑сервера в Kubernetes 1.26. Это упрощает код и повышает стабильность. Рекомендуется вместо этого изменять файл конфигурации kubelet и затем перезапускать kubelet. Подробности смотрите Удалить фича‑гейт DynamicKubeletConfig из кода.
- Параметр командной строки 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 и предоставляет улучшенные функции.
Подробности об обновлениях версии кластера смотрите Примечания к выпуску для версий кластеров CCE.
Ссылки
Для получения дополнительных сведений о сравнении производительности и эволюции функций между Kubernetes 1.27 и другими версиями см. следующие документы: