Кубернети

Kubernetes Service Mesh

Kubernetes Service Mesh
Kubernetes има много видове ресурси, които ви помагат да абстрахирате идеята за услуги или микроуслуги. Например, ако интерфейсът на приложението ви иска да взаимодейства с бекенда, не е необходимо да се интересува от коя подсистема търси или дори от кой IP адрес се надява, че дадена задна база ще заеме. Подс се излагат чрез услуга. (Ако сте нов за Kubernetes, препоръчвам тази публикация, за да разберете по-добре какво представляват шушулките заедно с други важни концепции.)

По същество Kubernetes излага a бекенд услуга вътрешно в рамките на клъстера и интерфейсът взаимодейства с тази услуга. Шушулките, които предлагат услугата, могат много добре да бъдат заменени и никой не би забелязал нищо. Но с нарастването на функциите във вашите приложения нараства и броят на услугите, които трябва да поддържате. Всяка услуга може потенциално да разговаря с всяка друга услуга в клъстера и получената мрежа се нарича като Сервизна мрежа.

Има много добавки за Kubernetes, които ни помагат да опростим управлението на тази услуга 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, балансиране на натоварването или някакъв друг аспект като откриване на услуга. Идеалната услуга 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 се прилага -f install / kubernetes / helm / istio / templates / crds.ямъл

Това може да влезе в сила след няколко секунди и след като приключи, вашият kube-apiserver ще има вградени разширения на Istio. Оттук нататък опциите за инсталиране варират в зависимост от това дали използвате това за производствени цели или ако експериментирате с него в собствената си изолирана среда.

Ще приемем, че това е така и ще инсталираме istio без TLS удостоверяване.

$ kubectl се прилага -f install / kubernetes / istio-demo.ямъл

Това ще създаде нова система от имена istio-система, където ще бъдат инсталирани всички различни компоненти като istio-pilot и входен шлюз.

Внедряване на приложения и инжектор Istio

Тук идва полезността на Istio. Istio добавя прокси сървъри към вашите услуги и това се прави, без да се променя действителният код на вашето приложение. Ако е активирана автоматична инжекционна инжекторна машина. Можете да маркирате пространство от имена с istio-injection = enabled и когато приложението ви е разположено в това пространство от имена, самите подсистеми ще имат специализирани контейнери на Envoy заедно с контейнерите за основното приложение. Например, нека обозначим пространството от имена по подразбиране

$ kubectl пространство за имена по подразбиране istio-injection = активирано

Сега нека разположим примерното приложение BookInfo в това пространство от имена. От основната директория на Isitio rep, която клонирахме, стартирайте:

$ kubectl се прилага -f проби / bookinfo / платформа / kube / bookinfo.ямъл

Можете да изброите всички шушулки, работещи тук:

$ kubectl вземете шушулки

Изберете която и да е шушулка от тези и вижте нейните подробности. Например един от шушулките от приложението BookInfo в моето внедряване е наречен details-v1-6865b9b99d-6mxx9

$ kubectl описва шушулки / подробности-v1-6865b9b99d-6mxx9

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

Istio предлага фин зърнен контрол върху вашата мрежа за услуги, защото инжектира тези контейнери до самите шушулки, където се намират вашите приложения. Това в комбинация с лесен за използване TLS за комуникация и фино контролиран трафик е една от многото причини, поради които големите приложения могат да се възползват от услуга мрежа като Istio.

Препратки

Действителната архитектура има много компоненти като Pilot, Citadel и Mixer, всеки със своята важна роля за изпълнение. Можете да научите много повече за тези компоненти тук и да се опитате да внедрите своя собствена микрослужба тук.

Как да инсталирате League Of Legends на Ubuntu 14.04
Ако сте фен на League of Legends, това е възможност за вас да тествате League of Legends. Имайте предвид, че LOL се поддържа на PlayOnLinux, ако сте п...
Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...
Инсталирайте най-новия Dolphin Emulator за Gamecube & Wii на Linux
Dolphin Emulator ви позволява да играете избраните от вас игри Gamecube & Wii на Linux Personal Computers (PC). Като безплатно достъпен и емулатор на...