Пару дней назад 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 и не ждите, пока код будет собран и повторно развернут.