В начале года появился новый веб-сервис KubeSail, созданный двумя американскими Kubernetes-энтузиастами, задавшимися целью «сделать преимущества Kubernetes более доступными для всех разработчиков». Для её достижения они предложили K8s-кластер в виде управляемой услуги (managed service), в рамках которой имеется бесплатный тарифный план.
Авторы KubeSail, утверждая, что Kubernetes уже стал стандартом для построения инфраструктуры, признают высокий порог вхождения, что «вызывает сомнения насчёт того, окупят ли преимущества этой технологии затраты [на обучение и старт]». Дабы нивелировать этот недостаток, они и предлагают простой в работе сервис, бесплатная версия которого должна быть «полезна для изучения Kubernetes или хобби-проектов, которые не стоят затрат в 140 USD/месяц, как в [Amazon] EKS».
Текущие тарифные планы KubeSail таковы:
… а цены с гибкими ограничениями по CPU/памяти и хранилищам обещают в скором времени.
Чем это лучше других вариантов?
Вот что сами разработчики (и не только они) говорят, отвечая на вопросы читателей Reddit об отличиях их предложения от того, что уже есть.
В сравнении с локальным запуском Minikube:
«Более одного master-узла, что позволяет работать с настоящей высокодоступной конфигурацией. У вас должна быть возможность уронить один узел и не страдать от неработающих функций. У minikube, уверен, возможен только один master со множеством worker'ов».
«… вы также можете запускать production-инсталляции в кластере и делать их доступными в интернете. Это не только классно для обучения, но ещё и действительно высокодоступный K8s-кластер, который не выключится, когда будет закрыта крышка ноутбука».
В сравнении с другими поставщиками managed Kubernetes (в качестве примеров приведены GKE и Digital Ocean):
«DO действительно дешевле AWS [сравнение с EKS которого см. выше], однако должен сказать, что мы поддерживаем HA-конфигурации на бесплатном тарифе (вы можете запустить три маленьких pod'а на трёх узлах) и используем очень мощные машины с быстрыми SSD-дисками и сетевыми подключениями, поэтому готов сделать ставку, что pod на KubeSail будет быстрее 2-гигабайтного instance в DO! Хотя конкурировать с DO будет действительно непросто, поэтому мы собираемся сосредоточиться на вопросах обучения и пользовательского интерфейса/утилит».
Больше, чем managed K8s
Хотя сервис преимущественно ориентирован на разработчиков, он может пригодиться и DevOps-инженерам. Помимо собственно простого веб-интерфейса (подробности о нём последуют ниже), авторы обещают выпустить инструменты для разработки под Kubernetes и руководства, которые упростят деплой и запуск приложений в кластерах. «Первой ласточкой» здесь стала утилита deploy-to-kube, предназначенная для развёртывания Node.js-приложений в Kubernetes одной командой (и даже без необходимости создавать для этого конфиг — все необходимые данные запрашиваются в интерактивном режиме):
Но вернёмся к собственно управляемому K8s-кластеру, что нам предлагает KubeSail.
Работа с KubeSail
Веб-интерфейс сервиса служит цели проекта: очень прост и позволяет буквально в несколько кликов получить кластер в своё распоряжение.
После входа через GitHub-аккаунт веб-интерфейс предлагает сразу же приступить к делу, т.е. выкатить первые deployments в созданный Kubernetes-кластер:
Выберем для этого один из готовых примеров — QUOTE-OF-THE-MONTH
. Это сервис, отдающий случайную цитату в формате JSON. Деплой проходит быстро (<10 секунд):
Проверим результат, обратившись к доступному извне endpoint:
$ curl https://qotm-2d7ab6efca.kubesail.io/
{
"hostname": "qotm-5d9f776595-6qfmv",
"ok": true,
"quote": "A small mercy is nothing at all?",
"time": "2019-02-21T02:54:15Z",
"version": "2.0"
}
Работает! А вот как выглядит интерфейс к уже выкаченным в кластер deployments:
Как видно, про каждый из них можно посмотреть базовые сведения: ограничения по ресурсам, проброшенные порты, вывод логов (данные из kubectl logs
).
Если перейти по ссылке ACCOUNT (в правом верхнем углу интерфейса), то можно выкатить дополнительный deployment из готовых примеров (а их сейчас всего два: уже упомянутый сервис цитат и nginx) или же забрать готовый конфиг (~/.kube/config
) для возможности работать с кластером через привычный kubectl
:
Для полноты экспериментов воспользуемся этим конфигом и развернём свой deployment — например, из документации Kubernetes:
$ kubectl create -f https://k8s.io/examples/controllers/nginx-deployment.yaml
deployment.apps/nginx-deployment created
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
nginx 1/1 1 1 4h14m
nginx-deployment 0/3 0 0 64s
qotm 1/1 1 1 4h17m
Развернуть получилось, но что-то пошло не так? Интерфейс KubeSail рад помочь:
Вот оно что — всё дело в ограниченных ресурсах. Проблема уйдёт, если привести deployment, например, к такому виду (см. последние строки — блок resources
):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
resources:
limits:
cpu: "100m"
memory: "20Mi"
requests:
cpu: "10m"
memory: "10Mi"
… однако искусственность такого «исправления» этой проблемы быстро даст о себе знать:
Обратите внимание на «1/3» в правом верхнем углу — она символизирует запуск одной из реплик. Правда, после этого ресурсов снова перестало хватать… Впрочем, оставлю такие «игры» за рамками эксперимента: его суть всё же сводилась к проверке взаимодействия с кластером через kubectl
— и с этим, как видим, всё действительно в порядке.
Официальный текущий статус KubeSail — бета-версия, и авторы очень ждут обратной связи от любых пользователей их сервиса: и разработчиков, и DevOps-инженеров.
Альтернативы
Напоследок, напомню, что существуют и другие бесплатные сервисы для экспериментов с Kubernetes и его изучения онлайн. Про один из них — Play with Kubernetes, использующий технологию Docker-in-Docker (DIND) и предлагающий консоль в браузере, — мы уже писали обзор.
Кроме него, в Katacoda создали весьма схожий Kubernetes Playground.
А в документации Kubernetes можно найти большие списки как для локальных способов установки/использования Kubernetes, так и для hosted-решений, разнообразие которых на сегодняшний день значительно превышает знакомые всем варианты от Amazon, Azure, Digital Ocean и Google (кстати, KubeSail уже тоже внесли в этот список).
Автор: shurup