Выпуск 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



Источник: http://www.opennet.ru/opennews/art.shtml? num=52635

© OpenNet