Коя оркестрация на контейнери е най-добра за вас?

Много възможности за избор се предоставят на екипите за информационни технологии (ИТ) при изпълнение на контейнерни приложения, като се обръща внимание на всички нива на технически опит.

Може да е трудно да изберете един, като се има предвид, че след като направите своя избор, вероятно скоро няма да мигрирате към друга опция.

Тази публикация противопоставя две важни опции: Amazon Elastic Container Service (ECS) и Kubernetes.

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

Въпреки че основната цел за използването на контейнери е да се опрости процеса на внедряване на код, управлението на хиляди от тях става все по-голямо предизвикателство. Необходим е друг механизъм за внедряване на високонадеждни внедрявания, мащабиране на приложения според натоварването, смяна на нездравословни контейнери с нови, балансиране на натоварването и излагане на портове.

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

Тази част сравнява ECS и Kubernetes, като подчертава предимствата на всеки от тях и завършва с насока за избор на правилния въз основа на вашия проект.

Какво е Amazon ECS?

Amazon ECS е услуга за оркестриране на контейнери, която рационализира внедряването, управлението и мащабирането на контейнерни приложения. По принцип вие определяте вашето приложение и необходимите му ресурси. След това Amazon ECS стартира, наблюдава и мащабира вашето приложение в различни изчислителни опции, като същевременно позволява интегрирането на други необходими AWS услуги. Например, можете да проверите състоянието и да промените вашите клъстери програмно.

ECS ви позволява да разположите вашите приложения чрез група сървъри, наречени клъстери, като използвате дефиниции на задачи и извиквания на интерфейси на приложни програми (API).

Прочетете също: Какви инстанции на AWS EC2 трябва да използвате?

