Найти в Дзене
Давайте говорить?

Итоги года: главные особенности Kubernetes в 2020 году

Kubernetes быстро развивается, время от времени выпускаются новые версии, которые добавляют к его и без того огромной коллекции функций. Однако еще в ноябре во время Kubecon + CloudNativeCon North America соучредитель Kubernetes Стивен Август объявил, что они будут снижать частоту выпусков. На это решение частично повлияла пандемия, но в основном тот факт, что многие организации все еще используют Kubernetes 1.15. Уменьшая темпы выпуска версий Kubernetes, он хочет, чтобы провайдеры не отставали от него. В этом году Kubernetes выпустил только три небольших обновления с версиями 1.18, 1.19 и 1.20, и он планирует продолжить этот темп и в 2021 году. Несмотря на отсутствие релизов в 2020 году, Kubernetes представил несколько новых функций. Давайте посмотрим на некоторые из наиболее востребованных функций и их статус выпуска.

Менеджер топологии Kubernetes

Во многих высокопроизводительных рабочих нагрузках используется комбинация процессоров и аппаратных ускорителей для обеспечения параллельных вычислений с высокой пропускной способностью. Чтобы получить максимальную производительность от рабочей нагрузки, необходимы различные оптимизации, такие как изоляция ЦП, а также выделение памяти и устройств. Однако в Kubernetes эти задачи выполняются для непересекающихся наборов компонентов, поскольку и диспетчеры устройств, и процессоры работают независимо при распределении ресурсов. Это может привести к снижению производительности и увеличению задержки.

K8s Topology Manager был запущен в виде бета-версии с Kubernetes 1.18. Topology Manager - это компонент кубелета, который помогает уменьшить задержку и повысить производительность в критически важных приложениях. Topology Manager предоставляет единый источник достоверных данных для различных компонентов через интерфейс для компонентов, называемых поставщиками подсказок, которые могут использоваться компонентами для принятия решений о выделении ресурсов, согласованных с топологией, для обеспечения низкой задержки и оптимальной производительности критических рабочих нагрузок.

Чтобы включить эту функцию, должен быть включен шлюз функции TopologyManager. По умолчанию это включено в версии 1.18 и выше.

Отладка узла Kubectl

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

Теперь пользователи могут выполнять следующие действия:

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

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

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

kubectl будет включена по умолчанию из Kubernetes 1.20. Альфа-отладка kubectl устарела и будет удалена в следующих выпусках.

V1 Ingress API

Этот API был доступен в виде бета-версии начиная с Kubernetes 1.1, с различными улучшениями. Ingress стал популярным API среди пользователей и балансировщиков нагрузки, что придало ему де-факто статус GA в сообществе K8s. Ingress API обрабатывает внешний доступ к службам, предоставляя соответствующие маршруты HTTP и HTTP. Ingress выполняет различные задачи, такие как балансировка нагрузки, предоставление виртуальных хостов на основе имен и завершение работы SSL / TLS. Ресурсы Ingress в своей работе зависят от контроллеров Ingress. K8s в настоящее время поддерживает различные контроллеры Ingress, такие как GCE и nginx, а также некоторые другие. В версии 1.18 Kubernetes внес несколько ключевых изменений в объект Ingress. Стало доступным новое поле типа пути, для которого по умолчанию было установлено значение «SpecificationSpecific». Теперь пользователи могут указывать тип пути, используя типы пути «Точный» и «Префикс».

Поле IngressClass было доступно пользователям для указания типа входящего трафика в кластере K8s. Однако, начиная с Kubernetes 1.18, новое поле IngressClassName стало доступным для указания класса входящего трафика, заменив ранее существовавшую аннотацию kubernetes.io/ingress.class.

Операции с моментальным снимком тома

Моментальные снимки - не самое надежное решение для резервного копирования и восстановления, когда речь идет о больших объемах рабочих нагрузок. Однако, если вы правильно разыграете свои карты, моментальные снимки могут быть полезны, поскольку они не обеспечивают функции резервного копирования и восстановления во время простоя. Это улучшение было запущено в виде бета-версии с Kubernetes 1.16 и обеспечило поддержку API для подключаемых модулей Kubernetes Container Storage Interface (CSI) для создания моментальных снимков PersistentVolumes и их восстановления при необходимости. Чтобы гарантировать надежность моментальных снимков, пользователи должны обеспечить согласованность данных на уровне приложения, ОС хоста и системы хранения. Если моментальные снимки будут сделаны до того, как все данные приложения в памяти будут сохранены внутри, хранилище неизбежно будет повреждено и бесполезно при необходимости.

В Kubernetes 1.20 функция создания моментальных снимков тома была перемещена в общедоступную. Эта функция позволяет пользователям делать снимки тома стандартизованным образом, обеспечивая надежность. Операции со моментальными снимками переносимы и могут быть включены в различные среды Kubernetes или поддерживаемые поставщики хранилищ. Эти примитивы операций с моментальными снимками можно использовать для разработки расширенных функций администрирования хранилища для K8s, позволяющих выполнять резервное копирование на уровне кластера и приложений. Чтобы использовать эту функцию, вы должны убедиться, что контроллер снимков, CRD снимков и веб-перехватчики проверки связаны с Kubernetes вашим дистрибьютором.

Изящное завершение работы узла

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

Элементы управления скоростью автомасштабирования горизонтального модуля

API горизонтального автомасштабирования модулей (HPA) - это альфа-функция, которая позволяет автоматически масштабировать модули до наборов реплик на основе определенных значений метрик. Эта функция очень полезна, когда речь идет о приложениях, которые могут быть подвержены колебаниям трафика. HorizontalPodAutoscaler теперь имеет дополнительное поведение поля. Теперь пользователи могут устанавливать разные скорости масштабирования или уменьшения для разных приложений в зависимости от их функциональности и известного поведения.

Новые функции Kubernetes: многие в конвейере 2021 года

Это лишь некоторые из многих функций, которых пользователи ждали. Несколько других функций, таких как поддержка TLS 1.3, Immutable Secrets и ConfigMaps, а также Kubernetes API Server Egress Proxy, были доступны в течение последнего года с разным статусом доступности. Kubernetes имеет много новых функций в конвейере, и несколько функций ожидают широкой доступности. В связи с замедлением цикла выпуска Kubernetes пытается расширить поддержку предыдущих версий, чтобы организациям было легче догнать быстрые темпы разработки. И эти новые функции обязательно подтолкнут организации к такому переходу. Будет интересно посмотреть, как эта новая стратегия выпуска реализуется для Kubernetes и какие новые функции переходят в GA с Kubernetes 1.21.