CCE прошёл Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. CCE теперь поддерживает функции кластера Kubernetes 1.29. В этом разделе описаны изменения в Kubernetes 1.29.
Режим load balancer IP mode для Services переведён в альфа. Kubernetes 1.29 добавляет поле ipMode в поле status Service для настройки переадресации трафика от Services внутри кластера к pod‑ам. Если ipMode установлен в VIP, трафик, доставляемый на узел с назначением, установленным на IP‑адрес и порт балансировщика нагрузки, будет перенаправлен на целевой узел kube-proxy. Если он установлен в Proxy, трафик, доставляемый на узел, будет отправлен к балансировщику нагрузки, а затем перенаправлен на целевой узел балансировщиком нагрузки. Эта функция решает проблему пропуска функций балансировщика нагрузки из‑за обхода трафика. Для подробностей см. Load Balancer IP Mode for Services.
Режим nftables proxy переведён в альфа. Эта функция позволяет kube-proxy работать в режиме nftables. В этом режиме kube-proxy настраивает правила переадресации пакетов, используя API nftables подсистемы ядра netfilter. Для подробностей см. nftables proxy mode.
Сборка мусора для неиспользуемых container images переведена в альфа. Эта функция позволяет указать максимальное время, в течение которого локальный образ может оставаться неиспользуемым на каждом узле. По истечении времени образ будет удалён сборкой мусора. Чтобы настроить параметр, укажите поле ImageMaximumGCAge для kubelet. Для подробностей см. Garbage collection for unused container images.
PodLifecycleSleepAction переведено в состояние alpha. Эта функция вводит sleep‑hook в container lifecycle hooks. Вы можете приостановить контейнер на заданный период после его запуска или перед остановкой, включив эту функцию. Подробнее см. Hook handler implementations.
KubeletSeparateDiskGC переведено в состояние alpha. При включённой функции образы контейнеров и контейнеры могут быть удалены сборщиком мусора, даже если они находятся на отдельных файловых системах.
matchLabelKeys и mismatchLabelKeys переведено в состояние alpha. При включённых этих функциях поля matchLabelKeys и mismatchLabelKeys добавляются в конфигурации pod affinity и anti‑affinity. Это позволяет настраивать больше политик affinity и anti‑affinity между pod‑ами. Подробнее см. matchLabelKeys and mismatchLabelKeys.
clusterTrustBundle projected volumes переведено в состояние alpha. При включённой функции источник clusterTrustBundle projected volume внедряет содержимое одного или нескольких объектов ClusterTrustBundle в виде автоматически обновляемого файла. Подробнее см. clusterTrustBundle projected volumes.
Получение образов на основе runtime‑классов переведено в состояние alpha. При включённой функции kubelet ссылается на образы контейнеров кортежем (имени образа или runtime‑handler), а не только на имя образа или дайджест. Ваш runtime контейнера может адаптировать своё поведение в зависимости от выбранного runtime‑handler. Получение образов на основе runtime‑классов будет полезно для контейнеров на основе VM. Подробнее см. Image pull per runtime class.
PodReadyToStartContainers condition переведено в состояние beta. Kubernetes 1.29 вводит условие PodReadyToStartContainers в поле status pod‑ов. Если оно установлено в true, песочница pod готова и можно создавать сервисные контейнеры. Эта функция позволяет администраторам кластера получить более чёткое и полное представление о завершении создания песочницы pod и готовности контейнеров. Такое улучшенное отображение позволяет принимать более обоснованные решения и эффективнее устранять проблемы. Подробнее см. PodReadyToStartContainers Condition Moves to Beta.
Функция pod replacement policy переведена в состояние beta. Эта функция гарантирует, что pod заменяется только при переходе в состояние Failed, что означает, что status.phase становится Failed. Она не воссоздаёт pod, если метка времени удаления не пуста и pod всё ещё удаляется. Это предотвращает одновременное занятие индексных и узловых ресурсов двумя pod‑ами.
Backoff limit per index переходит в beta. По умолчанию pod failures для indexed jobs учитываются и ограничиваются глобальным лимитом повторов, указанным в .spec.backoffLimit. Это означает, что если в job есть постоянно падающий индекс, pod, указанные в job, будут перезапускаться неоднократно, пока pod failures не исчерпают лимит. После достижения лимита job помечается как failed, и pod для остальных индексов в job могут никогда не запуститься. Функция позволяет завершить выполнение всех индексов, несмотря на сбои некоторых индексов, и более эффективно использовать вычислительные ресурсы, избегая ненужных повторов постоянно падающих индексов.
Native sidecar containers продвигаются в beta. Поле restartPolicy добавляется в initContainers. Когда это поле установлено в Always, sidecar container включается. Sidecar container и service container разворачиваются в одном pod. Это не может продлить жизненный цикл pod. Sidecar containers обычно используются в сценариях, таких как сетевой прокси и сбор логов. Подробности см. в Sidecar Containers.
Legacy ServiceAccount token cleaner продвигается в beta. Он работает как часть kube-controller-manager и каждые 24 часа проверяет, не использовался ли какой‑либо автоматически сгенерированный legacy ServiceAccount token в течение определённого периода времени (по умолчанию один год, задаётся параметром --legacy-service-account-token-clean-up-period). Если да, очиститель помечает такие токены как недействительные и добавляет метку kubernetes.io/legacy-token-invalid-since со значением текущей даты. Если недействительный токен не используется в течение определённого периода времени (по умолчанию один год, задаётся параметром --legacy-service-account-token-clean-up-period), очиститель удаляет его. Подробности см. в Legacy ServiceAccount token cleaner.
DevicePluginCDIDevices переходит в beta. При включённой функции разработчики плагинов могут использовать поле CDIDevices, добавленное в DeviceRunContainerOptions, чтобы передавать имена CDI‑устройств напрямую в CDI‑поддерживаемые среды выполнения.
The PodHostIPs feature moves to beta. With this feature enabled, Kubernetes adds the hostIPs field to Status of pods and downward API to expose node IP addresses to workloads. This field specifies the dual-stack protocol version of the host IP address. The first IP address is always the same as the host IP address.
APF переходит в GA. APF классифицирует и изолирует запросы более детально. Он улучшает ограничения max‑inflight. Также вводится ограниченный объём очереди, чтобы API‑server не отклонял запросы при очень коротких всплесках. Запросы извлекаются из очередей с использованием техники справедливой очереди, так что, например, некорректно работающий контроллер не приводит к аномалиям у других (даже на том же уровне приоритета). Подробности см. в API Priority and Fairness.
Функция APIListChunking переходит в GA. Эта функция позволяет клиентам выполнять постраничный вывод в запросах List, чтобы избежать проблем с производительностью, вызванных возвратом слишком большого объёма данных за один раз.
Функция ServiceNodePortStaticSubrange переходит в GA. При включённой функции kubelet вычисляет размер зарезервированных IP‑адресов на основе диапазонов сервисов NodePort и делит порты узла на статическую и динамическую полосу. При автоматическом назначении портов узла предпочтительно назначается динамическая полоса, что помогает избежать конфликтов портов при назначении статической полосы. Подробнее см. ServiceNodePortStaticSubrange.
Метка времени перехода фазы PV переходит в beta. При включённой функции Kubernetes добавляет поле lastPhaseTransitionTime в поле status PV, указывающее время последнего изменения фазы PV. Администраторы кластера теперь могут отслеживать время последнего перехода PV в другую фазу, что позволяет более эффективно и осознанно управлять ресурсами. Подробнее см. PersistentVolume Last Phase Transition Time in Kubernetes.
Функция ReadWriteOncePod переходит в GA. При включённой функции вы можете установить режим доступа ReadWriteOncePod в PersistentVolumeClaim (PVC), чтобы гарантировать, что только один pod может изменять данные в томе одновременно. Это может предотвратить конфликты данных или их повреждение. Подробнее см. ReadWriteOncePod.
Функция CSINodeExpandSecret переходит в GA. Эта функция позволяет передавать данные секретной аутентификации драйверу CSI для использования при добавлении узла.
Возможность проверки CRD на основе CEL переходит в GA. При включённой функции вам разрешено использовать CEL для определения правил валидации в CRD, которые более эффективны, чем webhook. Подробнее см. CRD verification rules.
В Kubernetes 1.29 поведение запуска kube-proxy было изменено. Это обновление позволяет kube-proxy использовать значение, меньшее, чем настройка узла sysctl. Например, если значение ядра nf_conntrack_max на узле установлено в 1000000, но kube-proxy вычисляет значение 131072, будет использовано значение 131072, вычисленное kube-proxy.
Community PR: https://github.com/kubernetes/kubernetes/pull/120448
Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.29 и предоставляет расширенные функции.
Для получения подробной информации об обновлениях версии кластера см. Patch Versions.
Для получения более подробной информации о сравнении производительности и эволюции функций между Kubernetes 1.29 и другими версиями см. Kubernetes v1.29 Release Notes.