CCE прошёл программу Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. CCE теперь поддерживает функции кластера Kubernetes 1.27. В этом разделе описаны изменения, внесённые в Kubernetes 1.27 по сравнению с Kubernetes 1.25.
Kubernetes 1.27 Чтобы использовать SeccompDefault, добавьте --seccomp-default command line flag с помощью kubelet на каждом узле. Если эта функция включена, профиль RuntimeDefault будет использоваться для всех рабочих нагрузок по умолчанию, вместо профиля Unconfined (seccomp отключён). Эта функция была введена в Kubernetes 1.22 и стабилизирована в Kubernetes 1.27. В большинстве случаев вы используете job для управления тем, где будут запускаться pod'ы, например, все в одной AZ. Эта функция позволяет изменять директивы планирования до запуска job. Вы можете приостановить job, используя поле suspend. На этапе приостановки директивы планирования (например, node selector, node affinity, anti-affinity и tolerations) в шаблоне pod'а job можно изменить. Подробности см. в Mutable Scheduling Directives. 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, планировщик Kubernetes выбирает подходящий узел для запуска pod в состоянии pending. На практике некоторые pod могут оставаться в состоянии pending длительное время из‑за недостатка ресурсов. Эти pod могут влиять на работу других компонентов, таких как Cluster Autoscaler в кластере. Указывая или удаляя .spec. schedulingGates для pod, вы можете контролировать, когда pod готов к планированию. Подробнее см. Pod Scheduling Readiness. Эта функция находится в alpha phase. Администратор кластера может напрямую запрашивать журналы узла, чтобы отлаживать неисправные сервисы, работающие на узле. Чтобы использовать эту функцию, убедитесь, что NodeLogQuery feature gate включён для этого узла, а параметры конфигурации kubelet enableSystemLogHandler и enableSystemLogQuery установлены в true. Kubernetes 1.22 представил режим доступа ReadWriteOncePod для PV и PVC. Эта функция перешла в beta phase. Том может быть смонтирован в один pod в режиме чтения/записи. Используйте этот режим доступа, если необходимо гарантировать, что только один pod в кластере может читать этот PVC или записывать в него. Подробнее см. Access Modes. matchLabelKeys — это список ключей меток pod. Он используется для выбора группы pod, над которой будет рассчитываться распределение. С помощью matchLabelKeys вам не требуется обновлять pod.spec между разными ревизиями. Контроллер или оператор просто задаёт разные значения одного и того же ключа метки для разных ревизий. Планировщик автоматически определит значения на основе matchLabelKeys. Подробнее см. Pod Topology Distribution Constraints. По умолчанию среда выполнения контейнеров рекурсивно назначает метку SELinux всем файлам во всех томах pod. Чтобы ускорить этот процесс, Kubernetes использует параметр монтирования -o context=\u003clabel\u003e для немедленного назначения метки SELinux тому. Подробнее см. Efficient SELinux volume relabeling. После восстановления VolumeManager, если включён NewVolumeManagerReconstruction feature gate, смонтированные тома будут получаться более эффективно во время запуска kubelet. OpenAPI V3 был добавлен в Kubernetes 1.23. В Kubernetes 1.24 он перешёл в beta. В Kubernetes 1.27 он находится в stable. Kubernetes 1.26 представил новую функцию уровня alpha для StatefulSets, позволяющую управлять порядковой нумерацией реплик pod. Начиная с Kubernetes 1.27, эта функция переходит в beta. Порядковые номера могут начинаться с произвольных неотрицательных чисел. Подробности см. в Kubernetes 1.27: StatefulSet Start Ordinal Simplifies Migration. Kubernetes 1.20 представил container resource metrics в Horizontal Pod Autoscalers (HPAs). В Kubernetes 1.27 эта функция переходит в beta, и feature gate HPAContainerMetrics включён по умолчанию. 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. В 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. В Kubernetes 1.27 вы можете включить новый feature gate ServiceNodePortStaticSubrange, чтобы использовать различные политики выделения портов для NodePort Services. Это снижает риск конфликтов портов. Эта функция находится в альфа‑фазе. Kubernetes 1.27 позволяет пользователям изменять размеры CPU и памяти, назначенных pod, без перезапуска контейнера. Эта функция находится в альфа‑фазе. Подробности см. в Kubernetes 1.27: In-place Resource Resize for Kubernetes Pods (alpha). В Kubernetes 1.27 выполнена серия настроек параметров, таких как параллельные загрузки образов и увеличенный лимит запросов API по умолчанию для kubelet в секунду, чтобы ускорить запуск pod. Подробности см. в Kubernetes 1.27: updates on speeding up Pod startup. API управления ключами KMS V2 переходит в бета. Это значительно улучшило производительность провайдера шифрования KMS. Для получения подробной информации см. Using a KMS provider for data encryption.
Kubernetes 1.26
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. Версия containerd, используемая CCE, — 1.6.14, что соответствует требованиям. Если существующие узлы не соответствуют требованиям к версии containerd, сбросьте их до последней версии.
В 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.
В Kubernetes 26 функция non-graceful node shutdown находится в бета‑фазе и включена по умолчанию. Завершение работы узла считается корректным только в том случае, если менеджер завершения работы узла kubelet может обнаружить предстоящие действия по завершению работы узла. Для получения подробной информации см. Non-graceful node shutdown handling.
Делегирование управления fsGroup драйверам CSI впервые было представлено как альфа‑функция в Kubernetes 1.22 и перешло в бета в Kubernetes 1.25. Эта функция официально выпущена в Kubernetes 1.26. Для получения подробной информации см. Delegating volume permission and ownership change to CSI driver.
Kubernetes 1.26 вводит новую функцию schedulingGates, которая позволяет планировщику знать, когда можно выполнять планирование pod‑ов. Для получения подробной информации см. Pod Scheduling Readiness.
CPU manager является частью kubelet. Начиная с Kubernetes 1.10, он перемещён в beta. CPU manager может выделять эксклюзивные CPU контейнерам. Эта функция стабильна в Kubernetes 1.26. Для получения подробной информации см. Control CPU Management Policies on the Node.
Internal node-local traffic optimization и EndpointSlice conditions обновлены до официальной версии релиза. ProxyTerminatingEndpoints перемещён в beta.
Эта функция позволяет указать источник данных, принадлежащий различным пространствам имён, для PVC. Эта функция находится в альфа‑фазе. Для получения подробной информации см. Cross namespace data sources.
В Kubernetes 1.25 была введена альфа‑функция, изменяющая способ назначения default StorageClass для PVC. После включения этой функции вам больше не требуется создавать default StorageClass и затем создавать PVC для назначения класса. Кроме того, любые PVC без назначенного StorageClass могут быть обновлены позже. Эта функция перемещается в beta в Kubernetes 1.26. Для получения подробной информации см. Retroactive default StorageClass assignment.
Kubernetes 1.26 позволяет пользователям задавать политики выселения для нездоровых pod‑ов через PodDisruptionBudgets (PDBs). Это помогает поддерживать доступность во время управления узлом. Эта функция находится в бета‑фазе. Для получения подробной информации см. Unhealthy Pod Eviction Policy.
kube-controller-manager позволяет --concurrent-horizontal-pod-autoscaler-syncs настроить количество рабочих узлов pod‑autoscaler для горизонтального масштабирования.
Kubernetes 1.27
Kubernetes 1.26
API autoscaling/v2beta2 HorizontalPodAutoscaler более недоступен в Kubernetes 1.26. Для подробностей см. Removed APIs by release. Используйте API autoscaling/v2 вместо этого.
В 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.
Устаревший режим userspace более не поддерживается в Linux или Windows. Пользователи Linux могут использовать iptables или IPVS, а пользователи Windows — пространство ядра. Ошибки возвращаются, если вы используете --mode userspace.
Флаг --prune-whitelist устарел и заменён на --prune-allowlist для поддержки Inclusive Naming Initiative. Этот устаревший флаг будет полностью удалён в более поздних версиях.
Конфигурацию kubelet узлов можно динамически обновлять через API. Фича‑гейт удалён из kubelet в Kubernetes 1.24 и удалён из API Server в Kubernetes 1.26. Это упрощает код и повышает стабильность. Рекомендуется вместо этого изменить файл конфигурации kubelet и затем перезапустить kubelet. Подробности см. в Remove DynamicKubeletConfig feature gate from the code.
Параметр --master-service-namespace устарел. Он не используется в API Server.
Несколько неиспользуемых флагов kubectl помечены как устарел и будут удалены в более поздних версиях. Эти флаги включают --cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout и --wait.
Некоторые параметры командной строки, связанные с логированием, удалены. Эти параметры объявлены устаревшими в более ранних версиях.
Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.27, добавляя улучшенные функции.
Для получения подробной информации об обновлениях версии кластера см. Release Notes for CCE Cluster Versions.
Для получения более подробной информации о сравнении производительности и функциональных улучшениях между Kubernetes 1.27 и другими версиями см. следующие документы: