Вышла новая версия Kubernetes 1.30: теперь все иначе
В марте текущего года вышло обновление Kubernetes версии 1.30, в котором представлены значительные изменения и нововведения, направленные на улучшение функционала и возможностей этой ведущей платформы управления контейнерами.
Новые функции включают:
- расширение поддержки пространств имен пользователей,
- внедрение структурированной конфигурации авторизации,
- улучшенное масштабирование подов на основе метрик ресурсов контейнера,
- а также некоторые другие изменения.
В этой статье рассмотрены основные изменения и их влияние на развертывание и управление контейнеризацией в среде Kubernetes.
Перейти к обзору платформ Kubernetes 2024
Общие сведения
Новый год — новый релиз Kubernetes. Эта программная среда находится на полпути к завершению цикла релиза, и в v1.30 ожидается множество интересных улучшений. От совершенно новых функций в альфа-версии до уже утвержденных функций, переходящих в стабильную версию, и долгожданных улучшений — в этом релизе есть что-то для каждого, кто следит за развитием Kubernetes.
Предлагаем небольшой обзор наиболее значимых изменений, на которые стоит обратить особое внимание.
Значимые изменения в версии 1.30
В версии 1.30 Kubernetes, выпущенной в марте этого года, представлены значительные улучшения, включая расширение функционала и внедрение новых возможностей, направленных на улучшение производительности, безопасности и гибкости управления контейнеризированными приложениями. Рассмотрим их более подробно.
Структурированные параметры для динамического выделения ресурсов (KEP-4381)
Динамическое выделение ресурсов было добавлено в Kubernetes как альфа-функция в v1.26. Оно определяет альтернативу традиционному API драйверов устройств для запроса доступа к ресурсам сторонних поставщиков. По своей сути, динамическое выделение ресурсов использует параметры для ресурсов, которые полностью непрозрачны для основной функциональности Kubernetes.
Этот подход создает проблему для Скейлера кластера (CA) или любого контроллера более высокого уровня, который должен принимать решения для группы подов (например, планировщика задач). Он не может смоделировать эффект выделения или освобождения ресурсов со временем. Только драйверы динамического выделения ресурсов третьих сторон имеют доступ к этой информации.
Структурированные параметры для динамического выделения ресурсов являются расширением исходной реализации, которая решает эту проблему, создавая фреймворк для поддержки более непрозрачных параметров запросов. Вместо обработки семантики всех параметров запросов самостоятельно драйверы могут управлять ресурсами и описывать их, используя специфическую «структурированную модель», предварительно определенную Kubernetes.
Это позволит компонентам, осведомленным об этой «структурированной модели», принимать решения относительно этих ресурсов без передачи их наружу какому-либо контроллеру стороннего поставщика. Например, планировщик может быстро выделять ресурсы без обмена сообщениями с драйверами динамического выделения ресурсов. Работа, проведенная в этом релизе, сосредотачивается на определении необходимого фреймворка для активации различных «структурированных моделей» и реализации модели «именованных ресурсов».
Эта модель позволяет перечислять отдельные экземпляры ресурсов и, в отличие от традиционного API драйверов устройств, добавляет возможность выбора этих экземпляров индивидуально по атрибутам.
Поддержка SWAP на узлах Linux
Поддержка памяти swap на узлах Linux получает крупное изменение в Kubernetes v1.30, с основным акцентом на улучшение стабильности системы. В предыдущих версиях Kubernetes функция NodeSwap была по умолчанию отключена, и при включении использовалось Unlimited Swap в качестве стандартного. Для достижения лучшей стабильности Unlimited Swap (которое может подвергнуть узел риску) будет удалено в v1.30.
Обновленная, все еще бета-версия поддержки swap на узлах Linux будет доступна по умолчанию. Однако стандартным поведением будет запуск узла в режиме NoSwap (а не Unlimited Swap). В режиме NoSwap kubelet поддерживает запуск на узле, где активно пространство подкачки, но поды не используют файл подкачки. Все же вам по-прежнему потребуется установить --fail-swap-on=false для запуска kubelet на этом узле.
Однако крупное изменение касается другого режима: Limited Swap. В этом режиме kubelet фактически использует файл подкачки на этом узле и позволяет подам иметь часть своей виртуальной памяти выгруженной на диск. Контейнеры (и их родительские поды) не имеют доступа к подкачке за пределами своего лимита памяти, но система все же может использовать пространство подкачки, если оно доступно.
Специальная группа интересов Kubernetes Node (SIG Node) также обновит документацию, чтобы помочь вам понять, как использовать пересмотренную реализацию, основанную на отзывах конечных пользователей, участников и более широкого сообщества Kubernetes.
Поддержка пространств имен пользователей в подах (KEP-127)
Пространства имен пользователей — это функция только для Linux, которая обеспечивает более надежную изоляцию подов для предотвращения или смягчения нескольких угроз, оцененных как высокие/критические, включая CVE-2024-21626, опубликованный в январе 2024 г.
В Kubernetes 1.30 поддержка пространств имен пользователей переходит на бета-уровень и теперь поддерживает поды с и без томов, настраиваемые диапазоны UID/GID и многое другое.
Структурированная конфигурация авторизации (KEP-3221)
Поддержка структурированной конфигурации авторизации переходит на бета-уровень и будет включена по умолчанию. Эта функция позволяет создавать цепочки авторизации с несколькими веб-хуками с четко определенными параметрами, которые проверяют запросы в определенном порядке и позволяют управлять деталями — например, явное отклонение при неудачах.
Подход с файлом конфигурации даже позволяет указывать правила CEL для предварительной фильтрации запросов перед их передачей веб-хукам, помогая вам предотвратить ненужные вызовы. API-сервер также автоматически перезагружает цепочку авторизации при изменении файла конфигурации.
Вы должны указать путь к этой конфигурации авторизации, используя аргумент командной строки --authorization-config. Если вы хотите продолжить использовать флаги командной строки вместо файла конфигурации, они будут работать как обычно. Для получения доступа к новым возможностям веб-хуков авторизации, таким как множественные веб-хуки, политика отказа и правила предварительной фильтрации, переключитесь на использование параметров в файле --authorization-config.
С версии Kubernetes 1.30 формат файла конфигурации находится на уровне бета, и требуется указать только --authorization-config, так как функция по умолчанию включена. Пример конфигурации со всеми возможными значениями предоставлен в документации по авторизации. Дополнительные сведения можно найти в документации по авторизации.
Масштабирование подов на основе ресурсов контейнера (KEP-1610)
Вертикальное масштабирование подов на основе метрик ресурсов контейнера будет переведено в стабильное состояние в v1.30. Это новое поведение для Horizontal Pod Autoscale позволяет настраивать автоматическое масштабирование на основе использования ресурсов для отдельных контейнеров, а не агрегированное использование ресурсов внутри пода.
Перейти к обзору платформ Kubernetes 2024
Использование CEL для контроля допуска (KEP-3488)
Интеграция Общего Языка Выражений (CEL) для контроля допуска в Kubernetes представляет более динамичный и выразительный способ оценки запросов на допуск. Эта функция позволяет определять и применять сложные, детализированные политики непосредственно через API Kubernetes, усиливая возможности по обеспечению безопасности и управления без ущерба производительности или гибкости.
Добавление CEL в контроль допуска Kubernetes дает администраторам кластера возможность создавать сложные правила, которые могут оценивать содержимое запросов к API с учетом желаемого состояния и политик кластера без использования контроллеров доступа на основе веб-хуков.
Этот уровень контроля критичен для поддержания целостности, безопасности и эффективности операций с кластером, делая среды Kubernetes более надежными и приспосабливающимися к различным сценариям использования и требованиям. Для получения дополнительной информации об использовании CEL для контроля допуска ознакомьтесь с документацией API на официальном сайте документации Kubernetes.
Заключение
Внедрение новых функций и улучшений в Kubernetes v1.30 представляет значительный шаг вперед в развитии этой платформы управления контейнерами. Расширение поддержки пространств имен пользователей, внедрение структурированной конфигурации авторизации, а также улучшение масштабирования подов на основе метрик ресурсов контейнера — все это демонстрирует стремление к улучшению безопасности, гибкости и производительности кластеров Kubernetes.
Интеграция Общего Языка Выражений (CEL) для контроля допуска открывает новые возможности для администраторов кластеров, позволяя создавать более динамичные и точные политики безопасности, которые могут быть применены непосредственно через API Kubernetes. Это значительно упрощает и улучшает процессы обеспечения безопасности и управления доступом к ресурсам кластера.
В целом, вместе с другими улучшениями в версии v1.30, эти новые функции и возможности обещают сделать работу с Kubernetes еще более эффективной и гибкой. Они позволяют администраторам более тонко настраивать и контролировать среду, обеспечивая высокий уровень безопасности и производительности при работе с контейнеризованными приложениями.