Blog IT, Blog Marketing

Czym jest Kubernetes

Czym jest Kubernetes

Marcin Sarna , 16.03.2021 r.

I dlaczego jest taki ważny dla uczenia maszynowego.

Sternik i kontenery

Jeśli śledzisz trendy technologiczne, naukę danych, sztuczną inteligencję czy uczenie maszynowe, prawdopodobnie natknąłeś się na termin Kubernetes (lub K8s). Stworzony przez Google Kubernetes to platforma do orkiestracji (koordynacji) kontenerów typu open source. Nazwa „Kubernetes” pochodzi z języka greckiego i oznacza „sternik” lub „kapitan”. Ale zanim zrozumiemy powód tych wszystkich odniesień morskich, musimy najpierw odpowiedzieć na pytanie: czym są kontenery?

Kontenery to pomysł, który eksplodował w 2013 roku wraz z utworzeniem Dockera. Ich stworzenie było motywowane wieloletnim problemem w tworzeniu oprogramowania - jak sprawić, aby oprogramowanie działało niezawodnie po przeniesieniu z jednego środowiska do drugiego. Takie środowiska mogą obejmować wszystko, od laptopów, serwerów w starym, dobrym, prywatnym centrum danych aż do maszyn wirtualnych w chmurze. Pakowanie aplikacji do kontenera oznacza, że efekt końcowy uruchomienia jej w dowolnym z tych środowisk będzie spójny (taki sam).

Jest to szczególnie ważne, ponieważ organizacje technologiczne odchodzą od monolitycznych wzorców architektury, takich jak architektura zorientowana na usługi (SOA), na rzecz bardziej luźno powiązanych podejść opartych na mikrousługach.

Potrzeba koordynatorów kontenerów

Kontenery rozwiązują dużą część problemu, ale nie są wystarczające, ponieważ są bardziej abstrakcją niż realnym bytem. Aby otrzymać działający produkt, nadal potrzebujemy środowiska wykonawczego kontenera - dodatkowej warstwy do koordynowania i przydzielania odpowiednich zasobów do działających kontenerów. Aby rozwiązać ten problem, ludzie z Docker stworzyli containerd, środowisko wykonawcze kontenera.

[cite]Dlaczego więc nie skorzystać z containerd?[cite] – pewnie się teraz pytasz sam siebie. Tak, możesz uruchomić maszynę wirtualną i użyć Dockera lub Docker Compose, aby uruchomić jeden lub więcej różnych kontenerów. Ale problem polega na tym, że w miarę jak architektury aplikacji stają się coraz bardziej złożone, musimy zarządzać takimi rzeczami, jak:
  • Niezawodność: nasza aplikacja musi spełniać standardy wydajności i zapewniać prawidłowe wyniki.
  • Dostępność: nasza aplikacja powinna być dostępna operacyjnie przez określony procent czasu.
  • Skalowalność: powinna istnieć możliwość płynnego skalowania w zależności od obciążenia pracą - najlepiej w sposób zautomatyzowany.
  • Ciągłe wdrażanie: chcemy wdrażać nasze zmiany w środowisku produkcyjnym w szybki, ciągły sposób, bez zakłócania istniejących wdrożeń.

Tutaj pojawia się Kubernetes.

Sprawdź oferty pracy na TeamQuest

Morskie opowieści

Wyobraź sobie, że w naszym porcie prowadzimy firmę transportową i musimy rutynowo wysyłać wiele kontenerów do jakiegoś innego portu. Jednym ze sposobów byłoby użycie prostego, małego statku, który jest w stanie przewieźć kilka kontenerów. Jest w stanie szybko się przemieszczać i bezproblemowo przewozić te kontenery. Ma jednak też ograniczenia: niską autonomię (spędzasz więcej czasu na tankowaniu), większą szansa na zatonięcie wraz z pojemnikami oraz małą wagę (może przewozić np. tylko dwa kontenery na raz). Jeśli zamiast tego zdecydujemy się wykorzystać większy, pełnoprawny statek towarowy do przenoszenia naszych kontenerów, możemy to zrobić w znacznie bardziej niezawodny i skalowalny sposób: większa autonomia (mniej czasu spędzonego na tankowaniu), mniejsze prawdopodobieństwo zatonięcia i duża skala (może przewozić jednocześnie setki kontenerów).

Cechy charakterystyczne

Kubernetes jest właśnie takim pełnoprawnym statkiem towarowym. Został stworzony przez Google z myślą o takich podstawowych funkcjach:

  1. Replikacja - wdrażanie wielu wystąpień aplikacji
  2. Równoważenie obciążenia i wykrywanie usług - aby kierować ruch do tych replikowanych kontenerów
  3. Podstawowa kontrola wydajności i naprawa - system „samoleczenia”
  4. Planowanie - aby grupować wiele maszyn w jedną pulę i przydzielić do nich pracę

Ostatnio firmy zaczęły zdawać sobie sprawę, że w uczeniu maszynowym badania i rozwój odgrywają ogromną rolę. Ale jeśli za mało czasu, budżetu i wysiłku poświęci się na właściwe zaprojektowanie i wdrożenie systemów uczenia maszynowego w niezawodny, dostępny, wykrywalny i wydajny sposób, uzyskanie wszystkich korzyści staje się wyzwaniem. W myśleniu o systemach uczenia maszynowego z nastawieniem inżynieryjnym Kubernetes jawi się jako dobre rozwiązanie, aby sprostać tym wyzwaniom związanym z niezawodnością, dostępnością i czasem wejścia na rynek. Kubernetes zwiększa szanse, że system uczenia maszynowego zapewni oczekiwaną przez ich twórców wartość. Jednak konceptualizacja i wdrażanie architektury Kubernetes nie odbywa się z dnia na dzień, a zarządzanie klastrami Kubernetes wiąże się z dodatkowymi obowiązkami, w zakresie zarządzania, bezpieczeństwa, wsparcia, konserwacji i kosztów.

A o klastrze Kubernetes z Raspberry Pi czytaliście?

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej