Поиск по сайту:

Что нового в Kubernetes v1.22?


Kubernetes v1.22 — это выпуск новой функции, который добавляет более 50 улучшений в платформу оркестрации контейнеров. Он также объявляет устаревшими некоторые возможности и удаляет несколько API, которые были заменены новыми версиями.

Вот краткий обзор наиболее значительных изменений, начиная с добавления функций.

Применение на стороне сервера

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

Использование Server-side Apply позволяет разработчикам инициировать изменения ресурсов, описывая свои намерения. Сервер API Kubernetes отслеживает изменения объектов для каждого поля отдельно. Эта система «управления полями» создает модель владения, при которой изменения поля, добавленного другим менеджером, автоматически отклоняются. Это предотвращает непреднамеренное изменение операции, начатой другим администратором.

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

Ресурсы получают новое свойство managedFields, когда активно применение на стороне сервера с управлением полями. Он записывает каждое поле, связанные с ним данные и время последнего обновления. Редактирование managedFields вручную возможно, но настоятельно не рекомендуется; предполагается, что только сервер API Kubernetes будет записывать эти значения.

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

Внешние поставщики учетных данных

Внешние поставщики учетных данных также перешли на стабильную версию. Они позволяют использовать подключаемые модули для получения учетных данных, таких как токены аутентификации и сертификаты TLS, из-за пределов вашего кластера.

Эта функция позволяет интегрировать контроль доступа Kubernetes с существующими поставщиками аутентификации. Провайдеры могут аутентифицировать вас с помощью систем OAuth2, LDAP и SAML, чтобы вы могли войти в популярные службы, используя свои существующие учетные данные.

Провайдеры реализованы в виде подключаемых модулей с серверным компонентом, работающим в кластере. При этом используется специальный веб-перехватчик для преобразования токенов, специфичных для клиента, в формат, который может интерпретировать сервер API Kubernetes.

Запуск без рута

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

Для запуска кластера от имени пользователя без полномочий root необходимо включить шлюз функции RootlessControlPlane. После этого плоскость управления должна запускаться без использования sudo.

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

Удаление API

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

v1.22 также полностью удаляет 12 ранее устаревших API. Все удаленные API — это бета-версии, которые были заменены более новыми стабильными альтернативами.

Список включает ресурсы Ingress и IngressClass, используемые для предоставления услуг с правилами маршрутизации. Версии этих объектов networking.k8s.io/v1beta1 должны быть заменены их аналогами networking.k8s.io/v1, которые продолжают поддерживаться.

Другие удаленные API включают бета-версии APIService, CertificateSigningRequest, CustomResourceDefinition и Lease, а также несколько объектов. связанных с контролем доступа, хранением и планированием. Ознакомьтесь с руководством по миграции, прежде чем применять обновление к кластеру. Вам нужно будет изменить любые ресурсы, использующие удаленные API, чтобы вместо этого они ссылались на новые стабильные версии.

Следующим выпуском Kubernetes с удалением будет версия 1.25. В настоящее время планируется удалить четыре бета-API: CronJob, EndpointSlice, Event и PodDisruptionBudget.

Другие изменения

В этом выпуске представлено множество других незначительных дополнений и улучшений, включая альфа-поддержку памяти подкачки, улучшенный опыт работы с Kubernetes в Windows и возможность использовать cgroups v2 для установки ограничений выделения памяти и изоляции для модулей.

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

Несколько бета-API теперь помечены как стабильные, в том числе токены привязанных учетных записей служб и объект PodDisruptionBudget для указания минимального количества одновременных реплик. Kubernetes также получил возможность предупреждать вас, когда вы используете устаревший API, что упрощает сохранение стабильного пути. Вы увидите эти сообщения, когда будете применять ресурсы к своему кластеру.

Каденция нового релиза

Версия 1.22 знаменует собой начало новой регулярной каденции обновлений Kubernetes. Теперь функции будут появляться четыре раза в год вместо трех, что увеличивает цикл разработки и дает больше возможностей для оптимизации и поддержания качества выпуска. Кроме того, он предлагает больше возможностей для администраторов кластеров, у которых теперь есть дополнительный месяц между миграциями.

В соответствии с этим графиком ожидается, что Kubernetes v1.23 появится в начале декабря 2021 года. Расчетное время разработки каждого цикла составляет 15 недель. Регулярные обновления исправлений по-прежнему будут выпускаться с существующей ежемесячной периодичностью, а критические исправления ошибок будут появляться раньше, когда это необходимо.

Краткое содержание

Kubernetes v1.22 — это этапное обновление, в котором проект переходит на новую частоту выпуска. Это поможет администраторам кластера планировать будущие обновления, предоставляя больше времени на миграцию до того, как появится следующая.

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

Обновление до версии 1.22 может потребовать действий, если вы все еще используете какой-либо из удаленных бета-API. Вы должны иметь возможность заменить их их стабильными версиями, хотя в некоторых случаях это может означать изменение ваших ресурсов. Если вы потратите сейчас время на устранение новых устаревших версий в версии 1.22, это поможет вам подготовиться к выходу версии 1.23, облегчив процесс миграции этого выпуска.