Быстрый обзор нетерпеливого читателя: Дмитрий Тишенко
Kubernetes сложный, но мощный!
Введение
Если у вас есть какой -то опыт работы с Kubernetes, вы оцените ее силу, а также его сложность. Мир No-Ops с Kubernetes кажется утопным. Вы хотите, чтобы было что-то более простое, наконец, давая разработчикам силу самообслуживания. К счастью, Кнайт Был разработан именно с этой целью: дайте разработчикам простой способ развертывания и управления своими услугами, абстрагируя больше концепций Kubernetes, таких как стручки, узлы и вход.
Поскольку вы заняты толканием новых выпусков до производства и у вас нет времени, чтобы тратить время, эта статья будет пытаться представить вам Knaties, используя «путь наименьшего сопротивления». Простота над полнотой и императивными командами над объявлениями YAML.
Кнайт: Более простой способ развертывания и управления услугами
Knative предоставляет две высокие абстракции
- Knative Arebing: набор компонентов для развертывания и управления пересмотрами веб -микросервисов без сохранения состояния. Подумайте: «Одна команда для развертывания приложения и предоставлена URL -адреса для доступа к нему». Эта статья будет сконцентрироваться на сервировочном компоненте.
- Knative Eventing: структура для настройки конвейеров событий между различными микросервисами. Мы оставим Knative Eventing в качестве упражнения для читателя или будущих статей в блоге.
Итак, давайте прыгнем.
Установка Knative
Безусловно, самый простой метод установки, который я нашел, — это следовать этому превосходному руководству по настройке по Мет Атамель Анкет Он предполагает GKE (Google Kubernetes Engine), но также будет работать над другими реализациями K8S. Ссылка выше — на мою вилку этого руководства с добавленной настройкой мониторинга.
После установки убедитесь, что вы убедитесь, что все работает правильно, выполняя следующие три команды:
> kubectl get pods -n knative-serving NAME READY STATUS RESTARTS AGE activator-869f6d4f9f-jxxfn 1/1 Running 0 118m autoscaler-78994c9fdf-97c7k 1/1 Running 0 118m controller-b94c5b667-cn2sm 1/1 Running 0 117m default-domain-btzn4 0/1 Completed 0 117m networking-istio-5847754959-p7g78 1/1 Running 0 117m webhook-7cdb467d79-9mgf2 1/1 Running 0 117m > kubectl get pods -n knative-eventing NAME READY STATUS RESTARTS AGE broker-controller-b85986f7d-8lzwn 1/1 Running 0 117m eventing-controller-58b889c4b4-gdt67 1/1 Running 0 118m eventing-webhook-5549c4b664-ltq69 1/1 Running 0 118m imc-controller-64cfbf485d-7jz2j 1/1 Running 0 117m imc-dispatcher-5fc7ccf7d8-6jbfr 1/1 Running 0 117m > kubectl get pods -n knative-monitoring NAME READY STATUS RESTARTS AGE grafana-5cb855689f-frgfc 1/1 Running 0 113m kube-state-metrics-5cb5c6986b-t7m7w 1/1 Running 0 113m node-exporter-8tn78 2/2 Running 0 113m node-exporter-mz5kk 2/2 Running 0 113m node-exporter-wjfvd 2/2 Running 0 113m prometheus-system-0 1/1 Running 0 113m prometheus-system-1 1/1 Running 0 113m
Вы также можете запустить сценарий «./check-versions», указанный в папке Setup. Эта статья была написана с использованием версии 0.13 Knative.
Knative CLI: KN
Эта статья будет использовать Knative CLI под названием KN Для экспериментов, потому что это самый простой способ взаимодействовать с Knative. Конечно, также возможно взаимодействовать с Kniaties с помощью Kubectl, если вы предпочитаете. Поскольку я обещал вам «Zero-yaml», это остается в качестве упражнения для читателя.
Давайте продолжим и разверните пример приложения «Hello World».
Развертывание рыночной службы
> kn service create helloworld --image gcr.io/knative-samples/helloworld-go > kn service list NAME URL LATEST AGE CONDITIONS READY REASON helloworld http://helloworld.default.127.127.127.127.xip.io helloworld-10 110m 3 OK / 3 True
Это поразительно. Мы развернули веб -микросервис с одной командой, и теперь у нас есть URL, который мы можем использовать для доступа к нему: http://helloworld.default.127.127.127.127.xip.io (IP -адрес заменен поддельным, чтобы предотвратить недоразумения). Обратите внимание, что xip.io — это поставщик DNS «Волшебный», который автоматически настроен во время этой демонстрационной настройки. XIP разрешает имена с шаблоном *. [Ip] .xip.io к IP -адресу [ip].
Давайте «заглянуть под капюшон» на уровне Kubernetes, чтобы увидеть, что происходит. На самом деле Клайтель создал для нас стручок?
> kubectl get pod No resources found in default namespace.
Хм, у нас нет капсул! Как работает наш микросервис?
Давайте начнем
Смотреть kubectl
В одном терминале и нажмите наше приложение HelloWorld с Curl в другом:
>curl http://helloworld.default.127.127.127.127.xip.io Hello World!
Это сработало, приложение вернуло строку «Привет, мир!». Наши часы теперь показывают бегущий капсул:
> watch kubectl get pod NAME READY STATUS RESTARTS AGE helloworld-10-deployment-6844684bdf-zdgxb 2/2 Running 0 10s
Итак, Knative начал наш сервис, когда мы действительно получили к нему доступ! И более того, если мы подождем еще 60 секунд, стручок исчезнет — рыцарские масштабируются до нуля, если служба не будет использована. Это пример автоматического мастерства от 0 до 1 и обратно до 0.
Я надеюсь, что это было полезно для читателей в качестве введения для установки и запуска примера «привет мирового мира» с Knative. Пожалуйста, настройтесь на остальную часть этой серии, так как я больше делюсь с читателями о том, как конфигурации, маршруты, синие/зеленые развертывания и многое другое!
Использованная литература:
Если вы заинтересованы в перемещении вашего CI/CD Pipeline в Kubernetes, ознакомьтесь с Блог Tekton от Эрика Соренсона Анкет Забавный факт: Tekton возник из третьего компонента Knatie, «Build», который с тех пор ушел от Knative в проект Tekton.
Этот образовательный контент принес вам Relay.sh Анкет Relay-это платформа автоматизации, управляемая событиями, которая объединяет все инструменты и технологии, необходимые для эффективного управления вашей средой DevOps.
Оригинал: «https://dev.to/relay/what-is-knative-installing-and-using-knative-with-zero-yaml-2nf»