JavaRush /Blog Java /Random-PL /Kim są Docker, Kubernetes, OpenShift i jak są ze sobą pow...
Павел
Poziom 11

Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?

Opublikowano w grupie Random-PL
Wszystko zaczyna się od opakowania. W rozwoju przemysłowym istnieje potrzeba „spakowania” zmontowanej aplikacji, aby można było ją przenieść na serwer, na którym będzie działać, w takiej formie, w jakiej programista zmontował ją na swoim komputerze, takie „opakowanie” powinien służyć jako swego rodzaju ochrona. Eliminuje to niespodzianki, np. gdy aplikacja działa podczas testu, ale psuje się po przeniesieniu do produkcji. Ponadto „pakowanie” izoluje jedną aplikację od drugiej, znajdującej się na tym samym serwerze, taka izolacja pozwala jednej aplikacji nie zakłócać pracy drugiej (przykładowo: jedna aplikacja nie będzie w stanie przejąć całej pamięci RAM serwera, pozostawiając drugie zastosowanie do jego losu). Zalety „pakowania” o architekturze mikroserwisowej są szczególnie zauważalne i jest to zrozumiałe; mikroserwisów jest wiele – wiele małych aplikacji, które muszą się ze sobą komunikować, ale jednocześnie nie powinny sobie przeszkadzać. Przykładem jest komoda (serwer), w której znajduje się wiele różnych szuflad, a z łatwością możemy przenosić różne skarpetki z jednej szuflady do drugiej, a jednocześnie nie będą się one mieszać ze sobą ani z majtkami. Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 1 Opakowanie tworzone jest za pomocą narzędzi wirtualizacyjnych. Dawno, dawno temu maszyny wirtualne (VM) były używane jako „opakowanie”. Starsi ludzie pamiętają, jak wdrażali system Windows XP na Viście na maszynie wirtualnej. Teraz maszyny wirtualne do pakowania aplikacji należą już do przeszłości. Świat został opanowany przez kontenery. Ponieważ są: lżejsze, wydajniejsze i bezpieczniejsze. Mówiąc bardziej szczegółowo: czym różni się kontener od maszyny wirtualnej? Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 2 Należy pamiętać o kilku zaletach kontenerów: • są mniejsze (zajmują mniej pamięci na serwerze); • mieć dostęp do współdzielonych zasobów serwera (RAM, czas obliczeniowy procesora); • mieć lepszą przenośność w innych środowiskach (od testowych do przemysłowych); • zapewnić większą prędkość startu (ponieważ kontener jest lekki, startuje szybciej). Docker jest matką kontenerów. Kiedy mówią kontener, mają na myśli Docker. Docker to oprogramowanie do automatyzacji wdrażania i zarządzania aplikacjami w środowiskach kontenerowych. Na przykładach Docker jest skrzyżowaniem projektanta internetowego z drukarką 3D z dźwigiem. Oznacza to, że może najpierw zaprojektować szablon (obraz) kontenera, wydrukować (utworzyć) kontener według zadanych warunków (obraz), a następnie przenieść go tam, gdzie zajdzie taka potrzeba. Zamiast dźwigni używane są pliki Dockerfile. Proces zarządzania jest prosty: piszesz pliki, polecenia, uruchamiasz je i widzisz, co się stanie. Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 3 Pierwsza znajomość z Dockerem Docker Compose - uaktualniony Docker Przyjrzyjmy się teraz scenariuszowi, w którym w jednej lokalizacji musi działać wiele kontenerów. Narzędziem używanym do tego jest Docker Compose. Docker Compose to narzędzie dołączone do Dockera. Przeznaczony jest do rozwiązywania problemów związanych z wdrażaniem projektów. Różnica między Dockerem a Docker Compose: Docker służy do zarządzania pojedynczymi kontenerami. Docker Compose służy do jednoczesnego zarządzania wieloma kontenerami. Narzędzie to oferuje te same możliwości co Docker, ale pozwala na pracę z bardziej złożonymi strukturami. Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 4 Typowy scenariusz korzystania z Docker Compose: Wyobraź sobie, że jesteś programistą projektu internetowego. Projekt obejmuje dwie strony internetowe. Pierwsza pozwala przedsiębiorcom na tworzenie sklepów internetowych za pomocą zaledwie kilku kliknięć. Drugi ma na celu obsługę klienta. Te dwie witryny współdziałają z tą samą bazą danych. Twój projekt staje się coraz bardziej popularny i okazuje się, że moc serwera, na którym działa, nie jest już wystarczająca. W rezultacie decydujesz się przenieść cały projekt na inną maszynę. Jeśli nie korzystałeś z czegoś takiego jak Docker Compose, będziesz musiał przeprowadzić migrację i ponowną konfigurację kontenerów pojedynczo, mając nadzieję, że o niczym nie zapomnisz. Jeśli korzystasz z Docker Compose, to przeniesienie projektu na nowy serwer to kwestia, którą można rozwiązać uruchamiając kilka poleceń. Aby sfinalizować transfer projektu do nowej lokalizacji wystarczy dokonać jedynie kilku ustawień i wgrać kopię zapasową bazy danych na nowy serwer. Typowy DockerComposer: Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 5 O czym musisz pamiętać: Kontenery są głównym środkiem do „pakowania” aplikacji. Docker obsługuje kontenery, tworzy obrazy kontenerów, podnosi i przenosi kontenery. Aby jednocześnie zarządzać grupą kontenerów, używany jest Docker Compose, który jest zawarty w Dockerze. Programy te są darmowym oprogramowaniem (gratisy - jednym słowem) Kubernetes (K8s) - automatyzacja Dockera I tak wdrożyliśmy kontenery, wiemy jak je przenosić „partiami” z maszyny na maszynę. Ale nagle jeden z kontenerów upadł! Co robić? Kto go ponownie podniesie? Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 6 Oczywiście możesz to zrobić ręcznie, za pomocą Dockera. Ale trzeba coś zrobić, coś napisać, potrzebne jest jakieś narzędzie do automatyzacji. Tutaj z pomocą przychodzi Kubernetes (w skrócie K8s), który zajmie się także zarządzaniem i orkiestracją (automatyczne zarządzanie podmiotami powiązanymi) kontenerami. Mając do dyspozycji K8, nie musisz monitorować kontenerów dzień i noc. Wystarczy zdefiniować scenariusz zachowania, a K8 zrobią wszystko same. Kluczowe cechy Kubernetes 1. Zapewnia skalowalność i zarządzanie konfiguracją. 2. Możesz opisać, co chcesz uzyskać podczas wdrażania klastra, a K8s to zrobi. Na przykład określ liczbę zasobników, ile pamięci dla nich przydzielić, wskazują liczbę replik (instancji) aplikacji wdrożonych (w kontenerach) na podach. 3. Odpowiedzialny za utrzymanie systemu w określonym stanie, jeśli coś spadnie, K8 to podniesie, zgodnie z ustaloną konfiguracją. O czym musisz pamiętać: Kubernetes to narzędzie do orkiestracji aplikacji kontenerowych - automatyzujące ich wdrażanie, skalowanie i koordynację w klastrze. Obsługuje główne technologie konteneryzacji, w tym Docker. K8s jest oprogramowaniem typu open source. Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 7 OpenShift to Ferrari w świecie wirtualizacji, fajne, szybkie i drogie Rozwijając temat przejdźmy do OpenShift. OpenShift to dodatek do Kubernetesa oferujący dodatkowe funkcje, gotowy do użycia od razu, nie wymagający długiej i bolesnej konfiguracji, od razu można go wdrożyć do produkcji. Zobacz, ile różnych ikon znajduje się nad Kubernetesem. I każdy z nich robi swoje własne fajne rzeczy. Kim są Docker, Kubernetes, OpenShift i jak są ze sobą powiązane?  - 8 Najważniejsze cechy OpenShift: • Jest to produkt płatny, w przeciwieństwie do K8; • Gotowy do użycia DevOps, obsługa podstawowych scenariuszy wdrożeń typu blue/green, canary; • Wbudowana obsługa Jenkinsa; • Zapewnia wygodne narzędzia do administrowania i pracy z klastrem; • Posiada bardziej rygorystyczny model bezpieczeństwa i wbudowany monitoring. Warto jeszcze raz podkreślić, że OpenShift jest produktem płatnym, w przeciwieństwie do Kubernetesa. Różnica jest taka: jeśli weźmiemy gołego Kubernetesa, to sami rozwiążemy wszystkie problemy. Jeśli mówimy o OpenShift, to jest to produkt firmy Red Hat, który w ramach płatnego wsparcia rozwiązuje pojawiające się problemy. Podsumujmy: w rozwoju przemysłowym istnieje potrzeba „spakowania” aplikacji; to podejście jest szczególnie istotne w architekturze mikrousług. Kontenery są podstawowym sposobem zastosowań opakowaniowych. Docker obsługuje kontenery, tworzy obrazy kontenerów, podnosi i przenosi kontenery. Aby jednocześnie zarządzać grupą kontenerów, używany jest Docker Compose, który jest zawarty w Dockerze. Programy te są oprogramowaniem wolnym. Kubernetes(K8s) to narzędzie do orkiestracji aplikacji kontenerowych - automatyzujące ich wdrażanie, skalowanie i koordynację w klastrze. Obsługuje główne technologie konteneryzacji, w tym Docker. K8s jest oprogramowaniem typu open source. OpenShift to dodatek do Kubernetes oferujący dodatkową funkcjonalność. Jest to produkt płatny, w odróżnieniu od K8s, przeznaczony do użytku korporacyjnego. Zapewnia DevOps od razu po wyjęciu z pudełka: obsługę głównych scenariuszy wdrożeń blue/green, canary, ma wbudowaną obsługę Jenkins i zapewnia wygodne narzędzia do administrowania i pracy z klastrem. Posiada bardziej rygorystyczny model bezpieczeństwa i wbudowany monitoring. Dla tych, których swędzi kodowanie: Spakuj aplikację Spring Boot do kontenera Jak wdrożyć Postgres w Dockerze i połączyć się z aplikacją Spring-Boot Seminarium internetowe: Docker - Jak pracować z kontenerami? — Tworzenie backendu w Javie
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION