В Google признали, что Kubernetes настолько сложен, что им пришлось выкатить“Автопилот”, чтобы всё делать за вас

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


От переводчика: Как вы можете знать, мы занимаемся разработкой open source фреймворка и средств разработки. Неотъемлемой частью процесса разработки приложений является развертывание, и для нас крайне важно обеспечить простой и понятный механизм выкатки решения, без излишней сложности. Было время, когда казалось, что оркестраторы контейнеров возьмут и решат все проблемы. Развертывание должно было стать по силам абсолютно любому разработчику. Но жизнь показывает, что это не совсем так. Мы держим на радаре то, как развиваются инструменты и методики развертывания и не можем не поделиться очередной статьей, которая показалась нам важной.


Дороже, менее гибкий, но проще и безопаснее в использовании


Google осознал, что пользователи испытывают трудности с тем, чтобы сконфигурировать Kubernetes правильно, и представляет новый сервис — “Автопилот” в попытке упростить развертывание и управление.


Есть две вещи, которые знают все про Kubernetes: во-первых, он выиграл в гонке за звание критически важного оркестратора контейнеров и, во-вторых, его сложность — это одновременно и барьер для внедрения, и основной источник ошибок.


Даже Google, изобретатель и самый большой популяризатор Kubernetes, признает, что это так. “Несмотря на 6 лет прогресса, Kubernetes все ещё невероятно сложен”, говорит Drew Bradstock, ответственный за продукт Google Kubernetes Engine (GKE). “Последний год или около того мы видели большое количество крупных компаний, начинающих использовать Kubernetes, но потом упирающихся лбами в сложности.”


GKE — это Kubernetes, который, в основном, работает на Google Cloud Platform (GCP), но также на других облачных и локальных средах выполнения, являющихся частью Anthos.


Это и есть обоснование для создания “Aвтопилота” — полностью управляемого развертывания в GKE, исполняющегося в GCP. Но не является ли сам GKE уже полностью управляемым сервисом? Это так, но разница в том, что “Автопилот” менее гибкий, но зато более автоматизированный, чем GKE.


В Kubernetes есть концепция кластеров (набор физических или виртуальных серверов), узлов (отдельных серверов), подов (управляемый элемент, представляющий собой один или несколько контейнеров, развернутых на узле) и контейнеров как таковых. GKE полностью управляет развертыванием до уровня кластера. “Автопилот” расширяет это до уровня узлов и подов.


Чтобы наилучшим образом понять функциональность и ограничения “Автопилота” — посмотрите тут. И обратите особое внимание на опции, отмеченные “pre-configured”, что означает, что они не могут быть изменены.


В основе своей, это ещё один способ покупки и управления GKE ресурсами, который дает меньше гибкости, но больше удобства. Поскольку Google берет на себя большую часть конфигурирования, он предлагает более высокий SLA — 99.9% доступности для подов в “Автопилоте” в нескольких зонах.



“Автопилот” GKE управляет узлами вместо вас


В Google Cloud регионы состоят из трех или более зон. Размещение всех ресурсов в одной зоне менее отказоустойчиво в сравнении с распределением их по разным зонам, а распределение конфигурации на разные регионы позволяет достичь максимальной отказоустойчивости. Кластеры “Автопилота” всегда размещаются в пределах одного региона, а не зоны, что хорошо для надежности, но стоимость такого решения выше.


Другие ограничения “Автопилота”, это то, что всегда используется специальная ОС от Google — “оптимизированный для контейнеров” Linux с Containerd, а не Linux с Docker и не Windows Server. Также максимальное количество подов на узел — 32, в противовес 110 на стандартном GKE.


Нет SSH доступа к узлам, в “Автопилоте” они заблокированы. Поддержка GPU и TPU (Tensor Processing Unit) недоступна, хотя она запланирована на будущее. “Удаление SSH — большое дело” — говорит Bradstock. Это в какой-то мере ограничивает, но Bradstock сказал нам, что решение основано на исследованиях, “в которых люди неверно настраивали вещи, исходя из наилучших намерений”.


Деньги, деньги


Ценообразование также строится по-другому, в основе — CPU, память и хранилище, используемое подами, а не используемые экземпляры виртуальных машин. Также есть плата — $0.10 в час за каждый кластер “Автопилота”. Стандартный GKE тоже стоит $0.10 в час за каждый кластер, вы платите за один из сервисов, а не за оба.


