Четыре релиза 1.0 от CNCF и главные анонсы про Kubernetes с KubeCon 2017
В эти дни (6–8 декабря) в США проходит местная версия конференций KubeCon + CloudNativeCon 2017, в фокусе внимания которой многочисленные проекты некоммерческой организации CNCF во главе с Kubernetes. Мероприятие собрало более 4100 посетителей, 77% из которых используют K8s, причём в 75% случаев речь идёт про production. Событие оказалось не только богатым на анонсы от различных стартапов и гигантов индустрии, но и стало поводом для подведения итогов Open Source-сообщества из мира cloud native — достаточно заметить, что в декабре сразу у четырёх проектов CNCF состоялся знаковый релиз 1.0. Так что новенького?
Череда релизов
CoreDNS 1.0.0
1 декабря был выпущенCoreDNS 1.0.0. Подробнее об этом проекте мы уже рассказывали в отдельной статье. Если вкратце, CoreDNS — DNS-сервер, написанный на языке Go и схожий с Caddy (более того, зародился как его форк) в своём ключевом архитектурном паттерне — использовании набора из обработчиков, сцепляемых друг за другом. В качестве бэкенда (хранилища) для данных, используемых в DNS-записях, CoreDNS поддерживает etcd, Kubernetes и файл зоны в формате RFC 1035.
Планы по развитию CoreDNS на момент апреля 2017 года
Основной областью деятельности разработчиков в подготовке CoreDNS 1.0.0 стали улучшения в плагине поддержки Kubernetes. И это логично, если вспомнить, что авторы проекта добиваются замены kube-dns. Своё намерение они подкрепляют доказательством, что функциональность CoreDNS шире, производительность — лучше, а потребление памяти — меньше. Приводится пример тестирования кластера Kubernetes с 5000 сервисами, в котором CoreDNS смог обрабатывать 18000 запросов в секунду, используя 73 Мб RAM, против показателя в 7000 qps у kube-dns с потреблением 97 Мб RAM.
Среди возможностей, в которых CoreDNS превосходит kube-dns — фильтрация записей по пространству имён (namespace) и label selector; режим pods verified
для проверки подов на существование перед ответом на запрос pod.cluster.local
; endpoint_pod_names
для использования названий подов, когда имя хоста не установлено; autopath
для автодополнения поискового пути на стороне сервера.
Поддержка CoreDNS уже добавлена в различные инструменты для Kubernetes (alpha feature для 1.9): kubeadm, kops, minikube и kubespray.
containerd 1.0.0
Про containerd у нас тоже была отдельная статья. История этого проекта такова, что, изначально будучи частью Docker, containerd пережил отделение от общей кодовой базы и превращение в независимый проект под крылом CNCF одновременно со своим конкурентом, реализующим те же функции (т.е. исполняемую среду для контейнеров), — rkt от CoreOS.
Дальнейшая судьба containerd — его интеграция в Kubernetes через интерфейс CRI («Container Runtime Interface») посредством связывающей прослойки под названием cri-containerd:
Подробнее об этом и очередном главном конкуренте проекта уже на новой «почве» — CRI-O — мы писали здесь. Кстати, в конце ноября было объявлено и о заметном прогрессе в развитии rkt: в CNCF анонсировали первый выпуск rktlet — реализации rkt поверх всё того же CRI.
Но возвращаясь к теме: 5 декабря состоялся релиз containerd 1.0.0. И он привнёс немало новшеств в возможности этого продукта, а в частности:
- новую модель исполняемой среды на основе заданий (tasks),
- определяемый клиентом push/pull для образов и возможность использования сторонней системы распространения образов,
- систему хранения контейнеров на основе снапшотов,
- поддержку произвольного хранилища для метаданных объектов,
- расширенный gRPC API с пространствами имён.
Fluentd 1.0
Fluentd — написанный на Go сборщик данных, призванный унифицировать прослойку логирования между источниками логов (data sources: syslog, логи веб-сервера и т.п.) и системами их хранения (data outputs: различные СУБД, системы очередей, AWS и т.п.). Его широкая адаптация «тысячами компаний» позволяет CNCF называть fluentd «индустриальным стандартом для логирования». (К слову, сами мы его сейчас используем в своей системе логирования для Kubernetes — loghouse.)
В релизе 1.0 от 6 декабря появились:
- многопроцессорные workers для лучшей производительности с SMP,
- хранение точного времени (с точностью менее секунды) для всех записей,
- поддержка Windows,
- новый API для плагинов (а их уже более 700),
- сжатие хранимых на диске данных с помощью встроенных буферов,
- родная поддержка TLS и новый протокол Fluentd Forward Protocol v1 с поддержкой аутентификации через ключи и авторизации по логину/паролю.
Jaeger 1.0
Jaeger пополнил ряды проектов CNCF совсем недавно (в сентябре). Это распределённая система трассировки, написанная на Go, созданная в компании Uber и совместимая с OpenTracing (это тоже проект CNCF). Предназначение Jaeger — удобный мониторинг сложной микросервисной архитектуры, призванный способствовать в обнаружении причины возникающих проблем (с учётом всех зависимостей) и помогать в оптимизации производительности.
Вышедший 6 декабря Jaeger 1.0 принёс этому проекту:
- поддержку новых бэкендов для хранения данных (к Cassandra добавился ElasticSearch, а также готовится работа над MySQL + в сообществе экспериментируют со ScyllaDB и InfluxDB),
- многочисленные улучшения в пользовательском веб-интерфейсе,
- полную интеграцию всех компонентов с Prometheus в качестве системы метрик по умолчанию,
- улучшения в интеграции с Kubernetes (шаблоны для запуска в K8s и чарт для Helm),
- раннюю версию клиента на C++,
- значительный прогресс в обратной совместимости с Zipkin.
Новые участники CNCF
Конечно, не обошлось и без многочисленных пополнений в рядах компаний-участников CNCF.
Вместе с анонсом начала KubeCon + CloudNativeCon фонд представил сразу 31 нового члена, среди которых можно отметить Datadog (у этого SaaS-решения для мониторинга была замечательная статистика про Docker), Grafana Labs (как легко догадаться, авторы Grafana), HPE (Hewlett Packard Enterprise), InfluxData (авторы СУБД для работы с временными рядами — InfluxDB), NGINX, Pinterest (см. подробности ниже), SAP Concur (писали о них в этой истории успеха).
А в отдельных новостях было объявлено о новых участниках «высших категорий» в CNCF:
- 4 декабря статус Gold Member получила JFrog, предлагающая инфраструктуру для управления разработкой программного обеспечения; в пресс-релизе отмечается, что компания «использует технологии вроде Kubernetes, чтобы помогать 4000+ заказчикам собирать и выпускать софт быстро, надёжно и безопасно»;
- 6 декабря ряды CNCF пополнились платиновым участником (таковых сейчас всего 21) в виде Alibaba Cloud — ответственным за облачные технологии подразделением крупной китайской группы компаний Alibaba Group (её главный архитектор вошёл в управляющий совет CNCF); об их опыте использования Docker в production мы писали здесь;
- 6 декабря другая китайская компания — Baidu — стала золотым членом CNCF; их основное применение Kubernetes находится в области машинного и глубокого обучения (в частности, в прошлом году был открыт код фреймворка PaddlePaddle, поддерживающего запуск в кластере K8s);
- 8 декабря золотым членом CNCF стала компания Salesforce, которая «адаптировала многие технологии CNCF»; в частности, говорится об использовании Kubernetes как основы для внутренних процессов CI/CD, а также активное применение gRPC в команде, занимающейся service mesh.
Другие события
Были анонсированы на KubeCon 2017 и другие новости от заметных участников рынка ИТ. Среди них:
- Brendan Burns, один из основателей проекта Kubernetes и нынешний сотрудник Microsoft, представил Metaparticle — «стандартную библиотеку для облачных (cloud native) приложений на Kubernetes», цель которой — упростить разработку распределённых систем путём предоставления «простых и мощных строительных блоков, созданных на основе контейнеров и Kubernetes»; в качестве поддерживаемых языков программирования пока заявлены только JavaScript/Node.js, Java и .NET, но список обещают вскоре расширить;
Пример реализации master election на JavaScript в Metaparticle
- Oracle выпустила два Open Source-продукта, связанных с Kubernetes: инсталлятор для своей serverless-платформы Fn project и набор утилит для распределённых кластеров (Global Multi-Cluster Management);
- Microsoft принесла ещё больше новостей, т.к.:
- открыла код Virtual Kubelet — альтернативной реализации одноимённого компонента Kubernetes, специально предназначенной для подключения K8s к сторонним API (в качестве примеров приводятся Azure Container Instances, Hyper.sh, AWS);
- открыла код Open Service Broker for Azure (OSBA), созданного на базе Open Service Broker API с целью упростить работу со службами данных Azure через Kubernetes API: «Например, с помощью OSBA и Helm вы теперь можете легко установить экземпляр Wordpress с Azure Database for MySQL вместо запуска СУБД в контейнере»; проект имеет статус альфа-версии;
- представила Kashti — dashboard и инструмент визуализации для пайплайнов Brigade (демонстрация на YouTube);
- открыла код Virtual Kubelet — альтернативной реализации одноимённого компонента Kubernetes, специально предназначенной для подключения K8s к сторонним API (в качестве примеров приводятся Azure Container Instances, Hyper.sh, AWS);
- ещё один анонс от Microsoft, уже при участии Heptio, гласит о том, что компания работает над реализацией системы резервного копирования для Kubernetes-кластеров (в рамках своей недавно представленной службы Azure Kubernetes Service) с использованием Open Source-утилиты Heptio Ark;
- менеджер продуктов из уже упомянутого онлайн-сервиса Pinterest рассказал о миграции их production-инфраструктуры на контейнеры, начавшейся в 2016 году и близкой к завершению, а также о планах её дальнейшего перевода на Kubernetes (к середине следующего года);
- вице-президент по стратегии в области облачной архитектуры AWS выступил с докладом, в котором объявил о плане компании использовать CNI в качестве сетевой основы для контейнеров и пообещал, что все изменения, вносимые AWS в код Open Source-проектов, будут попадать в upstream (для этого в компании уже «работают с различными Open Source-проектами, сообществами и фондами»).
Наконец, грядущий релиз Kubernetes 1.9 тоже привязали к датам KubeCon 2017: буквально в эту ночь состоялся выпуск beta2, в течение ближайших суток ожидается завершение работы над всей документацией, а сам релиз запланирован на ближайший понедельник (11 декабря).
P.S. В CNCF собрали статистику о посетителях KubeCon + CloudNativeCon North America 2017 и о том, как они используют в своей инфраструктуре контейнеры и различные проекты фонда. Вот, например, главные сложности, с которыми сталкиваются опрошенные и как они менялись в течение последнего года:
P.P. S.
Читайте также в нашем блоге:
- «Статистика The New Stack о трудностях внедрения Kubernetes»;
- «Kubernetes 1.8: обзор основных новшеств»;
- «Linux Foundation представила бесплатный вводный онлайн-курс по Kubernetes»;
- «CNCF предложила бесплатное облако Open Source-проектам для DevOps/микросервисов»;
- «Инфраструктура с Kubernetes как доступная услуга».