Предимства на Amazon ECS

  • Традиционен ECS – Тази версия беше пусната през 2015 г. и се захранва от Amazon EC2 за лесно стартиране на Dockers контейнери в облака. Традиционният ECS ви дава основен контрол върху опциите EC2, което позволява гъвкавост. Това означава, че вие ​​избирате типовете инстанции, които искате да изпълнявате във вашия контейнер. Моделът допълнително ви свързва с други услуги на AWS, които можете да използвате, за да наблюдавате и регистрирате дейността на екземплярите на EC2.
  • Fargate ECS – Издаден през 2017 г. за стартиране на контейнери без необходимост от управление на базовите изчислителни опции EC2. Fargate използва различен подход, като изчислява необходимия процесор и памет. Ако искате бързо да стартирате работните натоварвания, това може да е най-добрият ви вариант, тъй като няма да се налага да се притеснявате за основните изчислителни опции.
  • Опростени архитектури на приложения – ECS е добър вариант за приложения с малко микроуслуги (тези с малко външни зависимости или с няколко движещи се части), работещи независимо.
  • Лесно наблюдение и регистриране – Можете лесно да интегрирате ECS с инструменти за регистриране и наблюдение на AWS като CloudWatch. Не е необходимо да конфигурирате видимостта в работните натоварвания на контейнера, което ви спестява време.
  • Лесна крива на обучение – ECS е лесен за научаване. Хостваният Kubernetes набира все по-голяма популярност от традиционните модели като KOPS flavors и Kubeadm.
  • Инфраструктура без сървър – ECS ви позволява да стартирате контейнери без необходимост от управление на виртуални машини; разполага контейнери без човешка намеса.
  • Вградена сигурност – По подразбиране Amazon ECS е защитена и каскадира мерките за сигурност чрез изолиран мрежов механизъм за виртуален частен облак.
  •   Получете сигнал, когато игра на Nintendo Switch е в продажба

    Ограничения на ECS

  • Ограничено хранилище – Външното хранилище е изключително ограничено до Amazon, до Amazon EBS.
  • Ограничения при валидиране – ECS е базиран на Amazon продукт, поради което не е наличен за публично внедряване извън Amazon.
  • Заключване на доставчика – ECS е предубеден; може да управлява само своите създадени контейнери.
  • Недостъпност на ECS код – голяма част от ECS кода не е публично достъпен. Инструменти като AWS Blox (рамка за изграждане на персонализирани планировчици) имат много малка част от кодовите си бази с отворен код.
  • Какво е Kubernetes?

    Kubernetes, обикновено наричан K8s, е софтуер с отворен код за автоматизиране на внедряването, мащабирането и администрирането на приложения в контейнери.

    Възползвайки се от 15-годишен опит в управлението на производствени натоварвания на Google (комбинирайки най-добрите идеи и практики на общността), K8s групира вашите контейнери за приложения в логически единици, които можете лесно да откривате и управлявате.

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

    Прочетете също: Първи стъпки с Kubernetes: Въведение за начинаещи

    Предимства на Kubernetes

  • Отворен код (без заключване на доставчика) – Независимо дали работите на място или в облака, можете да използвате Kubernetes, без да преархитектирате стратегията за оркестрация. За разлика от традиционния софтуер, който налага известни лицензионни такси, K8s е безплатен и с отворен код. Сякаш това не е достатъчно, K8s клъстерите работят в публични и частни облаци, предоставяйки ресурси за виртуализация и на двата обекта.
  • Гъвкавост с висока мощност – K8s е чудесно решение, ако вашите приложения се нуждаят от висока наличност, като същевременно поддържат ефективност и скалируемост. Тази черта е тактически полезна в приложения, генериращи високи приходи. Просто казано, това е детайлен контрол върху натоварванията ви. В случаите, когато искате да превключите вашите приложения към по-мощни платформи, K8s не се ограничава до блокиране на доставчици като ECS.
  • Висока наличност – Както беше споменато по-горе, дизайнът на K8s е насочен да осигурява наличността на приложенията и тяхната необходима инфраструктура, което го прави необходима характеристика за контейнери в процес на производство. При висока наличност има няколко техники:
    • Проверки на здравето и самолечение – Kubernetes предпазва вашите приложения от повреди чрез редовни проверки на възли. Ако капсула или контейнер е смачкан поради грешка, K8s автоматично се възползва от замяна.
    • Балансиране на натоварването и маршрутизиране на трафика – По отношение на маршрутизирането на трафика, K8s ще изпраща заявки само до съответните контейнери. И с балансиране на натоварването, K8s разпределя натоварванията между модули, балансирайки вашите ресурси за няколко случая като прекъсвания, случаен пиков трафик или групова обработка. Отново можете да използвате и външни балансьори на натоварването, ако желаете.
  • Мащабируемост на работното натоварване – Въпреки че е споменато по-горе, нека го разбием по-подробно. K8s използва ресурсите си, за да осигури ефективно мащабиране при следните критерии.
    • Автоматично мащабиране – Тази функция ви позволява автоматично да регулирате броя на работещите контейнери според използването на CPU и други показатели на CPU.
    • Ръчно мащабиране – С помощта на тази функция можете да мащабирате броя на работещите контейнери чрез командния ред или интерфейс.
    • Контролер за репликация – Този инструмент ви позволява да определите броя на подовете, които отговарят на спецификацията на вашия клъстер; ако са малко, започва нови, а ако са твърде много, ги прекратява.
      Как да инсталирате Ubuntu Core на Raspberry Pi
  • Проектиран за внедряване – K8s е специално проектиран да ускори процеса на изграждане, тестване и доставка на софтуер. Ето някои от предлаганите функции:
    • Автоматизирани връщания назад и пускания – може да искате да пуснете някои нови конфигурации или актуализации на приложения по време на разработката. K8s ви позволява да задействате процеса без прекъсване на приложението. В случай на повреда, K8s автоматично се връща към предишната версия.
    • Внедрявания на Canary – Можете да се възползвате от тази функция, като тествате нови внедрявания в производството успоредно с предишната версия; K8s ви позволява да намалите последната версия на приложението, като същевременно увеличавате най-новата версия.
    • Разнообразна поддръжка за езици и рамки за програмиране – Независимо дали идвате от фона на езика за програмиране Go, Java или .Net, Kubernetes поддържа много езици и рамки за разработка. Ако дадено приложение може да работи на контейнер, то работи на K8s.
  • Откриване на услуги – Всеки разработчик желае всички предоставяни услуги да имат начин за комуникация помежду си. Операционният модел K8s обаче включва създаване и унищожаване на контейнери непрекъснато, което прави някои услуги несъществуващи на определени места. При традиционното развитие регистърът на услугите ще бъде адаптиран за проследяване на местоположението на тези услуги. K8s решава този проблем чрез собствена концепция за услуги за групиране на модули и безпроблемно откриване на услуги. И така, K8s предоставя IP адреси за всички подове, разпределя DNS имена за всеки набор от поди и след това балансира трафика на натоварване на всеки набор от подове. Тази архитектура генерира среда, в която откриването на услуги се абстрахира от всеки контейнер.
  • Оживена общност – K8s е подкрепен от оживена общност с хиляди разработчици, използващи нейните услуги. Към момента на писане над 100 милиона разработчици използват K8s за откриване, допринасяйки за 330 милиона проекта. Общността не показва признаци на забавяне и насърчава сътрудничеството между разработчиците.
  • Ограничения на Kubernetes

  • Стръмна крива на обучение – За да започнете с Kubernetes, ще трябва да разберете неговия пейзаж. Освен това предоставянето на решение от край до край изисква включването на различни технологии и услуги. И тъй като допълнителните технологии варират значително (понякога някои решения датират от доминирания UNIX, докато други са нови технологии с ниско възприемане), измислянето кои от тях да се включат може да бъде забързано. Трябва също така да разберете как всички компоненти си пасват, за да осигурите по-цялостно решение за определени проблеми. Документацията е налична, но ще трябва да разберете как да предоставяте и управлявате тези услуги.
  • Разграничаване на функции и проекти – Разбирането на разликите между проекти и функции може да бъде предизвикателство. Въпреки че можете лесно да получите съвет относно управлението на проекти, може да не получите ясна разлика между функции и проекти на общността.
  • Знания отвъд Kubernetes – Kubernetes е сложна платформа. С цялата тази сложност при предоставянето на решения, вероятно ще срещнете известно объркване, особено ако сте нов в това. И все пак организациите все още искат да предоставят решения (като хранилища за данни като услуга), усилващи кривата на обучение. Ако използвате такива услуги за вашия продукт, трябва да разширите познанията си извън Kubernetes.
  • Управлението на Kubernetes е трудно – стигането до производство с K8s е едно нещо. Ще трябва да предоставите всички необходими ресурси за вашите приложения, за да го управлявате. Вие също ще трябва да се справите с цялата сигурност и да я интегрирате с вашата инфраструктура. Освен това ще ви е необходим експертен опит на високо ниво, за да обработвате и управлявате ефективно неговите инструменти. Ще трябва да получите задълбочени познания, за да управлявате клъстери на Kubernetes, да наблюдавате и отстранявате неизправности в клъстери и да ги поддържате в мащаб.
  •   Увеличете игровото си изживяване с тези 9 бюджетни компютри и лаптопи

    Сравняване на ECS и Kubernetes

    Ето паралелно сравнение, показващо разликите:

    Точка на разликата KubernetesAmazon ECSAдефиниция на приложение Приложенията се внедряват чрез комбиниране на подове, възли и услуги. Внедряването на приложения е под формата на задачи. Задачите са контейнерни екземпляри – например Docker контейнери, работещи на ECS екземпляри. DeploymentComplex, тъй като трябва да разположите и конфигурирате клъстери ръчно. Лесно внедряване чрез AWS конзолата. Поддръжка на възли (брой машини) 5000 възела на клъстер. 1000 възела на клъстер .Контейнери До 300 000 контейнера на клъстер. Ограничено от капацитета на използваната инфраструктура. Балансиране на натоварването. Подовете са изложени чрез услуги, използвани като балансьори на натоварването зад входните контролери. Налични са два балансира на натоварването; ELB-Application или Network.PricingFree.ECS е безплатен, но трябва да платите за EC2 ресурси. Оптимизация Добре оптимизиран за един голям клъстер. Предварително конфигуриран с изисквания и изисквания за контейнер. Автоматично мащабиране Вие дефинирате параметри за автоматично мащабиране при изграждане на внедрявания. Използвате услуги за мониторинг като CloudWatch за автоматично мащабиране въз основа на процесора, паметта и персонализираните параметри. Проверка на състоянието Налични са две проверки на състоянието: готовност и жизнеспособност. Постига се чрез услуги за мониторинг като CloudWatch. Откриване на услуги, въведено чрез променливи на средата или DNS. Постига се чрез услуги за мониторинг – CloudWatch.Vendor-lock inNo.Yes.

    Случаи на използване на ECS и Kubernetes

    Ето как технологията за контейнеризация ECS и Kubernetes революционизира индустриите:

    ECS INC International подчертава множество случаи на употреба, при които технологията ECS е внедрена. В съвременните медицински устройства ще намерите революционизирани методи за лечение на пациенти и техники за доставяне на лекарства. Съществуват много инструменти, като електронни инхалатори, медицински автоинжектори и инфузионни помпи.

    В домейна на IoT имаме интелигентни домашни устройства. Ако насочите вниманието си към автомобилната индустрия, ние имаме интелигентни електрически автомобили с подобрено изживяване при шофиране и подобрени мерки за безопасност като системи за подпомагане на спирането.

    Засега това е върхът на айсберга; можете да разгледате повече приложения на ECS, които не се ограничават до безжични технологии, носими устройства и случаи на промишлена употреба.

    От друга страна, Kubernetes има своя дял от практически приложения. Първо, облакът на IBM предлага частни, публични и хибридни функционалности в широк обхват от времена за изпълнение.

    Spotify, гигант в областта на музикалния стрийминг, използва технологията Kubernetes, за да улесни безпроблемните операции, до 10 милиона заявки в секунда. Въпреки че това са случаи на употреба в реалния свят, K8s обслужва повече функционалности в архитектурата на микроуслугите, мрежови функции в облака, машинно обучение и завъртане на жизнения цикъл на разработка на софтуер.

    Заключителни думи

    След като сте преминали през това ръководство, имате солиден преглед на предимствата и недостатъците на избора на ECS или K8s. Ключът към избора на правилната опция се основава на няколко аргумента. Ще трябва да прецените между разходите, ограниченията на услугите и разходите за таланти.

    Ако искате да използвате безплатна услуга, K8s ще бъде вашият избор номер едно. Въпреки това ще ви трябва солиден талант или умения, за да се справите със сложността, която идва с това. Въпреки че K8s няма ограничения за заключване на доставчика, това ще изисква задълбочено разбиране на това как работи платформата. ECS, от друга страна, получи бързи конфигурации.

    След това вижте подробното ръководство за Kubernetes срещу Docker.