CCE прошёл Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. CCE теперь поддерживает функции кластера Kubernetes 1.28. В этом разделе описаны изменения, внесённые в Kubernetes 1.28.
Функции в альфа‑стадии отключены по умолчанию, функции в бета‑стадии включены по умолчанию, а функции в стадии GA всегда включены и их нельзя отключить. Возможность включения или отключения функций в стадии GA будет удалена в более поздних версиях Kubernetes. Политики CCE для новых функций совпадают с политиками сообщества.
Начиная с control planes 1.28 и worker nodes 1.25, Kubernetes skew policy расширяет поддерживаемый диапазон несовместимости control plane и worker node до трёх версий. Это позволяет выполнять ежегодные обновления минорных версий узлов, оставаясь на поддерживаемых минорных версиях. Для получения подробной информации см. Version Skew Policy.
Назначение retroactive default StorageClass переходит в GA. Это улучшение значительно повышает способ назначения default StorageClasses для PersistentVolumeClaims (PVC).
Контроллер PV был изменён так, чтобы автоматически назначать default StorageClass любому несвязанному PVC, у которого не настроен storageClassName. Кроме того, механизм проверки допуска PVC в API‑server был скорректирован, чтобы разрешать изменение значения из неустановленного состояния в фактическое имя StorageClass. Для получения подробной информации см. Retroactive default StorageClass assignment.
The native sidecar containers are available in alpha. Kubernetes 1.28 adds restartPolicy to Init containers. This field is available when the SidecarContainers feature gate is enabled. However, there are still some problems to be solved in the native sidecar containers. Therefore, the Kubernetes community recommends only using this feature gate in short lived testing clusters at the alpha phase. For details, see Introducing native sidecar containers.
Новый механизм (mixed version proxy) выпущен для улучшения обновления кластера. Это alpha‑функция в Kubernetes 1.28. При обновлении кластера API‑server’ы разных версий могут обслуживать разные наборы (группы, версии или ресурсы) встроенных ресурсов. Запрос ресурса в такой ситуации может быть обработан любым из доступных API‑server’ов, что может привести к тому, что запрос попадёт к API‑server, не знающему о запрашиваемом ресурсе. В результате запрос завершается ошибкой. Эта функция решает данную проблему. (Обратите внимание, что CCE обеспечивает безотказное обновление. Поэтому эта функция не используется в кластерах CCE.) Для получения подробной информации см. A New (alpha) Mechanism For Safer Cluster Upgrades.
The non-graceful node shutdown is now GA in Kubernetes 1.28. When a node was shut down and that shutdown was not detected by the kubelet's Node Shutdown Manager, the StatefulSet pods that run on this node will stay in the terminated state and cannot be moved to a running node. If you have confirmed that the shutdown node is irrecoverable, you can add an out-of-service taint to the node. This ensures that the StatefulSet pods and VolumeAttachments on this node can be forcibly deleted and the corresponding pods will be created on a healthy node. For details, see Non-Graceful Node Shutdown Moves to GA.
Support for NodeSwap goes to beta in Kubernetes 1.28. NodeSwap is disabled by default and can be enabled using the NodeSwap feature gate. NodeSwap allows you to configure swap memory usage for Kubernetes workloads running on Linux on a per-node basis. Note that although NodeSwap has reached beta, there are still some problems to be solved and security risks to be enhanced. For details, see Beta Support for Using Swap on Linux.
Two alpha features are introduced: delayed creation of replacement pods and backoff limit per index.
По умолчанию, когда pod переходит в состояние terminating (например, из‑за вытеснения или выселения), Kubernetes немедленно создает заменяющий pod. Поэтому оба pods работают одновременно.
В Kubernetes 1.28 эту функцию можно включить, включив feature gate JobPodReplacementPolicy. При включенном feature gate вы можете задать поле podReplacementPolicy в разделе spec задания в значение Failed. Таким образом, pods будут заменяться только после перехода в фазу failed, а не при состоянии terminating. Кроме того, вы можете проверить поле .status.termination задания. Значение этого поля указывает количество pods, связанных с заданием, во время termination.
По умолчанию сбои pods для индексированных jobs фиксируются и ограничиваются глобальным лимитом повторных попыток, указанным в .spec.backoffLimit. Это означает, что если в job есть постоянно сбойный индекс, pods, указанные в job, будут перезапускаться неоднократно, пока сбои pods не исчерпают лимит. После достижения лимита job помечается как failed, и pods для остальных индексов в job могут никогда не запуститься.
В Kubernetes 1.28 эту функцию можно включить, включив feature gate JobBackoffLimitPerIndex кластера. При включенном feature gate можно задать .spec.backoffLimitPerIndex при создании индексированного job. Только если сбои pods со всеми индексами, указанными в этом job, превысят верхний предел, pods, указанные в job, не будут перезапускаться.
Функции, связанные с CEL, улучшены.
Эта функция была повышена до бета‑версии, начиная с Kubernetes 1.25. Встраивая выражения CEL в CRDs, разработчики могут решать большинство сценариев проверки CR без использования webhooks. В будущих версиях Kubernetes будут разработаны дополнительные функции CEL, такие как поддержка значений по умолчанию и конвертации CRD.
CEL admission control настраиваемый. С помощью выражений CEL вы можете решать, принимать или отклонять запросы, полученные kube-apiserver. Выражения CEL также могут заменять admission webhooks. В Kubernetes 1.28 CEL admission control повышен до бета и добавлены новые функции, такие как:
Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.28 и предоставляет расширенные функции.
Для получения подробной информации об обновлениях версии кластера см. Release Notes for CCE Cluster Versions.
Для получения более подробной информации о сравнении производительности и эволюции функций между Kubernetes 1.28 и другими версиями см. Kubernetes v1.28 Release Notes.