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. Вы можете приостановить job, используя приостановить поле. В фазе приостановки директивы планирования (например, node selector, node affinity, anti-affinity и tolerations) в шаблоне pod job могут быть изменены. Для подробностей см. Mutable Scheduling Directives.
- Downward API hugepages являются стабильными.
В Kubernetes 1.20, requests.hugepages-<pagesize> и limits.hugepages-<pagesize> были введены в низходящий API. Запросы и ограничения можно настраивать для hugepages, как и для других ресурсов.
- Готовность планирования подов переводится в бета.
После создания пода, планировщик Kubernetes выбирает подходящий узел для запуска пода в состоянии ожидания. На практике некоторые поды могут оставаться в состоянии ожидания длительное время из‑за нехватки ресурсов. Эти поды могут влиять на работу других компонентов, таких как Кластер Autoscaler в кластере. Указывая или удаляя .spec. schedulingGates для пода, вы можете управлять тем, когда под готов к планированию. Для подробностей см. Готовность планирования подов.
- Поддерживается доступ к журналам узла с помощью Kubernetes API.
Эта функция находится в альфа‑фазе. Администратор кластера может напрямую запрашивать журналы узла, чтобы помогать отлаживать неисправные сервисы, работающие на узле. Чтобы использовать эту функцию, убедитесь, что NodeLogQuery feature gate включен для этого узла и параметры конфигурации kubelet enableSystemLogHandler и enableSystemLogQuery установлены в true.
- ReadWriteOncePod режим доступа переходит в бета.
Kubernetes 1.22 представил режим доступа ReadWriteOncePod для PV и PVC. Эта функция перешла в бета‑фазу. Том может быть смонтирован в один pod в режиме чтения/записи. Используйте этот режим доступа, если вы хотите убедиться, что только один pod в кластере может читать этот PVC или записывать в него. Подробнее см Режимы доступа.
- Этот matchLabelKeys поле в ограничении распределения топологии pod переходит в бета.
matchLabelKeys это список ключей меток pod. Он используется для выбора группы pod, для которой будет рассчитано распределение. With matchLabelKeys, вам не нужно обновлять pod.spec между различными ревизиями. Контроллер или оператор просто должен установить разные значения для того же ключа метки для разных ревизий. Планировщик автоматически определит значения на основе matchLabelKeys. Для подробностей см. Ограничения распределения топологии Под.
- Функция эффективного присвоения меток SELinux томам переходит в бета.
По умолчанию среда выполнения контейнера рекурсивно назначает метку SELinux всем файлам во всех pod‑томах. Чтобы ускорить этот процесс, Kubernetes использует параметр монтирования -o context=<label> для немедленного назначения метки SELinux тома. Для подробностей см. Эффективное переименование меток SELinux тома.
- Перестроение VolumeManager переходит в бета.
После восстановления VolumeManager, если NewVolumeManagerReconstruction флаг функции включен, монтированные тома будут получаться более эффективно во время старта kubelet.
- Проверка полей на стороне сервера и OpenAPI V3 стабилизированы.
OpenAPI V3 был добавлен в Kubernetes 1.23. В Kubernetes 1.24 он перешел в бета. В Kubernetes 1.27 он стал стабильным.
- Порядковые индексы запуска StatefulSet переходят в бета.
Kubernetes 1.26 представил новую функцию уровня alpha для StatefulSets, позволяющую контролировать порядковую нумерацию реплик pod. С Kubernetes 1.27 эта функция переходит в бета. Порядковые индексы могут начинаться с произвольных неотрицательных чисел. Подробности смотрите Kubernetes 1.27: StatefulSet Start Ordinal Simplifies Migration.
- ContainerResource метрика в HorizontalPodAutoscaler переходит в бета.
Kubernetes 1.20 представил ContainerResource метрика в HorizontalPodAutoscaler (HPA). В Kubernetes 1.27 эта функция переходит в бета, и переключатель функции HPAContainerMetrics включен по умолчанию.
- Автоматическое удаление PVC в StatefulSet переходит в бета.
Kubernetes 1.27 предоставляет новую политику для управления жизненным циклом PVC в StatefulSet. Эта политика позволяет пользователям указать, следует ли автоматически удалять или сохранять PVC, созданные из шаблона спецификации 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 Service можно избежать.
В Kubernetes 1.27 вы можете включить новую фича‑гейт ServiceNodePortStaticSubrange для использования различных политик распределения портов для NodePort Services. Это снижает риск конфликтов портов. Эта функция находится в альфа‑фазе.
- Поддерживается изменение размеров ресурсов, назначенных pod‑ам, без перезапуска контейнеров.
Kubernetes 1.27 позволяет пользователям изменять размеры ресурсов CPU и памяти, назначенных pod‑ам, без перезапуска контейнера. Эта функция находится в альфа‑фазе. Для подробностей см. Kubernetes 1.27: Изменение размеров ресурсов на месте для Kubernetes Pods (alpha).
- Запуск Pod ускорен.
В Kubernetes 1.27 выполнена серия корректировок параметров, таких как параллельные загрузки образов и повышенный лимит запросов API по умолчанию для kubelet в секунду, чтобы ускорить запуск pod. Для подробностей см. 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, сбросьте их до последней версии.
- Alpha API для динамического распределения ресурсов добавлен.
В Kubernetes 1.26, Dynamic Resource Allocation добавлена возможность запрашивать и делить ресурсы между pods и между контейнерами в pod. Ресурсы инициализируются на основе параметров, предоставленных пользователем. Эта функция всё ещё находится в альфа‑фазе. Вам необходимо включить feature gate DynamicResourceAllocation и resource.k8s.io/v1alpha1 API группа. Вам необходимо установить драйверы для управления определёнными ресурсами. Для деталей см Kubernetes 1.26: Alpha 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 Scheduling Readiness.
- CPU manager официально выпущен.
CPU manager является частью kubelet. Поскольку Kubernetes 1.10, он был перемещён в бета. CPU manager может выделять эксклюзивные CPU контейнерам. Эта функция стабильна в Kubernetes 1.26. Для подробностей см. Control CPU Management Policies on the Node.
- Трафик‑инжиниринг Kubernetes улучшен.
Оптимизация локального трафика узла и Условия EndpointSlice обновлены до официальной версии релиза. ProxyTerminatingEndpoints переходит в beta.
- Поддерживаются источники томов данных из разных пространств имён.
Эта функция позволяет указать источник данных, принадлежащий другим пространствам имён для PVC. Эта функция находится в alpha фазе. Для подробностей см Источники данных из разных пространств имён.
- Retroactive default StorageClass assignment переходит в beta.
В Kubernetes 1.25 была введена alpha‑функция, изменяющая способ выделения класса хранения по умолчанию для PVC. После включения этой функции вам больше не требуется создавать класс хранения по умолчанию и затем PVC для назначения класса. Кроме того, любые PVC без назначенного класса хранения могут быть обновлены позже. Эта функция переходит в beta в Kubernetes 1.26. Для подробностей см Retroactive default StorageClass assignment.
- PodDisruptionBudget позволяет пользователям указывать политики выселения для нездоровых подов.
Вам разрешено указывать политики выселения нездоровых подов для PodDisruptionBudget (PDB). Эта функция помогает обеспечить доступность узлов во время управления узлами. Эта функция находится в бета‑фазе. Для подробностей см Unhealthy Pod Eviction Policy.
- Количество Horizontal Pod Autoscaler (HPA) можно настроить.
kube-controller-manager разрешает --concurrent-horizontal-pod-autoscaler-syncs для настройки количества рабочих узлов pod autoscaler для горизонтального масштабирования.
Deprecations and Removals
Kubernetes 1.27
- В Kubernetes 1.27, feature gates, используемые для расширения томов и находящиеся в статусе GA, включая ExpandCSIVolumes, ExpandInUsePersistentVolumes и ExpandPersistentVolumes, удаляются и более не могут использоваться в --feature-gates флаг.
- Этот --master-service-namespace параметр удалён. Этот параметр указывает, где создавать Service с именем kubernetes для представления API server. Этот параметр был объявлен устаревшим в Kubernetes 1.26 и удалён из Kubernetes 1.27.
- Фича‑гейт ControllerManagerLeaderMigration удалён. Leader Migration обеспечивает механизм для HA‑кластеров безопасно мигрировать "cloud specific" контроллеры, используя ресурсный замок, общий между kube-controller-manager и cloud-controller-manager при обновлении реплицированного control plane. Эта функция включена безоговорочно с её выпуска в Kubernetes 1.24. В Kubernetes 1.27 эта функция удалена.
- The --enable-taint-manager параметр удалён. Функция, которую он поддерживает, taint-based eviction, включена по умолчанию. Она будет продолжать включаться неявно после удаления флага.
- The --pod-eviction-timeout параметр удалён из kube-controller-manager.
- Флаг CSIMigration удалён. Эта CSI миграция программа позволяет плавную миграцию от in-tree volume plug-ins к out-of-tree CSI drivers. Эта функция была официально выпущена в Kubernetes 1.16.
- Флаг CSIInlineVolume удалён. Функция (CSI Эфемерный том) позволяет CSI volumes указывать напрямую в pod specification для эфемерных сценариев использования. Их можно использовать для внедрения произвольных состояний, таких как конфигурация, secrets, identity, variables или аналогичная информация, непосредственно внутри pod с помощью смонтированного тома. Эта функция перешла в GA в Kubernetes 1.25 и удалена в Kubernetes 1.27.
- Флаг EphemeralContainers удалён. Для Kubernetes 1.27 поддержка API для эфемерных контейнеров включена безусловно.
- Флаг LocalStorageCapacityIsolation удалён. Этот флаг функции (Локальная изоляция ёмкости эфемерного хранилища) перемещено в GA в Kubernetes 1.25. Функция обеспечивает поддержку изоляции ёмкости локального эфемерного хранилища между подами, такими как emptyDir volumes, чтобы под мог быть ограничен в потреблении общих ресурсов. kubelet выгрузит под, если его потребление локального эфемерного хранилища превысит настроенный предел.
- Флаг функции NetworkPolicyEndPort удалён. В Kubernetes 1.25, endPort в NetworkPolicy перемещено в GA. Провайдеры NetworkPolicy, которые поддерживают the endPort поле может использоваться для указания диапазона портов, к которым применяется NetworkPolicy.
- Флаг функции StatefulSetMinReadySeconds удалён. Для пода, являющегося частью StatefulSet, Kubernetes помечает под как только для чтения, когда под доступен (и проходит проверку) как минимум в течение периода, указанного в minReadySeconds. Эта функция была официально выпущена в Kubernetes 1.25. Она зафиксирована на true и удалена из Kubernetes 1.27.
- Фича‑gate IdentifyPodOS удалён. Если эта функция включена, вы можете указать ОС для pod. Она была стабильна начиная с Kubernetes 1.25. Эта функция удалена из Kubernetes 1.27.
- Фича‑gate DaemonSetUpdateSurge удалён. В Kubernetes 1.25 эта функция была стабильна. Она была реализована для минимизации простоя DaemonSet во время развертывания, но удалена из Kubernetes 1.27.
- Эта --container-runtime параметр удалён. kubelet принимает устаревший параметр --container-runtime, и единственное допустимое значение будет удалённый после удаления кода dockershim. Этот параметр был устаревшим в 1.24 и более поздних версиях и удалён из Kubernetes 1.27.
Kubernetes 1.26
- HorizontalPodAutoscaler API for v2beta2 удалён.
API autoscaling/v2beta2 HorizontalPodAutoscaler более недоступен в Kubernetes 1.26. Подробнее см. Удалённые API по версии. Используйте API autoscaling/v2 вместо этого.
- Этот 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 APIs.
- --prune-whitelist флаг устарел.
Флаг --prune-whitelist флаг устарел и заменён на --prune-allowlist для поддержки Inclusive Naming Initiative. Этот устаревший флаг будет полностью удалён в более поздних версиях.
- Фича‑гейт DynamicKubeletConfig удалён.
Конфигурация kubelet узлов может динамически обновляться через API. Фича‑гейт удалён из kubelet в Kubernetes 1.24 и удалён из API‑server в 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 Cluster Versions.
Ссылки
Для получения более подробной информации о сравнении производительности и развитии функций между Kubernetes 1.27 и другими версиями см. следующие документы: