Выпуск Kubernetes 1.18, системы управления кластером изолированных контейнеров
Опубликован релиз платформы оркестровки контейнеров Kubernetes 1.18, позволяющей как единым целым управлять кластером из изолированных контейнеров и предоставляющей механизмы для развёртывания, сопровождения и масштабирования выполняемых в контейнерах приложений. Проект изначально был создан компанией Google, но затем переведён на независимую площадку, курируемую организацией Linux Foundation. Платформа позиционируется как развиваемое сообществом универсальное решение, не привязанное к отдельным системам и способное работать с любыми приложениями в любых облачных окружениях. Код Kubernetes написан на языке Go и распространяется под лицензией Apache 2.0.
Предоставляются функции для развёртывания и управления инфраструктурой, такие как ведение базы DNS, балансировка нагрузки, распределение контейнеров по узлам кластера (миграция контейнеров в зависимости от изменения нагрузки и потребностей в сервисах), проверка работоспособности на уровне приложений, управление аккаунтами, обновление и динамическое масштабирование работающего кластера, без его остановки. Возможно развёртывание групп контейнеров с выполнением операций обновлений и отмены изменений сразу для всей группы, а также логическое разбиение кластера на части с разделением ресурсов. Имеется поддержка динамической миграции приложений, для хранения данных которых могут применяться как локальные хранилища, так и сетевые системы хранения.
Выпуск Kubernetes 1.18 включает 38 изменений и улучшений, из которых 15 переведены в статус стабильных, а 11 в статус бета. 12 новый изменений предложены в статусе альфа. При подготовлен новой версии равные усилия были направлены как на доработку различной функциональности и стабилизацию экспериментальных возможностей, так и на добавление новых разработок. Основные изменения:
- Kubectl
- Добавлена альфа-версия команды «kubectl debug», которая позволяет упростить отладку в подах, с помощью запуска эфемерных контейнеров с инструментами для отладки.
- Объявлена стабильной команда «kubectl diff», позволяющая посмотреть что изменится в кластере, если применить манифест.
- Убраны все генераторы команды «kubectl run», кроме генератора запуска одиночного пода.
- Изменили флаг »--dry-run», в зависимости от его значения (client, server и none) пробное исполнение команды выполняется на стороне клиента или сервера.
- Код kubectl выделен в отдельный репозиторий. Это позволило отделить kubectl от внутренних зависимостей kubernetes и облегчило импорт кода в сторонние проекты.
- Ingress
- Началось изменение API group для Ingress на networking.v1beta1.
- Добавлены новые поля:
- pathType, позволяющее указать каким способом будет сравниваться путь в запросе
- IngressClassName — замена аннотации kubernetes.io/ingress.class, которая объявлена deprecated. В этом поле указывается название специального объекта InressClass
- Добавлен объект IngressClass, в котором указывается название ингресс контроллера, его дополнительные параметры и признак использования его по умолчанию
- Service
- Добавлено поле AppProtocol, в котором можно указать какой протокол использует приложение
- Переведён в статус бета и включён по умолчанию EndpointSlicesAPI, который является более функциональной заменой обычных Endpoints.
- Сеть
- Поддержка IPv6 переведена в статус бета.
- Постоянные диски. Объявлена стабильной следующая функциональность:
- Клонирование PVC
- Использование не сетевых блочных raw-устройств в роли постоянных дисков
- Поддержка блочных raw-устройств в CSI
- Передача информации о поде, запросившем подключение диска, в CSI драйвер
- Конфигурирование приложения
- В объекты ConfigMap и Secret добавлено новое поле «immutable». Установка значение поля в true запрещает изменение объекта.
- Планировщик
- Добавлена возможность создавать дополнительные профили для kube-scheduler. Если раньше требовалось запускать дополнительные отдельные планировщики для реализации нестандартных алгоритмов распределения подов, то теперь появилась возможность создать дополнительные наборы настроек для стандартного планировщика и указать его название в том же поле пода ».spec.schedulerName». Статус — альфа.
- Taint Based Eviction объявлена стабильной
- Масштабирование
- Добавлена возможность указать в манифесте HPA степень агрессивности при изменении количества запущенных подов, то есть при увеличении нагрузки запускать сразу в N раз больше экземпляров (instance).
- Kubelet
- Topology Manager получил статус бета. Функция включает NUMA-распределение, что позволяет избежать деградации производительности на мульти-сокетных системах.
- Статус бета получила функция PodOverhead, позволяющая указать в RuntimeClass дополнительное количество ресурсов, необходимое для запуска пода.
- Расширена поддержка HugePages, в альфа статусе добавлена изоляция на уровне контейнера и поддержка нескольких размеров hugepages.
- Удален endpoint для метрик /metrics/resource/v1alpha1, вместо него используется /metrics/resource
- API
- Окончательно убрали возможность использовать устаревшие API group apps/v1beta1 и extensions/v1beta1.
- ServerSide Apply повышен до статуса бета2. Это улучшение переносит манипуляцию объектами из kubectl в API-сервер. Авторы улучшения утверждают, что это позволит починить множество существующих ошибок, которые невозможно исправлить в текущей ситуации. Также они добавили раздел ».metadata.managedFields», в котором предлагают хранить историю изменений объекта, с указанием кто, когда и что именно изменил.
- Объявлен стабильным CertificateSigningRequest API.
- Поддержка платформы Windows.
- Продолжает расширятся поддержка Windows node. Добавлены альфа-версии:
- Поддержка CRI-Contaierd
- Реализация RuntimeClass
- CSI прокси
- В статус стабильных переведена поддержка
- Group Managed Service Account
- RunAsUserName
- Продолжает расширятся поддержка Windows node. Добавлены альфа-версии:
Источник: http://www.opennet.ru/opennews/art.shtml? num=52635
© OpenNet