Kubernetes a Docker

Omówienie Kubernetes i Docker

Omówienie różnic pomiędzy Kubernetes a Docker jest jednym z najważniejszych tematów w natywnej chmurze oraz DevOps. Chociaż Kubernetes i Docker z pewnością można omawiać jednocześnie, tak naprawdę nie należy ich porównywać. W rzeczywistości Kubernetes i Docker nie konkurują ze sobą bezpośrednio. Zamiast tego należy traktować je jako dwie technologie, które mogą się wzajemnie uzupełniać i ze sobą współpracować.


Skąd można wiedzieć z jakimi okolicznościami będziemy mieli do czynienia? Aby odpowiedzieć na to pytanie, najpierw należy zrozumieć konkretne obszary, w których Kubernetes i Docker nakładają się i różnią między sobą.

Omówienie Docker

Docker to platformą open source do tworzenia kontenerów aplikacji. Jeśli ta koncepcja brzmi nieznajomo: kontener to samodzielny format pakietowania, który umieszcza wszystkie niezbędne kody i zależności w wykonywalnym formacie. Aby użyć analogii ze świata rzeczywistego: kontener jest jak paczka IKEA ze wszystkimi elementami, wspornikami i śrubami biurka (i oczywiście kluczem sześciokątnym). Oprócz zawierania wszystkich elementów, kontener buduje również biurko samodzielnie, podczas jego wykonywania.

Docker jest często używany przez programistów ze względu na swój lekki i standaryzowany format. Cechy te pozwalają programistom tworzyć, testować i wdrażać aplikacje w elastyczny i skalowalny sposób.

Docker ma również inne znaczenie w branży IT – istnieje firma o nazwie Docker, Inc., która opracowuje narzędzia do pracy na tej platformie. Należy pamiętać o tej różnicy, biorąc pod uwagę tę samą nazwę.

Omówienie Kubernetes

Docker to pojedynczy kontener, a Kubernetes to narzędzie do jednoczesnego zarządzania wieloma kontenerami. Podobnie jak Docker (platforma, a nie firma), Kubernetes jest platformą open source, lecz zarządzana przez organizację Cloud Native Computing Foundation jako projekt z ponad 2300 współtwórcami. Kubernetes działa jak system operacyjny dla chmury, usprawniając i upraszczając zarządzanie między maszynami wirtualnymi i chmurami, dzięki czemu działy IT mogą działać w skali.

Co potrafi Kubernetes? Kubernetes działa podobnie do każdego rozwiązania zarządzania systemem obecnego w systemie lokalnym – ale w skali kontenera. Udostępnienia, aktualizacje, harmonogramy, usunięcia i ogólne monitorowanie stanu – Kubernetes radzi sobie ze wszystkim. Wracając do analogii z meblami IKEA: jeśli kontener jest jednym biurkiem, Kubernetes jest jak menedżer sklepu, który umożliwia zamawianie, dystrybucję i sprawdzanie stanu biurek, krzeseł i innych zapakowanych mebli w magazynie sklepu IKEA.

Jakie istnieją inne środowiska uruchamiania kontenerów?

Jednym z elementów brakujących w każdej dyskusji na temat Docker i Kubernetes jest definicja środowiska uruchamiania kontenerów. Czym jest środowisko uruchamiania kontenera? Krótko mówiąc, to jest silnik, który uruchamia kontener. Wracając do analogii z meblami IKEA, środowisko uruchamiania kontenerów to instrukcje montażu wewnątrz opakowania. W niektórych przypadkach jest to proste, a zarządzanie wykonaniem jest obsługiwane w tak zwanym środowisku uruchamiania kontenera niskiego poziomu . W bardziej złożonych sytuacjach, środowisko uruchamiania kontenerów wysokiego poziomu nadzoruje integrację API, formaty obrazów oraz zarządzanie obrazami. W niektórych przypadkach termin ten może być używany zamiennie z Docker, chociaż sprawa ta jest odrobinę bardziej skomplikowana.

Kubernetes uruchamia API, określane jako interfejs uruchamiania kontenera – CRI (Content Runtime Interface). CRI wchodzi w interakcję z każdym środowiskiem uruchamiania kontenera w celu wykonania pakietu. Wracając raz jeszcze do analogii z meblami IKEA, CRI w Kubernetes jest osobą odczytującą instrukcję montażu (środowisko uruchamiania kontenera) w pakiecie (kontenerze).

Docker to nie jedyne środowisko uruchamiania kontenerów. Dwa inne, popularne rozwiązania to:

Containerd: Containerd zaistniał najpierw jako część projektu Docker. Jego celem było jednak dodania elastyczności i modułowości dla Docker, dlatego jego programiści zdecydowali się na kontynuowanie Containerd jako osobnego projektu. Containerd obsługuje środowisko uruchomienia kontenera wysokiego poziomu, łącznie z pobieraniem obrazów z rejestrów, zarządzaniem obrazami oraz integrację ze środowiskami uruchomienia niskiego poziomu w celu wykonania procesu kontenera.

