4 powody, dla których powinieneś używać Kubernetes

Sirish Raghuram jest współzałożycielem i CEO Platform9 Systems.

Jak może zaświadczyć większość współczesnych programistów, kontenery zapewniły nam znacznie większą elastyczność w uruchamianiu aplikacji natywnych dla chmury w infrastrukturze fizycznej i wirtualnej. Kontenery łączą usługi składające się z aplikacji i sprawiają, że są one przenośne w różnych środowiskach obliczeniowych, zarówno do użytku deweloperskiego / testowego, jak i produkcyjnego. Dzięki kontenerom łatwo jest szybko rampować wystąpienia aplikacji, aby dopasować je do skoków popytu. A ponieważ kontenery korzystają z zasobów systemu operacyjnego hosta, są znacznie lżejsze niż maszyny wirtualne. Oznacza to, że kontenery bardzo wydajnie wykorzystują podstawową infrastrukturę serwera.

Jak na razie dobrze. Ale chociaż interfejsy API środowiska wykonawczego kontenerów są dobrze dostosowane do zarządzania pojedynczymi kontenerami, są żałośnie nieodpowiednie, jeśli chodzi o zarządzanie aplikacjami, które mogą składać się z setek kontenerów rozmieszczonych na wielu hostach. Kontenery muszą być zarządzane i połączone ze światem zewnętrznym w celu wykonywania zadań, takich jak planowanie, równoważenie obciążenia i dystrybucja, i tutaj właśnie pojawia się narzędzie do orkiestracji kontenerów, takie jak Kubernetes.

Kubernetes jest systemem open source do wdrażania, skalowania i zarządzania aplikacjami kontenerowymi. Kubernetes obsługuje planowanie kontenerów w klastrze obliczeniowym i zarządza obciążeniami, aby zapewnić ich działanie zgodnie z zamierzeniami użytkownika. Zamiast skupiać się na operacjach po namyśle, Kubernetes łączy rozwój oprogramowania i operacje zgodnie z projektem. Korzystając z deklaratywnych, niezależnych od infrastruktury konstrukcji w celu opisania sposobu tworzenia aplikacji, ich interakcji i zarządzania nimi, Kubernetes umożliwia zwiększenie o rząd wielkości operatywności nowoczesnych systemów oprogramowania.

Kubernetes został zbudowany przez Google na podstawie własnego doświadczenia z obsługą kontenerów w środowisku produkcyjnym iz pewnością wiele zawdzięcza swojemu zaangażowaniu Google. Google ma jednych z najbardziej utalentowanych programistów na świecie i obsługuje jedne z największych usług oprogramowania według skali. To połączenie zapewniło, że Kubernetes stał się solidną platformą, która może sprostać potrzebom skalowania praktycznie każdej organizacji. W tym artykule wyjaśniono, dlaczego Kubernetes jest ważny i dlaczego jest znaczącym krokiem naprzód dla zespołów deweloperskich.

Powiązane wideo: Co to jest Kubernetes?

W tym 90-sekundowym filmie dowiesz się o Kubernetes, systemie open source do automatyzacji aplikacji kontenerowych, od jednego z wynalazców tej technologii, Joe Bedy, założyciela i dyrektora ds. Technologii w Heptio.

Ramy infrastruktury na dziś

Obecnie programiści są proszeni o pisanie aplikacji działających w wielu środowiskach operacyjnych, w tym na dedykowanych serwerach lokalnych, zwirtualizowanych chmurach prywatnych i chmurach publicznych, takich jak AWS i Azure. Tradycyjnie aplikacje i obsługujące je narzędzia były ściśle powiązane z podstawową infrastrukturą, więc korzystanie z innych modeli wdrażania było kosztowne, pomimo ich potencjalnych zalet. Oznaczało to, że aplikacje stały się zależne od określonego środowiska pod kilkoma względami, w tym z kwestiami wydajności związanymi z określoną architekturą sieci; przestrzeganie konstrukcji specyficznych dla dostawcy usług w chmurze, takich jak zastrzeżone techniki orkiestracji; i zależności od konkretnego systemu pamięci masowej zaplecza.

