Podczas nurkowania w Docker, Google Cloud i Kubernetes i bez jasnego zrozumienia wszystkich trzech z nich, wydaje mi się, że te produkty nakładają się, ale nie są kompatybilne.
Na przykład docker-compose.yml
plik musi zostać ponownie zapisany, aby aplikacja mogła zostać wdrożona na Kubernetes.
Czy ktoś mógłby przedstawić ogólny, przybliżony opis tego, gdzie Docker, Docker Compose, Docker Cloud i Kubernetes nakładają się na siebie i gdzie jedno jest zależne od drugiego?
źródło
Oprócz odpowiedzi @ yamenk , chciałbym tutaj dodać kilka szczegółów, które mogą pomóc ludziom w ich podróży po Kubernetes.
Krótka odpowiedź:
docker-compose
: to narzędzie, które pobiera plik YAML, który opisuje twoją aplikację do obsługi wielu kontenerów i pomaga tworzyć , uruchamiać / zatrzymywać , usuwać wszystkie te kontenery bez konieczności wpisywania wieludocker ...
poleceń dla każdego kontenera.Kubernetes
: to platforma do zarządzania konteneryzowanymi obciążeniami i usługami, która ułatwia zarówno deklaratywną konfigurację, jak i automatyzację. Co? 🤔 Czytaj dalej ...Docker Compose
Kubernetes
Wiele osób twierdzi, że Kubernetes jest trudny do nauczenia. To dlatego, że rozwiązuje szereg problemów, a ludzie próbują zrozumieć, nie znając wszystkich warunków wstępnych. To komplikuje sprawę. Zacznij układać elementy układanki, czytając o pojęciach / terminach, takich jak poniżej. Ten proces pomoże ci zrozumieć rodzaj problemów, które Kubernetes próbuje rozwiązać:
A ponieważ wokół kontenerów i zarządzania nimi istnieje wiele różnych rzeczy, miej oko na krajobraz Cloud Native:
Wersja interaktywna tutaj: landscape.cncf.io/
Aktualizacje
źródło
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deployJeśli łączysz kontenery z tym samym hostem, przejdź do komponowania dokera .
Jeśli łączysz kontenery na wielu hostach, wybierz kubernetes .
źródło
pierwsza różnica polega na silniku kontenera i koordynatorze kontenerów.
docker
to silnik kontenerowy, który pozwala budować i uruchamiać zwykle najwyżej jeden kontener, lokalnie na komputerze w celach programistycznych.docker-compose
to narzędzie Docker do uruchamiania wielu kontenerów i umożliwiania współużytkowania woluminów i sieci za pośrednictwem funkcji silnika dokera, działa lokalnie w celu emulacji składu usług i zdalnie w klastrach.Kubernetes to platforma do organizacji kontenerów, która dba o uruchamianie kontenerów i ulepszanie funkcji silnika, dzięki czemu kontenery można komponować i skalować w celu obsługi złożonych aplikacji (rodzaj PaaS, zarządzany przez Ciebie lub dostawcę chmury). Główną funkcją Kubernetes jest oddzielenie infrastruktury od aplikacji za pomocą kontenerów, a także jest ona otwarta dla innych silników, które Docker, na przykład może uruchamiać kontenery z rkt lub cri-o.
Chmura Docker to także oferta PaaS, która pozwala uruchamiać i koordynować kontenery za pośrednictwem
docker
interfejsu API silnika.Teraz w zależności od potrzeb, poziomu kontroli infrastruktury i docelowych odbiorców możesz używać Kubernetes na baremetal, Azure ACS lub Google GKE itp.
Mam nadzieję, że to pomogło :) Pozdrawiam
źródło
Docker Compose nie jest narzędziem gotowym do produkcji. Działa świetnie w PoC lub środowiskach programistycznych, ale brakuje mu wielu możliwości, które są mniej lub bardziej ryzykowne dla poważnego wykorzystania produkcyjnego. Swarm jest bardziej gotowy na produkcję, ale nigdy nie zainwestowałbym w Swarm w scenariuszu typu greenfield. Kubernetes wygrał bitwę aranżacyjną, o czym świadczy jego włączenie do Docker Desktop i oferowanie go przez wszystkich głównych dostawców chmury. Kubernetes jest znacznie bardziej wydajny i ma znacznie więcej wsparcia społeczności i korporacji.
Poleciłbym nurkowanie w niektórych tutorialach Kubernetes dostępnych w Pluralsight, Linux Academy itp. I rozwijanie klastra do zabawy na wybranej platformie chmurowej (EKS, AKS, GKE itp.). Jeśli próbujesz podkręcić się na gołym metalu, spójrz na OpenShift, ale zauważ, że w tej konfiguracji tracisz trochę magii Kubernetes.
źródło
Komponent dokowania:
W
docker-compose.yml
pliku każdy wpis może opcjonalnie uzyskaćdocker-compose
obraz. każdy wpis może reprezentować pojedynczy kontener, który chcemy zbudować, a każdy wpis określa wymagania sieciowe lub porty.Kubernetes:
Kubernetes oczekuje, że wszystkie obrazy zostaną już zbudowane i dla każdego obiektu, który chcemy utworzyć, istnieje jeden plik konfiguracyjny i musimy ręcznie skonfigurować wszystkie sieci.
Dlatego zapewniamy, że nasz obraz jest hostowany w Docker Hub, utwórz jeden plik konfiguracyjny, aby utworzyć kontener, i jeden plik konfiguracyjny, aby skonfigurować sieć.
źródło
Docker-Compose to plik wdrażania, który wstępnie zdefiniował jeden lub więcej kontenerów ze środowiskiem, takim jak woluminy, sieć, polecenie do uruchomienia i tak dalej.
Z drugiej strony Kubernetes to system, który koordynuje kontenery dokerów i inne mikrousługi oraz sprawia, że są skalowane i niezawodne w wielu węzłach
źródło
Komponowanie dokowania: kontenery dokowania można uruchamiać bezpośrednio bez pomocy dowolnego pliku yaml. Ale przy pomocy narzędzia Docker komponuj narzędzie można zdefiniować właściwości kontenera w pliku o nazwie plik docker-compose.yml. proszę znaleźć poniższy przykładowy plik yml, aby uzyskać więcej informacji.
nazwę obrazu, liczbę replik itp. można skonfigurować za pomocą pliku yml.
Kubernetes: jest to platforma zarządzania kontenerami uruchomiona na Dockerze zbudowanym przez Google. Docker Swam to kolejna platforma zarządzania kontenerami zbudowana przez samą doker. Kubernetes zapewnia również możliwość zapisywania konfiguracji związanej z zasobnikami (odpowiadającymi kontenerowi w oknie dokowanym) w pliku yaml, np. W komponowaniu dokera. przykładowy plik yaml
tutaj można również podać obrazy, porty do otwarcia i mapowania portów do hosta itp. podobnie jak komponowanie dokera, kubectl Apply -f to polecenie uruchamiające ten plik.
źródło