CRI-O: CRI-O to kolejne alternatywne środowisko uruchamiania kontenera open source, zastępujące Docker. Wdraża środowisko CRI (Kubernetes Container Runtime Interface) umożliwiające środowiska uruchomienia zgodne ze standardem Open Container Initiative.

Zarówno CRI-O, jak i Containerd korzystają ze specyfikacji dostarczonych przez CRI, co czyni je całkowicie kompatybilnymi z Kubernetes.

Jaka jest różnica między Docker a Kubernetes?

Często toczone są dyskusje na temat konkurencji między Docker i Kubernetes, ale tak naprawdę te dwa rozwiązania nie konkurują ze sobą bezpośrednio. Analogia mebli IKEA stosowana w tym artykule pokazuje, jak są one spokrewnione i dlaczego wspólnie mają kluczowe znaczenie w nowoczesnym zarządzaniu IT, bez jakiejkolwiek konkurencji. Są one raczej częścią natywnego ekosystemu chmury. Kontenery Docker są częścią elementów zarządzanych przez Kubernetes, a zaletą Kubernetes jest możliwość łatwego skalowania rozmiaru kontenerów Docker.

Pytanie nie brzmi więc: „Docker czy Kubernetes?” Zamiast tego, głównym zagadnieniem do rozważenia dla dyrektorów IT jest jak, w zakresie zarządzania i działania, będą korzystać z Kubernetes i Docker.

W jaki sposób Docker i Kubernetes współpracują

Kubernetes i Docker są stworzone do wspólnego działania. Mimo że do zarządzania wdrożeniem Docker nie jest wymagane użycie Kubernetes, jest to skuteczne tandemowe rozwiązanie w sytuacjach, w których trzeba zarządzać wieloma instancjami wdrożeń. Dotyczy to zwłaszcza sytuacji, w których używanych jest wiele wdrożeń tej samej aplikacji, a także przy konieczności skalowania. To, że system orkiestracji Kubernetes działa na zasadach open source, zapewnia stale obsługiwaną platformę, zarządzającą zawiłością na wielu serwerach.

Z poziomu Kubernetes można wdrożyć i zarządzać licznymi pakietami Docker, korzystając z takich funkcji, jak wsadowe przetwarzanie poprawek i aktualizacji oraz monitorowanie problemów w skali, przy jednoczesnej obsłudze dowolnych żądań. Dzięki Kubernetes, działy IT mogą:

  • Rozprowadzać kontenery Docker w obrębie całej infrastruktury
  • Skalować kontenery Docker i powiązane z nimi zasoby w górę lub w dół
  • Udostępniać, planować lub usuwać kontenery i aktualizacje zgodnie z potrzebami
  • Monitorować stan instancji Docker

Narzędzia Oracle dla Kubernetes i Docker

Oracle Cloud Infrastructure oferuje wiele usług do przyspieszenia i tworzenia nowoczesnych, natywnych aplikacji w chmurze. W szczególności Container Engine for Kubernetes i Container Registry – analizujące obrazy Docker i zarządzające nimi – to zaawansowane i bezpłatne (wbudowane) narzędzia usprawniające zarządzanie i zwiększające wydajność. Przekonaj się o tym, próbując bezpłatnie Oracle Cloud, by uzyskac dostęp do Kubernetes.

Oracle Container Engine for Kubernetes: sukcesy klientów

Park archeologiczny w Pompejach
Park archeologiczny w Pompejach:

Po zamknięciu w marcu 2020 roku parku archeologicznego we włoskich Pompejach, jakiekolwiek plany ponownego otwarcia wymagały zarządzania i kontroli w celu zapewnienia dystansu społecznego. Utworzono plany pozwalające turystom uzyskać dostęp do nowej aplikacji MyPompeii, opartej na produktach Oracle (w tym Oracle Container Engine for Kubernetes i Oracle Container Registry), wybranych w celu stworzenia natywnego chmurowego rozwiązania mobilnego.

Snap Vision:

Działająca w Londynie firma Snap Vision oferuje technologię wyszukiwania wizualnego, bazującą na sztucznej inteligencji, aby pomóc kupującym odkryć ubrania, które pokochają. Ponieważ COVID-19 spowodował zawieszenie zakupów w fizycznych sklepach na długi okres czasu, technologia Snap Vision została zaoferowana sprzedawcom detalicznym w Wielkiej Brytanii, aby pomóc im stworzyć cyfrowe środowisko zakupów. Skalowanie było dużym wyzwaniem, choć firma Snap Vision mogła hostować nowe środowiska sprzedawców po niskich kosztach dzięki Oracle Cloud Infrastructure i Kubernetes.