Kubernetes vs. Docker: poznaj kontenery i orkiestrację

Jeśli nadążasz za najnowszymi trendami w rozwoju oprogramowania, są dwa terminy, z którymi niewątpliwie wielokrotnie się zetknąłeś: Docker i Kubernetes, które są zasadniczo skrótami dla  kontenerów  i  orkiestracji .

Kontenery Docker pomogły usprawnić proces przenoszenia aplikacji przez programowanie i testowanie oraz do produkcji, podczas gdy zarówno Docker, jak i Kubernetes pomogły odkryć na nowo sposób budowania i wdrażania aplikacji - jako zbiory mikrousług zamiast monolitycznych stosów.

Dlaczego Docker i Kubernetes są ważne, w jaki sposób zmieniają rozwój oprogramowania i jaką rolę odgrywają w tym procesie? Spróbuję odpowiedzieć na te pytania poniżej.

Docker i kontenery

Kontenery - obsługiwane w systemach Linux, Windows i innych nowoczesnych systemach operacyjnych - umożliwiają uruchamianie oprogramowania w samodzielnych mini-środowiskach, które są odizolowane od reszty systemu. Kontenery są porównywane do maszyn wirtualnych, ale nie są to maszyny wirtualne - są znacznie prostsze, szybsze w uruchamianiu i zatrzymywaniu oraz znacznie bardziej elastyczne i przenośne. Ponieważ kontenery można obracać w górę lub w dół lub skalować w górę lub w dół w ciągu kilku sekund, ułatwiają uruchamianie aplikacji w elastycznych środowiskach, takich jak chmura. 

Linux i inne systemy operacyjne od wielu lat obsługują aplikacje kontenerowe, ale praca z kontenerami nie była zbyt przyjazna dla użytkownika. Docker, zarówno w wersji open source, jak i komercyjnej, jest oprogramowaniem, które sprawia, że ​​kontenery są towarem przyjaznym dla użytkownika i dewelopera. Docker zapewnia wspólny zestaw narzędzi i metafor dla kontenerów, dzięki czemu można spakować aplikacje w obrazy kontenerów, które można łatwo wdrożyć i ponownie wykorzystać we własnej organizacji lub w innym miejscu.

Krótko mówiąc, Docker sprawia, że ​​tworzenie obrazów kontenerów, ich wersjonowanie, udostępnianie, przenoszenie i wdrażanie ich na hostach zgodnych z Docker jest bardzo proste.

Kiedy używać platformy Docker i kontenerów?

Docker i kontenery najlepiej nadają się do pracy z obciążeniami, które muszą mieć co najmniej jedną z następujących cech:

  • Elastyczna skalowalność.  Nie wiesz, ile wystąpień aplikacji musisz uruchomić, aby sprostać zapotrzebowaniu. Konteneryzowaną aplikację lub usługę można skalować, aby sprostać zapotrzebowaniu, wdrażając mniej lub więcej wystąpień jej kontenerów.
  • Izolacja.  Nie chcesz, aby aplikacja kolidowała z innymi aplikacjami. Może będziesz uruchamiać wiele wersji aplikacji obok siebie, aby zaspokoić różne wersje interfejsu API. A może chcesz, aby podstawowy system był czysty (zawsze dobry pomysł).
  • Ruchliwość.  Musisz uruchomić tę aplikację w różnych środowiskach i chcesz, aby każda konfiguracja była powtarzalna. Kontenery pozwalają spakować całe środowisko wykonawcze aplikacji, dzięki czemu aplikacja jest łatwa do wdrożenia wszędzie tam, gdzie znajdziesz hosta kompatybilnego z Dockerem - pulpit programisty, maszyna testowa QA, lokalne żelazko lub zdalna chmura.

Dowiedz się więcej o platformie Docker i kontenerach

  • Co to jest Docker? Iskra rewolucji kontenerowej
  • Dlaczego warto używać Dockera i kontenerów
  • Zacznij korzystać z Dockera
  • Ukryte korzyści Dockera do kontroli jakości
  • 12 narzędzi open source, dzięki którym Docker jest lepszy
  • Więcej wiadomości, analiz, instrukcji, recenzji i porad dotyczących platformy Docker

Kubernetes i orkiestracja kontenerów

Kontenery są zaprojektowane głównie w celu odizolowania procesów lub aplikacji od siebie i systemu bazowego. Tworzenie i wdrażanie pojedynczych kontenerów jest łatwe. Ale co, jeśli chcesz złożyć wiele kontenerów - powiedzmy, bazę danych, interfejs sieciowy, zaplecze obliczeniowe - w dużą aplikację, którą można zarządzać jako całość, bez martwienia się o wdrażanie, łączenie, zarządzanie, i skalowanie każdego z tych kontenerów oddzielnie? Potrzebujesz sposobu na  zorganizowanie  wszystkich części w funkcjonalną całość.

To zadanie, które podejmuje Kubernetes. Jeśli kontenery są pasażerami rejsu, Kubernetes jest dyrektorem rejsu.

Kubernetes, oparty na projektach utworzonych w Google, zapewnia sposób na zautomatyzowanie wdrażania i zarządzania aplikacjami wielokontenerowymi na wielu hostach, bez konieczności bezpośredniego zarządzania każdym kontenerem. Deweloper opisuje układ aplikacji w wielu kontenerach, w tym szczegóły, takie jak sposób korzystania z sieci i magazynu przez każdy kontener. Kubernetes obsługuje resztę w czasie wykonywania. Obsługuje również zarządzanie skomplikowanymi szczegółami, takimi jak sekrety i konfiguracje aplikacji.

Kubernetes wymaga pewnej wiedzy, aby dobrze go używać, chociaż jest to o wiele bardziej gotowe rozwiązanie niż kiedyś. Pewien postęp w łatwości użytkowania wynika z łatwo dostępnych receptur dla typowych zastosowań (wykresy Helm); część jest wynikiem bogactwa dystrybucji Kubernetes produkowanych przez znane marki (Red Hat, Canonical, Docker), które współpracują ramię w ramię z popularnymi stosami aplikacji i frameworkami programistycznymi.

Kiedy używać Kubernetes i orkiestracji kontenerów?

Proste aplikacje kontenerowe, które obsługują niewielką liczbę użytkowników, zazwyczaj nie wymagają orkiestracji, nie mówiąc już o Kubernetes. Ale jeśli aplikacja ma więcej niż trywialny poziom funkcjonalności lub banalną liczbę użytkowników, trudno jest nie wymyślić na nowo koła zapewnianego przez systemy orkiestracji. Oto kilka praktycznych zasad określania, kiedy orkiestracja powinna wejść do obrazu.

  • Twoje aplikacje są złożone.  Każda aplikacja, która obejmuje więcej niż dwa kontenery, prawdopodobnie pasuje do rachunku. To powiedziawszy, skromne aplikacje, które obsługują tylko niewielką liczbę użytkowników, mogą być organizowane za pomocą bardziej minimalnego rozwiązania, takiego jak tryb roju Dockera, a nie Kubernetes.
  • Twoje aplikacje mają wysokie wymagania dotyczące skalowalności i odporności.  Kubernetes i inne koordynatory pozwalają zrównoważyć obciążenia i podkręcić kontenery w celu deklaratywnego zaspokojenia popytu, opisując pożądany stan systemu, zamiast ręcznie kodować reakcje na zmieniające się warunki.
  • Chcesz maksymalnie wykorzystać nowoczesne techniki CI / CD.  Systemy orkiestracji obsługują wzorce wdrażania aplikacji korzystających z niebieskiego / zielonego wdrażania lub uaktualnień stopniowych.

Może nadejść dzień, w którym Docker i Kubernetes zostaną przyćmione przez jeszcze bardziej przyjazne abstrakcje i ustąpią miejsca bardziej eleganckim sposobom tworzenia kontenerów i zarządzania nimi. Na razie jednak Docker i Kubernetes mają kluczowe znaczenie, aby poznać i zrozumieć.

Dowiedz się więcej o Kubernetes i orkiestracji

  • Co to jest Kubernetes? Twoja następna platforma aplikacji
  • 4 powody, dla których powinieneś używać Kubernetes
  • 10 dystrybucji Kubernetes na czele rewolucji kontenerowej
  • Zarządzany Kubernetes: AWS kontra Azure kontra Google Cloud
  • Witaj MicroK8s: prostszy Kubernetes
  • Co nowego w Kubernetes
  • Więcej wiadomości, poradników, recenzji, porad i analiz dotyczących Kubernetes