На очевидный вопрос, что дороже, “Автопилот” или стандартный GKE, не так-то просто ответить. Поскольку это в какой-то мере премиальная схема развертывания, “Автопилот” обойдется дороже, чем аккуратно оптимизированное развертывание в стандартном GKE. “Есть надбавка в сравнении с обычным GKE”, сказал Bradstock, “потому что у нас есть полная поддержка SRE (Site Reliability Engineering) и SLA, это не просто "ещё один сервис".


Но нужно упомянуть, что стандартный GKE в случае недостаточной загрузки (потому что довольно сложно рассчитать спецификацию для экземпляров виртуальных машин) может стоить дороже, чем “Автопилот”.


А почему бы просто не использовать Cloud Run, который позволяет развертывать и запускать контейнеры без всякой конфигурации кластеров, узлов и подов (хотя это все работает на GKE)? “Cloud Run — это отличная среда разработки, где за вас приняты все решения, одно приложение может масштабироваться с 0 до 1000 экземпляров (и обратно до 0). Это та ниша, на которую нацелен Cloud Run”, сказал нам Bradstock. “Автопилот” — для тех людей, которые хотят делать меньше работы, но все ещё хотят Kubernetes, они хотят видеть всё, иметь возможность использовать сторонние скрипты, собирать свою платформу.”


Является ли совместимость с дополнениями (add-ons) проблемой для ограниченного окружения “Автопилота”? “Есть вещи, которые пока ещё не работают”, говорит Bradstock. Но некоторые сторонние инструменты уже функционируют, например, мониторинг с Datadog уже поддерживается, равно как и DaemonSets — функциональность Kubernetes для запуска сервиса на каждом узле, используемая большим количеством дополнений.


Конфигурирование хранилища, виртуальных машин и сети означает: “мы должны распрощаться с некоторыми степенями свободы и некоторыми связями”, сказал нам он. “Но мы определенно хотим, чтобы на нем работала сторонняя экосистема”.


Анонсируя “Автопилот”, Google предлагает более широкий спектр опций для Kubernetes, от наиболее часто используемых, до редких. Цена этого — не только более высокая стоимость и меньшая гибкость, но также потенциальная потеря навыков администраторов. Хотя с этим можно поспорить, поскольку бизнес должен фокусироваться на том, что приносит большую ценность, а не на вещах, которые могут быть выполнены подрядчиками.


У инженеров Google репутация лучше, чем у их службы поддержки. Разработчик Kevin Lin, который раньше работал в Amazon, недавно написал про свой опыт в качестве нового клиента AWS и Google.


Он сказал, Google был медленнее, менее полезным и все кончилось тем, что меня отправили к стороннему партнеру. “Первые вводные созвоны были полностью посвящены тому, сколько денег я планировал потратить на Google (в противоположность Amazon, где они хотели помочь мне спроектировать сервисы). У Google Cloud действительно хорошая эргономика и инженеры мирового уровня, но ужасная репутация службы поддержки. Мой анекдотический опыт, похоже, это подтверждает” — сказал он.


Это доказательство, если таковое и требовалось, что хорошие инженеры — это не единственная вещь, которая нужна GCP для увеличения доли рынка.

Источник: https://habr.com/ru/company/haulmont/blog/545018/


Интересные статьи

Интересные статьи

Прим. перев.: эта статья, написанная SRE-инженером из LinkedIn, в деталях рассказывает о той «внутренней магии» в Kubernetes — точнее, взаимодействии CRI, CNI и kube-apiserver, — что ...
Staphylococcus epidermidis. Обычно ведёт себя мирно, но может провоцировать акне, если слишком проголодается Наша кожа — это зоопарк. Причём открытого типа, с разными «климатичес...
SRE (Site Reliability Engineering) — подход к обеспечению доступности веб-проектов. Считается фреймворком для DevOps и говорит как добиться успеха в применение DevOps-практик. В этой статье п...
9 декабря вышла очередная версия Kubernetes — 1.17. Ее девиз — «Стабильность», множество фич получили статус GA, некоторое количество устаревших фич было удалено… И, как всегда, наш любимы...
В начале года, в отчете о проблемах и доступности интернета за 2018-2019 мы уже писали, что распространение TLS 1.3 неизбежно. Некоторое время назад мы сами развернули версию 1.3 протокола Tr...