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

Версии Kubernetes


В разделе описаны ключевые особенности поддерживаемых сервисом версий Kubernetes.

Версия 1.36

  • Поддержка Fine-grained Kubelet API authorization объявлена общедоступной.

    Fine-grained Kubelet API authorization обеспечивает управление доступом к HTTPS API kubelet на основе принципа минимальных привилегий, устраняя необходимость предоставлять чрезмерно широкое разрешение nodes/proxy для стандартных сценариев мониторинга и наблюдаемости.

  • Поддержка User Namespaces в подах объявлена общедоступной.

    User Namespaces изолирует пользователя, работающего внутри контейнера, от пользователя на хосте. Процесс, работающий от имени root в контейнере, может работать от имени другого не root-пользователя на хосте. То есть процесс имеет полные привилегии для операций внутри пространства имен пользователей, но не имеет привилегий для операций вне этого пространства.

    Используйте User Namespaces, чтобы уменьшить ущерб, который может нанести скомпрометированный контейнер хосту или другим подам на том же узле.

  • Поддержка Mutable volume attach limits объявлена общедоступной.

    Нововведение позволяет драйверам Container Storage Interface (CSI) динамически обновлять информацию о максимальном количестве томов, которое может обслуживать узел.

    Благодаря этому обновлению kubelet может динамически корректировать лимиты на количество томов и данные о емкости хранилища узла. Kubelet изменяет ограничения на основе периодических проверок или в ответ на сообщения драйвера CSI о нехватке ресурсов, не требуя при этом перезапуска компонентов.

  • Поддержка NodeLogQuery объявлена общедоступной.

    Функция предоставляет администраторам кластера возможность просматривать логи с помощью API kubelet и kubectl аналогично процессу отладки подов или контейнеров, что упрощает поиск и устранение неисправностей. Метод не зависит от операционной системы, однако требует, чтобы узлы записывали журналы в каталог /var/log. В конфигурации kubelet должен быть активирован параметр enableSystemLogQuery.

  • Поддержка Device Health Monitoring в бета-тестировании.

    Функция предоставляет механизм для мониторинга состояния динамически выделяемых инфраструктурных ресурсов.

    Для приложений с сохранением состояния, работающих на специализированном оборудовании, важно знать, когда устройство вышло из строя или стало неработоспособным. Также полезно знать, восстанавливается ли устройство.

    Когда драйвер DRA обнаруживает, что выделенное устройство стало неработоспособным, он сообщает об этом статусе обратно в kubelet. Эта информация о состоянии затем отображается непосредственно в статусе пода. Kubelet заполняет поле allocatedResourcesStatus в статусе каждого контейнера, подробно описывая состояние каждого устройства, назначенного этому контейнеру. Каждая запись о состоянии ресурса может включать необязательное поле сообщения с дополнительным удобочитаемым контекстом о состоянии, таким как сведения об ошибке или причины сбоя.

  • Statusz для компонентов Kubernetes в бета-тестировании.

    ComponentStatusz предоставляет эндпоинт /statusz, который в реальном времени отображает сведения о сборке и версии каждого компонента: время запуска, время непрерывной работы uptime, версию Go, версию бинарного файла, версию эмуляции и минимальную версию для обеспечения совместимости. Благодаря этому можно быстро определить текущее состояние компонентов, не тратя время на изучение логов или конфигурационных файлов.

  • Flagz для компонентов Kubernetes в бета-тестировании.

    ComponentFlagz предоставляет эндпоинт /flagz, который отображает фактические флаги командной строки, использованные при запуске каждого компонента. Это позволяет в реальном времени отслеживать конфигурацию компонентов непосредственно внутри кластера, что значительно упрощает отладку неожиданного поведения и проверку того, что изменения флагов действительно вступили в силу после перезапуска.

  • Поддержка Workload Aware Scheduling (WAS) в альфа-тестировании.

    Функция позволяет планировщику рассматривать связанные поды как единую логическую группу. Это обеспечивает эффективное размещение распределенных рабочих нагрузок и снижает фрагментацию ресурсов.

  • Поддержка горизонтального масштабирования подов до нуля в альфа-тестировании.

    Обновление позволяет горизонтально масштабировать рабочие нагрузки до нуля реплик. При появлении новой нагрузки приложение автоматически запускается снова, что помогает снизить потребление ресурсов в периоды простоя.

