4 причини да използвате Kubernetes

Сириш Рагхурам е съосновател и главен изпълнителен директор на Platform9 Systems.

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

Дотук добре. Но въпреки че API за изпълнение на контейнера са много подходящи за управление на отделни контейнери, те са крайно неадекватни, когато става въпрос за управление на приложения, които могат да включват стотици контейнери, разпределени в множество хостове. Контейнерите трябва да се управляват и да се свързват с външния свят за задачи като планиране, балансиране на натоварването и разпределение и тук инструментът за оркестрация на контейнери като Kubernetes се появява.

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

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

Свързано видео: Какво е Kubernetes?

В това 90-секундно видео научете за Kubernetes, системата с отворен код за автоматизиране на контейнерирани приложения, от един от изобретателите на технологията, Джо Беда, основател и технически директор в Heptio.

Инфраструктурна рамка за днес

В наши дни разработчиците са призовани да пишат приложения, които работят в множество операционни среди, включително специализирани on-prem сървъри, виртуализирани частни облаци и публични облаци като AWS и Azure. Традиционно приложенията и инструментите, които ги поддържат, са тясно свързани с основната инфраструктура, така че е скъпо да се използват други модели за внедряване въпреки потенциалните им предимства. Това означава, че приложенията стават зависими от определена среда в няколко отношения, включително проблеми с производителността, свързани със специфична мрежова архитектура; придържане към специфични за доставчика на облака конструкции, като патентовани техники за оркестрация; и зависимости от определена фонова система за съхранение.

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

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

По-добро управление чрез модулност

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

Но това не може да се постигне само с контейнери; изисква система за интегриране и оркестриране на тези модулни части. Kubernetes постига това отчасти с помощта на Pods - обикновено колекция от контейнери, които се контролират като едно приложение. Контейнерите споделят ресурси, като файлови системи, пространства от имена на ядрото и IP адрес. Чрез разрешаването на контейнери да бъдат събирани по този начин, Kubernetes премахва изкушението да натъпка твърде много функционалност в едно изображение на контейнер.

Концепцията за услуга в Kubernetes се използва за групиране на колекция от шушулки, които изпълняват подобна функция. Услугите могат лесно да бъдат конфигурирани за откриваемост, наблюдаемост, хоризонтално мащабиране и балансиране на товара.

Внедряване и актуализиране на софтуер в мащаб

Devops се появи като метод за ускоряване на процеса на изграждане, тестване и пускане на софтуер. Неговото последствие е изместване на акцента от управление на инфраструктурата към управление на начина, по който софтуерът се разгръща и актуализира в мащаб. Повечето инфраструктурни рамки не поддържат този модел, но Kubernetes го поддържа, отчасти чрез Kubernetes Controllers. Благодарение на контролерите е лесно да се използва инфраструктура за управление на жизнения цикъл на приложението.

Контролерът за внедряване опростява редица сложни задачи за управление. Например:

  • Мащабируемост. Софтуерът може да бъде внедрен за първи път по мащабен начин в Pods и внедряванията могат да бъдат мащабирани по всяко време.
  • Видимост. Идентифицирайте завършени, в процес и неуспешни внедрения с възможности за заявки за състояние.
  • Спестяване на време. Поставете поставяне на пауза по всяко време и го възобновете по-късно.
  • Контрол на версиите. Актуализирайте внедрените Pods, като използвате по-нови версии на изображенията на приложенията и се върнете към по-ранно разполагане, ако текущата версия не е стабилна.

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

  • Хоризонтално автоматично мащабиране. Автоматичните скалери на Kubernetes автоматично оразмеряват броя на подсистемите на разполагане въз основа на използването на определени ресурси (в рамките на определени граници).
  • Подвижни актуализации. Актуализациите на внедряването на Kubernetes се организират по „подвижен начин“, през подсистемите на разполагането. Тези подвижни актуализации се организират по време на работа с предварително дефинирани ограничения за броя на подсистемите, които могат да бъдат недостъпни, и броя на резервните подси, които могат да съществуват временно.
  • Канарски дислокации. Полезен модел при внедряване на нова версия на внедряване е първо да се тества новото внедряване в производство, паралелно с предишната версия, и да се мащабира новото внедряване, като същевременно се мащабира предишното разполагане.

За разлика от традиционните, всеобхватни PaaS предложения, Kubernetes предоставя широка широта за поддържаните видове приложения. Той не диктува рамки на приложения (като Wildfly), не ограничава поддържаните езикови изпълнения (Java, Python, Ruby), обслужва само 12-факторни приложения или разграничава „приложения“ от „услуги“. Kubernetes поддържа голямо разнообразие от натоварвания, включително натоварвания без гражданство, състояния и обработка на данни. Ако приложението може да се изпълнява в контейнер, то трябва да работи добре на Kubernetes.

Полагане на основата за приложения, които са родни в облака

Не е изненадващо, предвид интереса към контейнерите, се появиха други инструменти за управление и оркестрация. Популярните алтернативи включват Apache Mesos с маратон, Docker Swarm, AWS EC2 Container Service (ECS) и HashiCorp's Nomad.

Всеки има своите достойнства. Docker Swarm е свързан плътно с времето на изпълнение на Docker, така че потребителите могат лесно да преминат от Docker към Swarm; Mesos с Marathon не се ограничава до контейнери, но може да внедри всякакъв вид приложения; AWS ECS е по-лесен за достъп от настоящите потребители на AWS. Клъстерите Kubernetes обаче могат да работят на EC2 и да се интегрират с услуги като Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups и т.н.

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

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

Форумът New Tech предоставя място за изследване и обсъждане на нововъзникващите корпоративни технологии в безпрецедентна дълбочина и широчина. Изборът е субективен, базиран на нашия избор на технологиите, които смятаме, че са важни и представляват най-голям интерес за читателите. не приема маркетингово обезпечение за публикуване и си запазва правото да редактира цялото съдържание. Изпращайте всички запитвания на [email protected]