Пару дней назад Rancher labs выпустила k3s, легкий, полностью совместимый Kubernetes производственного уровня. У всего этого есть двоичный файл размером 40 МБ, он работает на x64 и ARM, и даже из docker-compose. Сказать, что это великий инженерный подвиг, - ничего не сказать.

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

Я решил пойти по пути docker-compose, чтобы мне не приходилось иметь дело с загрузками, конфигами и всем остальным. Я пошел дальше, получил манифест создания и запустил его.

$ mkdir ~/k3s
$ curl https://raw.githubusercontent.com/rancher/k3s/master/docker-compose.yml > ~/k3s/docker-compose.yml
$ cd ~/k3s
$ docker-compose up -d
Starting k3s_node_1   ... done
Starting k3s_server_1 ... done

Примерно через 30 секунд я запустил свой экземпляр k3s.

k3s 'docker-compose помещает файл kubeconfig в ту же папку, в которой вы его запустили. Отличный узор!

$ export KUBECONFIG=~/k3s/kubeconfig.yaml
$ kubectl --kubeconfig kubeconfig.yaml get node                                                              (k3s/default)
NAME           STATUS   ROLES    AGE     VERSION
df305e6358a6   Ready    <none>   5m16s   v1.13.3-k3s.6

Когда ваш кластер будет готов, установите средство предоставления локального пути Rancher, чтобы мы могли использовать локальное хранилище вашего узла k3s.

$ kubectl apply -f https://gist.githubusercontent.com/rberrelleza/58705b20fa69836035cf11bd65d9fc65/raw/bf479a97e2a2da7ba69d909db5facc23cc98942c/local-path-storage.yaml
$ kubectl get storageclass                                                                                                                
NAME                   PROVISIONER             AGE
local-path (default)   rancher.io/local-path   50s

Мы создали okteto, чтобы быстро создавать среды разработки в вашем кластере Kubernetes. k3s - полностью совместимый дистрибутив Kubernetes. Будут ли они работать вместе? Только один способ разобраться (полное раскрытие: я один из основателей Okteto).

Для этого эксперимента я выбрал образец приложения для фильмов. Я клонировал репозиторий и развернул приложение с kubectl.

$ git clone https://github.com/okteto/samples.git
$ cd samples/vote
$ kubectl apply -f manifests
deployment.extensions/vote created
service/vote created
$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
movies-7cd9f9ddb-sflwf   1/1     Running   0          55s

Когда приложение было готово, я использовал okteto для запуска своей среды разработки в моем экземпляре k3s (установите okteto отсюда).

$ okteto up
  ✓  Okteto Environment activated
  ✓  Files synchronized
  ✓  Your Okteto Environment is ready
     Name:   vote
* Serving Flask app "app" (lazy loading)
* Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.
* Debug mode: on
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 899-835-619

Теперь, когда приложение запущено, я запустил свой браузер и перешел на http: // localhost: 8080, чтобы увидеть приложение во всей его красе с высоким разрешением.

Наконец, я пошел дальше и поработал над макетом, чтобы опробовать весь свой рабочий процесс. Я открыл vscode, изменил функцию getOptions в app.py с помощью следующего кода и сохранил свой файл:

def getOptions():
    optionA = 'Otters'
    optionB = 'Dogs'
    return optionA, optionB

Я вернулся в браузер. Изменения были автоматически перезагружены (благодаря горячей перезагрузке python) без необходимости создавать контейнер, выбирать тег, повторно развертывать его или даже обновлять мой браузер! 😎

Заключение

k3s - потрясающий продукт. У него есть некоторые проблемы (я не мог заставить исходящие сетевые соединения работать). Но если это первый релиз, я не могу дождаться и посмотреть, что они придумают в ближайшем будущем.

Престижность команде Rancher за полностью соответствующий подход. Благодаря этому их пользователи могут использовать всю экосистему с первого дня!

Заинтересованы в улучшении рабочих процессов разработки Kubernetes и Docker? Свяжитесь с Okteto и не ждите, пока код будет собран и повторно развернут.