Облачная платформаAdvanced

Примечания к выпуску Kubernetes 1.29

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

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 могут никогда не запуститься. Эта функция позволяет завершить выполнение всех индексов, несмотря на сбои некоторых индексов, и более эффективно использовать вычислительные ресурсы, избегая ненужных повторных попыток постоянно падающих индексов.

  • 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 будет использовано.

Enhanced Kubernetes 1.29 on CCE

Во время периода обслуживания версии CCE периодически обновляет Kubernetes 1.29 и предоставляет расширенные функции.

Для получения подробной информации об обновлениях версии кластера, смотрите Патч версии.

Ссылки

Для получения более подробной информации о сравнении производительности и эволюции функций между Kubernetes 1.29 и другими версиями, смотрите Заметки о выпуске Kubernetes v1.29.