PaaS próbuje obejść te problemy, ale często kosztem narzucania surowych wymagań w takich obszarach, jak języki programowania i struktury aplikacji. Dlatego PaaS jest niedostępny dla wielu zespołów programistycznych.

Kubernetes eliminuje uzależnienie infrastruktury, zapewniając podstawowe funkcje dla kontenerów bez nakładania ograniczeń. Osiąga to dzięki połączeniu funkcji platformy Kubernetes, w tym podów i usług.

Lepsze zarządzanie dzięki modułowości

Pojemniki pozwalają na rozkładanie aplikacji na mniejsze części z wyraźnym oddzieleniem problemów. Warstwa abstrakcji zapewniana dla pojedynczego obrazu kontenera pozwala nam gruntownie przemyśleć sposób budowania aplikacji rozproszonych. To modułowe podejście umożliwia szybszy rozwój przez mniejsze, bardziej skoncentrowane zespoły, z których każdy jest odpowiedzialny za określone kontenery. Pozwala nam również izolować zależności i szerzej wykorzystywać dobrze dostrojone, mniejsze komponenty.

Ale tego nie da się osiągnąć za pomocą samych kontenerów; wymaga systemu do integracji i orkiestracji tych modułowych części. Kubernetes osiąga to częściowo za pomocą Podów - zwykle kolekcji kontenerów, które są kontrolowane jako pojedyncza aplikacja. Kontenery współużytkują zasoby, takie jak systemy plików, przestrzenie nazw jądra i adres IP. Umożliwiając kolokację kontenerów w ten sposób, Kubernetes eliminuje pokusę upychania zbyt wielu funkcji w jednym obrazie kontenera.

Koncepcja usługi w Kubernetes służy do grupowania kolekcji Podów, które pełnią podobną funkcję. Usługi można łatwo skonfigurować pod kątem wykrywalności, obserwowalności, skalowania poziomego i równoważenia obciążenia.

Wdrażanie i aktualizowanie oprogramowania na dużą skalę

Devops pojawił się jako metoda przyspieszania procesu tworzenia, testowania i wydawania oprogramowania. Konsekwencją tego było przesunięcie nacisku z zarządzania infrastrukturą na zarządzanie sposobem wdrażania i aktualizowania oprogramowania na dużą skalę. Większość struktur infrastruktury nie obsługuje tego modelu, ale Kubernetes to robi, częściowo za pośrednictwem kontrolerów Kubernetes. Dzięki kontrolerom infrastruktura do zarządzania cyklem życia aplikacji jest łatwa w użyciu.

Kontroler wdrażania upraszcza szereg złożonych zadań zarządzania. Na przykład:

  • Skalowalność. Oprogramowanie można wdrożyć po raz pierwszy w sposób skalowalny w podach, a wdrożenia można skalować w poziomie lub wszerz w dowolnym momencie.
  • Widoczność. Identyfikuj ukończone, trwające i zakończone niepowodzeniem wdrożenia, korzystając z funkcji sprawdzania stanu.
  • Oszczędność czasu. Wstrzymaj wdrożenie w dowolnym momencie i wznów je później.
  • Kontrola wersji. Zaktualizuj wdrożone pody, używając nowszych wersji obrazów aplikacji i przywróć wcześniejsze wdrożenie, jeśli bieżąca wersja nie jest stabilna.

Kubernetes upraszcza między innymi kilka konkretnych operacji wdrażania, które są szczególnie cenne dla programistów nowoczesnych aplikacji. Należą do nich:

  • Poziome autoskalowanie. Autoskalery Kubernetes automatycznie dopasowują liczbę podów we wdrożeniu na podstawie wykorzystania określonych zasobów (w ramach zdefiniowanych limitów).
  • Aktualizacje kroczące. Aktualizacje wdrożenia Kubernetes są organizowane w sposób „kroczący” we wszystkich podach wdrożenia. Te aktualizacje kroczące są organizowane podczas pracy z opcjonalnymi predefiniowanymi ograniczeniami liczby podów, które mogą być niedostępne, oraz liczby zapasowych podów, które mogą istnieć tymczasowo.
  • Wdrożenia kanaryjskie. Przydatnym wzorcem podczas wdrażania nowej wersji wdrożenia jest najpierw przetestowanie nowego wdrożenia w środowisku produkcyjnym, równolegle z poprzednią wersją, i skalowanie w górę nowego wdrożenia przy jednoczesnym skalowaniu w dół poprzedniego wdrożenia.

W przeciwieństwie do tradycyjnych, kompleksowych ofert PaaS, Kubernetes zapewnia dużą swobodę dla typów obsługiwanych aplikacji. Nie narzuca struktur aplikacji (takich jak Wildfly), nie ogranicza obsługiwanych środowisk wykonawczych języków (Java, Python, Ruby), obsługuje tylko aplikacje 12-czynnikowe ani nie odróżnia „aplikacji” od „usług”. Kubernetes obsługuje szeroką gamę obciążeń, w tym obciążenia bezstanowe, stanowe i przetwarzania danych. Jeśli aplikacja może działać w kontenerze, powinna działać dobrze na Kubernetes.

Tworzenie podstaw dla aplikacji natywnych dla chmury

Nic dziwnego, biorąc pod uwagę zainteresowanie kontenerami, pojawiły się inne narzędzia do zarządzania i orkiestracji. Popularne alternatywy obejmują Apache Mesos with Marathon, Docker Swarm, AWS EC2 Container Service (ECS) i HashiCorp's Nomad.

Każdy ma swoje zalety. Docker Swarm jest ściśle powiązany ze środowiskiem wykonawczym Docker, dzięki czemu użytkownicy mogą łatwo przechodzić z Docker do Swarm; Mesos with Marathon nie ogranicza się do kontenerów, ale może wdrażać dowolne aplikacje; Dostęp do AWS ECS jest łatwiejszy dla obecnych użytkowników AWS. Klastry Kubernetes mogą jednak działać na EC2 i integrować się z usługami, takimi jak Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups i tak dalej.

Te frameworki zaczynają się powielać pod względem funkcji i funkcjonalności, ale Kubernetes pozostaje niezwykle popularny ze względu na swoją architekturę, innowacje i dużą społeczność open source wokół niego.

Kubernetes to przełom dla deweloperów, ponieważ pozwala zespołom dotrzymać kroku wymaganiom nowoczesnego tworzenia oprogramowania. W przypadku braku Kubernetes zespoły często były zmuszane do tworzenia własnych skryptów wdrażania oprogramowania, skalowania i aktualizowania przepływów pracy. Niektóre organizacje zatrudniają duże zespoły do ​​samodzielnego wykonywania tych zadań. Kubernetes pozwala nam czerpać maksymalną użyteczność z kontenerów i tworzyć aplikacje natywne dla chmury, które mogą działać w dowolnym miejscu, niezależnie od wymagań specyficznych dla chmury. Jest to wyraźnie efektywny model tworzenia aplikacji i operacji, na który czekaliśmy.

New Tech Forum to miejsce, w którym można badać i omawiać pojawiające się technologie dla przedsiębiorstw na niespotykaną dotąd skalę i dogłębnie. Wybór jest subiektywny, oparty na naszym wyborze technologii, które uważamy za ważne i najbardziej interesujące dla czytelników. nie przyjmuje marketingowych materiałów reklamowych do publikacji i zastrzega sobie prawo do edycji wszystkich przesłanych treści. Wszelkie zapytania należy kierować na adres [email protected]