Kubernetes

Сервисная сетка Kubernetes

Сервисная сетка Kubernetes
В Kubernetes есть множество типов ресурсов, которые помогают абстрагироваться от идеи сервисов или микросервисов. Например, если интерфейс вашего приложения хочет взаимодействовать с серверной частью, ему не нужно заботиться о том, какой модуль он ищет, или даже о том, какой IP-адрес, как ожидается, будет занимать серверный модуль. Поды доступны через службу. (Если вы новичок в Kubernetes, я рекомендую этот пост, чтобы лучше понять, что такое поды, а также другие важные концепции.)

По сути, Kubernetes предоставляет серверная служба внутри кластера и интерфейс взаимодействует с этой службой. Модули, которые предлагают услугу, вполне можно заменить, и никто ничего не заметит. Но по мере роста функций в ваших приложениях растет и количество сервисов, которые вам необходимо поддерживать. Каждая служба потенциально может взаимодействовать с любой другой службой в кластере, и результирующая сеть называется Сервисная сетка.

Для Kubernetes существует множество надстроек, которые помогают нам упростить управление этой Service Mesh. Эти надстройки предлагают множество ключевых функций, таких как TLS, автоматическая балансировка нагрузки, защита API даже во внутренней сети и т. Д. Многие опции, такие как Istio, Linkerd и Conduit, могут быть интегрированы с Kubernetes для достижения этой цели. В этом посте мы рассмотрим Istio, так как это версия 1.0 было недавно анонсировано.

Предпосылки

Чтобы начать работу с Istio, вам понадобится рабочий кластер Kubernetes. Есть три способа получить это.

  1. Вы можете установить Minikube, чтобы создать кластер с одним узлом на вашем локальном компьютере.
  2. Или, если вы используете Docker в Windows или Mac, вы можете включить одноузловой кластер Kubernetes в настройках Docker.
  3. Или вы можете использовать онлайн-сервисы, такие как игровая площадка Katacoda. Мы будем использовать это.

Зачем использовать Service Mesh?

Установка сервисной сети, такой как Istio, упрощает работу с микросервисами. При разработке вам не нужно беспокоиться о том, что ваш микросервис должен будет предлагать поддержку взаимного TLS, балансировки нагрузки или любого другого аспекта, такого как обнаружение сервисов. Идеальная Service Mesh позволяет подключать микросервисы, защищать их друг от друга и от внешнего мира и организованно управлять ими. Это очень помогает как разработчикам, так и операторам.

Установка Istio

Для установки Istio требуется кластер Kubernetes. Если у вас есть кластер с одним узлом, как в Minikube или Docker на рабочем столе, тогда все команды можно запускать на вашем локальном узле. Однако, если вы используете многоузловой кластер, подобный тому, что предлагает игровая площадка Katacoda, имейте в виду, что большинство команд и процедур настройки выполняются на главном узле. Да, это влияет на весь кластер, но нам нужно взаимодействовать только с главным узлом.

Начнем с клонирования (или скачивания) последней версии Istio с Github. Пользователи Windows могут захотеть посетить эту страницу и получить соответствующий .застегивать файл.

$ curl -L https: // git.io / getLatestIstio | ш -
$ cd istio-1.0.0

Название репо может измениться со временем по мере выхода новой версии, на момент написания этой статьи 1.0.0 - последняя стабильная версия. Это репозиторий содержит не только расширение служебной сетки, но и образец приложения под названием BookInfo для экспериментальных целей. Скрипт также добавляет новый каталог $ PWD / istio-1.0.0 / bin в вашу переменную PATH.

Этот каталог содержит istioctl двоичный файл, который можно использовать для взаимодействия с кластером. Пользователи Windows могут просто вызвать двоичный файл, перейдя в папку istio-1.0.0 \ bin и звонит .\ istioctl с помощью PowerShell или командной строки. Но это необязательное дополнение.

Если вы используете Mac, вы можете сделать это с помощью следующей команды:

$ export PATH = $ PWD / bin: $ PATH

Затем нам нужно расширить наш Kubernetes API с помощью пользовательских определений ресурсов (CRD), которые istio предоставляет нам.

$ kubectl apply -f install / kubernetes / helm / istio / templates / crds.ямл

Это может вступить в силу через несколько секунд, и как только это будет сделано, в ваш kube-apiserver будут встроены расширения Istio. С этого момента варианты установки различаются в зависимости от того, используете ли вы это в производственных целях или экспериментируете с ним в своей собственной изолированной среде.

Мы предполагаем, что это последний случай, и устанавливаем istio без аутентификации TLS.

$ kubectl apply -f install / kubernetes / istio-demo.ямл

Это создаст новое пространство имен istio-system, в котором будут установлены все различные компоненты, такие как istio-pilot и входной шлюз.

Развертывание приложений и инжектор Istio

А вот и полезность Istio. Istio добавляет к вашим сервисам дополнительные прокси-серверы, и это делается без изменения фактического кода вашего приложения. Если включен автоматический istio-sidecar-injector. Вы можете пометить пространство имен с помощью istio-injection = enabled, и когда ваше приложение будет развернуто в этом пространстве имен, сами поды будут иметь специализированные контейнеры Envoy вместе с контейнерами для основного приложения. Например, обозначим пространство имен по умолчанию

$ kubectl label пространство имен по умолчанию istio-injection = enabled

Теперь давайте развернем пример приложения BookInfo в этом пространстве имен. Из корневого каталога репутации Isitio, которую мы клонировали, запустите:

$ kubectl apply -f samples / bookinfo / platform / kube / bookinfo.ямл

Вы можете перечислить все запущенные поды здесь:

$ kubectl получить поды

Выберите любой контейнер и просмотрите его детали. Например, один из модулей приложения BookInfo в моем развертывании называется details-v1-6865b9b99d-6mxx9

$ kubectl describe pods / details-v1-6865b9b99d-6mxx9

В описании вы заметите, что модуль содержит два контейнера, первый из которых является компонентом фактического запуска графического приложения. Examples-bookinfo-details-v1: 1.8.0, а второй - istio-proxy, на котором запущено изображение gcr.io / istio-release / proxyv2: 1.0.0 .

Istio предлагает детальный контроль над вашей сервисной сеткой, потому что он внедряет эти контейнеры в те самые поды, где находятся ваши приложения. Это в сочетании с простым в использовании TLS для связи и точным контролем трафика - одна из многих причин, по которым большие приложения могут получить выгоду от такой сервисной сети, как Istio.

Рекомендации

Фактическая архитектура состоит из множества компонентов, таких как Pilot, Citadel и Mixer, каждый из которых выполняет свою важную роль. Вы можете узнать больше об этих компонентах здесь и попробовать развернуть свой собственный микросервис здесь.

Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...
Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...