Версия 1.35

  • Поддержка In-place обновления ресурсов подов объявлена общедоступной.

    Функция позволяет пользователям изменять ресурсы CPU и памяти без перезапуска подов или контейнеров.

  • Встроенная поддержка миграции версий хранилища в бета-тестировании.

    Интегрирована возможность автоматической миграции версий хранилищ прямо в ядро Kubernetes, устраняя зависимость от сторонних инструментов.

  • Поддержка распределения трафика PreferSameNode объявлена общедоступной.

    Параметр PreferSameNode поля trafficDistribution в Service позволяет настроить приоритет маршрутизации трафика к эндпоинтам, расположенным на том же узле, что и клиент.

  • Поддержка для Job механизма managed-by объявлена общедоступной.

    Для Job API ввели поле managedBy, позволяющее задать внешний контроллер, который будет обрабатывать синхронизацию статуса заданий.

  • Поддержка maxUnavailable для StatefulSets в бета-тестировании.

    В .spec.updateStrategy.rollingUpdate.maxUnavailable для StatefulSets можно указать максимальное количество подов, которые могут быть недоступны во время обновления. Значение может быть абсолютным числом, например 5, или процентом от желаемого количества подов, например 10%. Абсолютное число рассчитывается из процентного значения путем округления в большую сторону.

    Значение поля не может быть равно 0. Значение по умолчанию — 1.

  • Поддержка группового планирования «gang scheduling» с помощью API Workload и концепции PodGroup в альфа-тестировании.

    Функция реализует стратегию планирования «все или ничего», гарантируя, что определенная группа подов будет запланирована только в том случае, если кластер располагает достаточными ресурсами для одновременного размещения всей группы.

  • Поддержка ограниченной имперсонации в альфа-тестировании.

    Ограничивает права пользователей при имитации ролей, позволяя точно настроить разрешения для определенных действий.

  • Поддержка расширенных операторов допуска threshold-based placement в альфа-тестировании.

    Функция добавляет операторы Gt (больше чем) и Lt (меньше чем) в spec.tolerations, что позволяет размещать поды с учетом пороговых значений SLA. Например, качество доступности или задержки. Это помогает критически важным приложениям выбирать узлы с лучшими гарантиями, а менее требовательным — узлы с низкими показателями, оптимизируя использование ресурсов и экономя затраты.

Версия 1.34

  • Поддержка PodReplacementPolicy в Job-контроллере объявлена общедоступной.

    Как только под с ошибкой начинает завершаться, по умолчанию Job-контроллер пересоздает его заново. При этом заменяющий под может испытывать трудности с поиском доступных узлов до тех пор, пока исходный под полностью не завершится.

    Чтобы под пересоздавался только после полного завершения работы исходного, достаточно в Job указать параметр .spec.podReplacementPolicy: Failed.

  • Поддержка Sleep для PostStart- и PreStop-хуков объявлена общедоступной.

    Sleep позволяет контейнерам приостанавливаться на заданный период времени после запуска или перед завершением работы. Это обеспечивает простой способ управления корректным завершением работы контейнеров и улучшения общего управления их жизненным циклом.

  • Поддержка ServiceAccount tokens для kubelet image credential providers в бета-тестировании.

    Kubelet для загрузки приватных контейнерных образов может запрашивать кратковременные токены ServiceAccount, связанные с определенным подом. Это повышает безопасность, уменьшая необходимость в долгоживущих секретах и упрощая управление учетными данными.

  • Поддержка Kubernetes YAML (KYAML) в альфа-тестировании.

    KYAML — диалект YAML, разработанный специально для Kubernetes. Начиная с Kubernetes v1.34, в качестве выходного формата для kubectl можно использовать KYAML.

    KYAML решает специфические проблемы как YAML, так и JSON. Например, значительное количество пробелов в YAML требует тщательного внимания к отступам и вложенности, а необязательное экранирование строк может привести к неожиданному приведению типов (пример: The Norway Bug). JSON не поддерживает комментарии и имеет строгие требования к завершающим запятым и ключам в кавычках.

    Вы можете написать KYAML и передать его в качестве входных данных любой версии kubectl, поскольку все файлы KYAML также допустимы в формате YAML. В версии kubectl v1.34 вы также можете запросить вывод в формате KYAML (например, kubectl get -o kyaml ...), установив переменную окружения KUBECTL_KYAML=true. Вы также можете запросить вывод в формате JSON или YAML.

  • Поддержка упорядоченного удаления ресурсов при удалении пространства имен объявлена общедоступной.

    Улучшение обеспечивает детерминированное и безопасное удаление ресурсов при удалении пространства имен. Это позволяет устранить ситуацию, когда удаление ресурсов может создавать уязвимости в системе безопасности или приводить к непредвиденному поведению, например, к сохранению подов после удаления связанных с ними сетевых политик.

  • Поддержка специальных символов в переменных окружения объявлена общедоступной.

    В именах переменных окружения разрешены почти все печатные символы ASCII, за исключением знака «=». Изменение поддерживает сценарии, когда рабочие нагрузки требуют нестандартных символов в именах переменных. Например, фреймворки, такие как .NET Core, которые используют двоеточие (:) для представления вложенных ключей конфигурации.

    Смягченные правила проверки применяются к переменным окружения, определенным непосредственно в спецификации Pod, а также к тем, которые внедряются с помощью ссылок envFrom на ConfigMaps и Secrets.

  • Поддержка VolumeAttributesClass объявлена общедоступной.

    VolumeAttributesClass — новый объект API Kubernetes, который позволяет управлять параметрами томов, такими как IOPS и пропускная способность.

  • PreferClose для Traffic distribution control объявлена deprecated.

    Вместо PreferClose нужно использовать PreferSameZone и PreferSameNode:

    • PreferSameZone обеспечивает приоритетную отправку трафика на эндпоинты, находящиеся в той же зоне, что и клиент.

    • PreferSameNode обеспечивает приоритетную отправку трафика на эндпоинты, расположенные на том же узле, что и клиент.

  • Поддержка возможности указывать requests and limits ресурсов на уровне пода в бета-тестировании.

    Функциональность позволяет определять общий бюджет ресурсов для пода, который затем распределяется между входящими в него контейнерами. Это гарантирует, что общее количество ресурсов, используемых всеми контейнерами, не превышает заданные подом ограничения, что приводит к более точному планированию и эффективному использованию ресурсов кластера.

  • Улучшения для In-place Pod resize в бета-тестировании.

    Они включают поддержку уменьшения использования памяти и интеграцию с ресурсами уровня подов.

