CCE прошел программу Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. CCE теперь поддерживает функции кластера Kubernetes 1.29. Этот раздел описывает изменения в Kubernetes 1.29.
Режим IP балансировщика нагрузки для Services повышен до альфа. Kubernetes 1.29 добавляет ipMode поле к Services' состояние поле для настройки перенаправления трафика от Services внутри кластера к pod'ам. Если ipMode установлено в VIP, трафик, доставляемый узлу с назначением, установленным на IP‑адрес и порт балансировщика нагрузки, будет перенаправлен целевому узлу kube-proxy. Если он установлен в Proxy, трафик, доставляемый узлу, будет направлен к балансировщику нагрузки, а затем перенаправлен целевому узлу балансировщиком нагрузки. Эта функция решает проблему пропуска функций балансировщика нагрузки из‑за обхода трафика. Для получения подробностей см. Load Balancer IP Mode for Services.
Режим прокси nftables переведен в альфа. Эта функция позволяет kube-proxy работать в режиме nftables. В этом режиме kube-proxy настраивает правила пересылки пакетов, используя API nftables подсистемы netfilter ядра. Для получения подробностей см. режим прокси nftables.
Сборка мусора для неиспользуемых образов контейнеров переведена в статус alpha. Эта функция позволяет указать максимальное время, в течение которого локальный образ может оставаться неиспользуемым на каждом узле. Если время истекает, образ будет удалён в процессе сбора мусора. Чтобы настроить параметр, укажите ImageMaximumGCAge поле для kubelet. Для подробностей см Сборка мусора для неиспользуемых образов контейнеров.
PodLifecycleSleepAction переведена в статус alpha. Эта функция вводит sleep hook в Hook'и жизненного цикла контейнера. Вы можете приостановить контейнер на указанную продолжительность после его запуска или перед его остановкой, включив эту функцию. Для подробностей см Реализации обработчиков Hook.
KubeletSeparateDiskGC переводится в альфа. При включенной функции, образы контейнеров и контейнеры могут быть собраны сборщиком мусора, даже если они находятся на разных файловых системах.
matchLabelKeys и mismatchLabelKeys переводятся в альфа. При включенных этих функциях, это matchLabelKeys и mismatchLabelKeys поля добавляются в конфигурации pod affinity и anti-affinity. Это позволяет создавать более гибкие политики аффинности и анти-аффинности между pod'ами. Для подробностей см. matchLabelKeys и mismatchLabelKeys.
The clusterTrustBundle проецируемые тома продвинуты до alpha. При включенной этой функции, the clusterTrustBundle источник проецируемого тома внедряет содержание одного или нескольких объектов ClusterTrustBundle в виде автоматически обновляемого файла. Для получения подробностей см. проецируемые тома clusterTrustBundle.
Загрузка образов на основе runtime‑классов продвинута до alpha. При включенной функции kubelet ссылается на контейнерные образы кортежем (имени образа или runtime‑обработчика), а не только именем образа или дайджестом. Ваш контейнерный runtime может адаптировать своё поведение в зависимости от выбранного runtime‑обработчика. Загрузка образов на основе runtime‑классов будет полезна для контейнеров, основанных на VM. Для получения подробностей см. Загрузка образа по runtime‑классу.
The PodReadyToStartContainers состояние продвигается в бета. Kubernetes 1.29 вводит the PodReadyToStartContainers состояние к pod'ов статус поле. Если он установлен в true, песочница pod готова, и можно создать сервисные контейнеры. Эта функция позволяет администраторам кластера получить более чёткое и полное представление о завершении создания песочницы pod и готовности контейнеров. Такое повышенное обозрение позволяет им принимать более обоснованные решения и эффективнее устранять проблемы. Для получения подробностей см. PodReadyToStartContainers Условие переходит в бета.
Функция политики замены pod переходит в beta. Эта функция гарантирует, что pod заменяется только когда достигает Failed состояние, что означает, что status.phase становится Failed. Он не воссоздает pod, когда временная метка удаления не пуста и pod всё ещё удаляется. Это предотвращает одновременное занятие двумя pod индексных и узловых ресурсов.
Лимит отката на индекс переходит в beta. По умолчанию pod‑неудачи для индексированных заданий учитываются и ограничиваются глобальным лимитом повторных попыток, указанным .spec.backoffLimit. Это означает, что если в job есть постоянно падающий индекс, pods, указанные в job, будут перезапускаться неоднократно, пока pod‑сбои не исчерпают лимит. Как только лимит будет достигнут, job помечается как неуспешный, и pods для остальных индексов в job могут никогда не запуститься. Эта функция позволяет завершить выполнение всех индексов, несмотря на сбои некоторых индексов, и более эффективно использовать вычислительные ресурсы, избегая ненужных повторных попыток постоянно падающих индексов.
Native sidecar контейнеры продвинуты до бета. The restartPolicy поле добавлено в initContainers. Когда это поле установлено в Always, sidecar контейнер включен. Sidecar контейнер и service контейнер развернуты в одном pod. Это не может продлить жизненный цикл pod. Sidecar контейнеры обычно используются в сценариях, таких как сетевой прокси и сбор логов. Для получения подробностей см. Sidecar Контейнеры.
Legacy ServiceAccount token cleaner переведён в бета‑режим. Он запускается как часть kube-controller-manager и проверяет каждые 24 часа, использовался ли какой‑либо автоматически сгенерированный устаревший 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 переводится в бета. При включённой этой функции разработчики плагинов могут использовать CDIDevices поле добавлено в DeviceRunContainerOptions чтобы передавать имена CDI‑устройств напрямую в CDI‑поддерживаемые рантаймы.
Эта PodHostIPs функция переводится в бета. При включённой этой функции Kubernetes добавляет hostIPs поле Статус для pod-ов и downward API, чтобы раскрывать IP-адреса узлов рабочим нагрузкам. Это поле указывает версию протокола dual-stack для IP-адреса хоста. Первый IP-адрес всегда совпадает с IP-адресом хоста.
APF переходит в GA. APF классифицирует и изолирует запросы более детализированным способом. Он улучшает ограничения max-inflight. Он также вводит ограниченное количество очередей, чтобы API сервер не отклонял ни один запрос в случаях очень коротких всплесков. Запросы отправляются из очередей с использованием техники справедливой очереди, так что, например, плохо себя ведущий контроллер не вызывает аномалии у остальных (даже на том же уровне приоритета). Для получения подробностей см. Приоритет API и Справедливость.
Эта APIListChunking функция переходит в GA. Эта функция позволяет клиентам выполнять пагинацию в запросах List, чтобы избежать проблем с производительностью, вызванных возвратом слишком большого объёма данных за один раз.
Эта ServiceNodePortStaticSubrange функция переходит в GA. При включённой функции kubelet рассчитывает размер зарезервированных IP адресов на основе диапазонов NodePort Services и делит порты узла на статическую и динамическую полосы. При автоматическом назначении порта узла динамическая полоса назначается в приоритетном порядке, что помогает избежать конфликтов портов при назначении статической полосы. Для получения подробной информации смотрите ServiceNodePortStaticSubrange.
Временная метка перехода фазы PV переходит в бета. При включённой функции Kubernetes добавляет lastPhaseTransitionTime поле к статус поле PV, указывающее время последнего изменения фазы PV. Администраторы кластера теперь могут отслеживать время последнего перехода PV в другую фазу, что позволяет более эффективно и осознанно управлять ресурсами. Для получения подробной информации смотрите Последнее время перехода фазы PersistentVolume в Kubernetes.
Эта ReadWriteOncePod функция переходит в GA. При включённой функции вы можете установить режим доступа к ReadWriteOncePod в PersistentVolumeClaim (PVC), чтобы гарантировать, что только один pod может изменять данные в томе одновременно. Это может предотвратить конфликты данных или их повреждение. Подробности см ReadWriteOncePod.
Эта CSINodeExpandSecret функция переходит в GA. Эта функция позволяет передавать данные аутентификации секрета драйверу CSI для использования при добавлении узла.
Возможность проверки CEL‑based CRD переходит в GA. При включённой функции вам разрешено использовать CEL для определения правил валидации в CRD, которые более эффективны, чем webhook. Подробности см Правила проверки CRD.
В 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 и предоставляет расширенные функции.
Для получения подробной информации об обновлениях версии кластера, смотрите Патч версии.
Для получения более подробной информации о сравнении производительности и эволюции функций между Kubernetes 1.29 и другими версиями, смотрите Заметки о выпуске Kubernetes v1.29.