CCE прошел программу Certified Kubernetes Conformance Program и является сертифицированным предложением Kubernetes. CCE теперь поддерживает функции кластера Kubernetes 1.29. Этот раздел описывает изменения в Kubernetes 1.29.
Индексы
Новые и улучшенные функции
- Режим IP балансировщика нагрузки для Services находится в альфа‑состоянии.
Режим IP балансировщика нагрузки для Services повышен до альфа. Kubernetes 1.29 добавляет ipMode поле к Services' состояние поле для настройки перенаправления трафика от Services внутри кластера к pod'ам. Если ipMode установлено в VIP, трафик, доставляемый узлу с назначением, установленным на IP‑адрес и порт балансировщика нагрузки, будет перенаправлен целевому узлу kube-proxy. Если он установлен в Proxy, трафик, доставляемый узлу, будет направлен к балансировщику нагрузки, а затем перенаправлен целевому узлу балансировщиком нагрузки. Эта функция решает проблему пропуска функций балансировщика нагрузки из‑за обхода трафика. Для получения подробностей см. Load Balancer IP Mode for Services.
- Режим прокси nftables находится в альфа‑состоянии.
Режим прокси nftables переведен в альфа. Эта функция позволяет kube-proxy работать в режиме nftables. В этом режиме kube-proxy настраивает правила пересылки пакетов, используя API nftables подсистемы netfilter ядра. Для получения подробностей см. режим прокси nftables.
- Сборка мусора неиспользуемых образов контейнеров находится в альфа‑состоянии.
Сборка мусора для неиспользуемых образов контейнеров переведена в статус alpha. Эта функция позволяет указать максимальное время, в течение которого локальный образ может оставаться неиспользуемым на каждом узле. Если время истекает, образ будет удалён в процессе сбора мусора. Чтобы настроить параметр, укажите ImageMaximumGCAge поле для kubelet. Для подробностей см Сборка мусора для неиспользуемых образов контейнеров.
- PodLifecycleSleepAction находится в статусе alpha.
PodLifecycleSleepAction переведена в статус alpha. Эта функция вводит sleep hook в Hook'и жизненного цикла контейнера. Вы можете приостановить контейнер на указанную продолжительность после его запуска или перед его остановкой, включив эту функцию. Для подробностей см Реализации обработчиков Hook.
- KubeletSeparateDiskGC находится в статусе alpha.
KubeletSeparateDiskGC переводится в альфа. При включенной функции, образы контейнеров и контейнеры могут быть собраны сборщиком мусора, даже если они находятся на разных файловых системах.
- matchLabelKeys и mismatchLabelKeys находятся в альфа‑состоянии.
matchLabelKeys и mismatchLabelKeys переводятся в альфа. При включенных этих функциях, это matchLabelKeys и mismatchLabelKeys поля добавляются в конфигурации pod affinity и anti-affinity. Это позволяет создавать более гибкие политики аффинности и анти-аффинности между pod'ами. Для подробностей см. matchLabelKeys и mismatchLabelKeys.
- Эта clusterTrustBundle проецируемые тома находятся в состоянии alpha.
The clusterTrustBundle проецируемые тома продвинуты до alpha. При включенной этой функции, the clusterTrustBundle источник проецируемого тома внедряет содержание одного или нескольких объектов ClusterTrustBundle в виде автоматически обновляемого файла. Для получения подробностей см. проецируемые тома clusterTrustBundle.
- Загрузка образов на основе runtime‑классов pod находится в состоянии alpha.
Загрузка образов на основе runtime‑классов продвинута до alpha. При включенной функции kubelet ссылается на контейнерные образы кортежем (имени образа или runtime‑обработчика), а не только именем образа или дайджестом. Ваш контейнерный runtime может адаптировать своё поведение в зависимости от выбранного runtime‑обработчика. Загрузка образов на основе runtime‑классов будет полезна для контейнеров, основанных на VM. Для получения подробностей см. Загрузка образа по runtime‑классу.
- The PodReadyToStartContainers состояние находится в бета‑состоянии.
The PodReadyToStartContainers состояние продвигается в бета. Kubernetes 1.29 вводит the PodReadyToStartContainers состояние к pod'ов статус поле. Если он установлен в true, песочница pod готова, и можно создать сервисные контейнеры. Эта функция позволяет администраторам кластера получить более чёткое и полное представление о завершении создания песочницы pod и готовности контейнеров. Такое повышенное обозрение позволяет им принимать более обоснованные решения и эффективнее устранять проблемы. Для получения подробностей см. PodReadyToStartContainers Условие переходит в бета.
- Два функции, связанные с job, находятся в бета‑состоянии.
- Политика замены Pod (beta)
Функция политики замены pod переходит в beta. Эта функция гарантирует, что pod заменяется только когда достигает Failed состояние, что означает, что status.phase становится Failed. Он не воссоздает pod, когда временная метка удаления не пуста и pod всё ещё удаляется. Это предотвращает одновременное занятие двумя pod индексных и узловых ресурсов.
- Backoff limit per index (beta)
Лимит отката на индекс переходит в beta. По умолчанию pod‑неудачи для индексированных заданий учитываются и ограничиваются глобальным лимитом повторных попыток, указанным .spec.backoffLimit. Это означает, что если в job есть постоянно падающий индекс, pods, указанные в job, будут перезапускаться неоднократно, пока pod‑сбои не исчерпают лимит. Как только лимит будет достигнут, job помечается как неуспешный, и pods для остальных индексов в job могут никогда не запуститься. Эта функция позволяет завершить выполнение всех индексов, несмотря на сбои некоторых индексов, и более эффективно использовать вычислительные ресурсы, избегая ненужных повторных попыток постоянно падающих индексов.
- Политика замены Pod (beta)
- Native sidecar контейнеры находятся в бета-версии.
Native sidecar контейнеры продвинуты до бета. The restartPolicy поле добавлено в initContainers. Когда это поле установлено в Always, sidecar контейнер включен. Sidecar контейнер и service контейнер развернуты в одном pod. Это не может продлить жизненный цикл pod. Sidecar контейнеры обычно используются в сценариях, таких как сетевой прокси и сбор логов. Для получения подробностей см. Sidecar Контейнеры.
- Legacy ServiceAccount token cleaner находится в бета‑состоянии.
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 находится в бета‑состоянии.
DevicePluginCDIDevices переводится в бета. При включённой этой функции разработчики плагинов могут использовать CDIDevices поле добавлено в DeviceRunContainerOptions чтобы передавать имена CDI‑устройств напрямую в CDI‑поддерживаемые рантаймы.
- PodHostIPs находится в бета‑состоянии.
Эта PodHostIPs функция переводится в бета. При включённой этой функции Kubernetes добавляет hostIPs поле Статус для pod-ов и downward API, чтобы раскрывать IP-адреса узлов рабочим нагрузкам. Это поле указывает версию протокола dual-stack для IP-адреса хоста. Первый IP-адрес всегда совпадает с IP-адресом хоста.
- Функция API Priority and Fairness (APF) находится в GA‑состоянии.
APF переходит в GA. APF классифицирует и изолирует запросы более детализированным способом. Он улучшает ограничения max-inflight. Он также вводит ограниченное количество очередей, чтобы API сервер не отклонял ни один запрос в случаях очень коротких всплесков. Запросы отправляются из очередей с использованием техники справедливой очереди, так что, например, плохо себя ведущий контроллер не вызывает аномалии у остальных (даже на том же уровне приоритета). Для получения подробностей см. Приоритет API и Справедливость.
- APIListChunking находится в состоянии GA.
Эта APIListChunking функция переходит в GA. Эта функция позволяет клиентам выполнять пагинацию в запросах List, чтобы избежать проблем с производительностью, вызванных возвратом слишком большого объёма данных за один раз.
- ServiceNodePortStaticSubrange находится в состоянии GA.
Эта ServiceNodePortStaticSubrange функция переходит в GA. При включённой функции kubelet рассчитывает размер зарезервированных IP адресов на основе диапазонов NodePort Services и делит порты узла на статическую и динамическую полосы. При автоматическом назначении порта узла динамическая полоса назначается в приоритетном порядке, что помогает избежать конфликтов портов при назначении статической полосы. Для получения подробной информации смотрите ServiceNodePortStaticSubrange.
- Временная метка перехода фазы PersistentVolume (PV) находится в бета‑состоянии.
Временная метка перехода фазы PV переходит в бета. При включённой функции Kubernetes добавляет lastPhaseTransitionTime поле к статус поле PV, указывающее время последнего изменения фазы PV. Администраторы кластера теперь могут отслеживать время последнего перехода PV в другую фазу, что позволяет более эффективно и осознанно управлять ресурсами. Для получения подробной информации смотрите Последнее время перехода фазы PersistentVolume в Kubernetes.
- ReadWriteOncePod находится в состоянии GA.
Эта ReadWriteOncePod функция переходит в GA. При включённой функции вы можете установить режим доступа к ReadWriteOncePod в PersistentVolumeClaim (PVC), чтобы гарантировать, что только один pod может изменять данные в томе одновременно. Это может предотвратить конфликты данных или их повреждение. Подробности см ReadWriteOncePod.
- CSINodeExpandSecret находится в состоянии GA.
Эта CSINodeExpandSecret функция переходит в GA. Эта функция позволяет передавать данные аутентификации секрета драйверу CSI для использования при добавлении узла.
- Возможность проверки CEL‑based CRD находится в состоянии GA.
Возможность проверки CEL‑based CRD переходит в GA. При включённой функции вам разрешено использовать CEL для определения правил валидации в CRD, которые более эффективны, чем webhook. Подробности см Правила проверки CRD.
Изменения API и удаления
- Часовой пояс вновь созданного CronJob нельзя настроить с помощью TZ или CRON_TZ в .spec.schedule. Использовать .spec.timeZone вместо этого. Cron jobs, которые были созданы, не будут затронуты этим изменением.
- Alpha API ClusterCIDR удалён.
- Параметр запуска --authentication-config добавлен в kube-apiserver для указания адреса AuthenticationConfiguration файл. Этот параметр запуска взаимоисключаетcя с --oidc-* параметр запуска.
- Версия API kubescheduler.config.k8s.io/v1beta3 из KubeSchedulerConfiguration удалено. Перейдите kube-scheduler файлы конфигурации для kubescheduler.config.k8s.io/v1.
- Выражения CEL добавлены в v1alpha1 AuthenticationConfiguration.
- Тип ServiceCIDR тип добавлен. Это позволяет динамически настраивать диапазон IP‑адресов, используемый кластером для выделения Service ClusterIPs.
- Параметры запуска --conntrack-udp-timeout и --conntrack-udp-timeout-stream добавляются к kube-proxy. Это параметры для настройки параметров ядра nf_conntrack_udp_timeout и nf_conntrack_udp_timeout_stream.
- Поддержка выражений CEL добавлена в WebhookMatchCondition для v1alpha1 AuthenticationConfiguration.
- Тип PVC.spec.Resource изменяется с ResourceRequirements на VolumeResourceRequirements.
- onPodConditions в PodFailurePolicyRule отмечено как необязательно.
- Версия API flowcontrol.apiserver.k8s.io/v1beta3 из FlowSchema и PriorityLevelConfiguration был повышен до flowcontrol.apiserver.k8s.io/v1, и были внесены следующие изменения:
- PriorityLevelConfiguration: The .spec.limited.nominalConcurrencyShares поле по умолчанию 30 если поле опущено. Чтобы обеспечить совместимость с серверами API версии 1.28, указание явного 0 значение не допускается в v1 версия в 1.29. В 1.30, явное 0 значения будут разрешены в этом поле в v1 API. Эта flowcontrol.apiserver.k8s.io/v1beta3 APIs устарели и более не будут обслуживаться в 1.32.
- Документация командной строки kube-proxy обновлена. kube-proxy не привязывает ни один сокет к IP-адресу, указанному --bind-address.
- Эта selectorSpread плагин планировщика заменяется на podTopologySpread.
- Если CSI-Node-Driver не запущен, вызовы NodeStageVolume будут повторены.
- ValidatingAdmissionPolicy проверка типов теперь поддерживает CRDs. Чтобы использовать эту функцию, the ValidatingAdmissionPolicy фича‑гейт должен быть включён.
- Параметр запуска --nf-conntrack-tcp-be-liberal добавлен в kube-proxy. Вы можете настроить его, установив параметр ядра nf_conntrack_tcp_be_liberal.
- Параметр запуска --init-only добавлен в kube-proxy. Установка флага делает kube-proxy init‑контейнер запускается в привилегированном режиме, выполняет первоначальную настройку и затем завершается.
- Эта файловая система поле контейнера добавлено в тело ответа CRI. Оно указывает использование файловой системы контейнера. Изначально, fileSystem поле содержит только файловую систему образов контейнеров.
- Все встроенные облачные провайдеры отключены по умолчанию. Если вам всё ещё нужно их использовать, вы можете настроить DisableCloudProviders и DisableKubeletCloudCredentialProvider feature gates для отключения или включения облачных провайдеров.
- --node-ips может использоваться в kubelet для настройки IPv4/IPv6 dual-stack. Если --cloud-provider установлен в внешний, вам разрешено использовать --node-ips для настройки IPv4/IPv6 dual-stack для IP-адресов узла. Чтобы использовать --node-ips, вам необходимо включить CloudDualStackNodeIPs фича‑гейт.
Incompatible Changes
В 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
Enhanced Kubernetes 1.29 on CCE
Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.29 и предоставляет расширенные функции.
Для получения подробной информации об обновлениях версии кластера, смотрите Патч версии.
Ссылки
Для получения более подробной информации о сравнении производительности и эволюции функций между Kubernetes 1.29 и другими версиями, смотрите Заметки о выпуске Kubernetes v1.29.