Версия 1.33

  • Поддержка Sidecar-контейнеров объявлена общедоступной.

    Sidecar-контейнеры — это дополнительные контейнеры, которые работают вместе с основным контейнером приложения в том же поде. Такие контейнеры используются для улучшения или расширения функциональности основного контейнера приложения, предоставляя дополнительные функции, например логирование, мониторинг, безопасность или синхронизация данных, без прямого изменения кода основного приложения. Например, если у вас есть веб-приложение, требующее локального веб-сервера, локальный веб-сервер является вспомогательным контейнером, а само веб-приложение — контейнером приложения.

    Kubernetes реализует sidecar-контейнеры как особый класс init-контейнеров с restartPolicy: Always. Это гарантирует, что sidecar-контейнеры запускаются до контейнеров приложений, продолжают работать на протяжении всего жизненного цикла пода и автоматически завершают работу после завершения работы основных контейнеров.

    Sidecar-контейнеры поддерживают startup-, readiness-, liveness-пробы для управления своим жизненным циклом.

  • Поддержка использования образов Open Container Initiative (OCI) в качестве томов в подах в бета-тестировании.

    Функция позволяет указывать ссылку на образ как том в поде и повторно использовать его для монтирования тома в контейнерах.

    Теперь данные тома можно упаковывать отдельно и совместно использовать их между контейнерами в подах, не включая их в основной образ. Это снижает уровень уязвимостей и упрощает создание образов.

  • Поддержка Multiple Service CIDRs объявлена общедоступной.

    В обновлении реализована новая логика выделения IP-адресов для сервисов. Каждой службе типа ClusterIP во всем кластере должен быть назначен уникальный IP-адрес. Попытка создать службу с определенным IP-адресом кластера, который уже был выделен, приведет к ошибке.

    Обновленный механизм выделения использует два новых стабильных API-объекта: ServiceCIDR и IPAddress. С их помощью администраторы кластера могут при необходимости динамически увеличивать пул доступных IP-адресов для сервисов типа ClusterIP, просто создавая новые объекты ServiceCIDR.

  • Поддержка нового бэкенда nftables для kube-proxy объявлена общедоступной.

    Теперь в kube-proxy стабильно поддерживается backend на базе nftables, который значительно повышает производительность и масштабируемость работы сервисов в кластере Kubernetes. Для обеспечения совместимости по умолчанию на Linux-узлах по-прежнему используется iptables.

  • Поддержка subresource для kubectl объявлена общедоступной.

    Чтобы получить или обновить подресурсы status, scale и другие, для kubectl get, kubectl patch, kubectl edit, kubectl apply или kubectl replace необходимо использовать опцию --subresource.

  • Поддержка Job success policy объявлена общедоступной.

    С помощью .spec.successPolicy в Job можно тонко настраивать, какие индексы succeededIndexes и сколько подов succeededCount должны успешно завершиться для признания Job успешной.

  • Конфигурационный файл .kuberc для пользовательских настроек kubectl в альфа-тестировании.

    Файл может содержать псевдонимы и переопределения kubectl, например использовать по умолчанию server-side apply, оставив при этом учетные данные кластера и информацию о хосте в kubeconfig. Такое разделение позволяет использовать одни и те же пользовательские настройки для взаимодействия с kubectl независимо от целевого кластера и используемого kubeconfig.

  • In-place resource resize для вертикального масштабирования подов в бета-тестировании.

    Теперь можно изменять ресурсы запущенных подов без перезапуска. Это позволяет вертикально масштабировать нагрузки без простоев.

  • Настраиваемая задержка перезапуска контейнера в альфа-тестировании.

    Функция предоставляет набор конфигураций уровня kubelet для точной настройки обработки CrashLoopBackOff.

Архив версий