Przeanalizujmy popularne narzędzia do zarządzania kontenerami, które są obecnie dostępne na rynku.
Czym jest orkiestracja kontenerów?
Platformy kontenerowe, takie jak Docker, zyskały dużą popularność w kontekście pakowania aplikacji opartych na architekturze mikroserwisów. Kontenery charakteryzują się wysoką skalowalnością i mogą być tworzone na żądanie. Choć to rozwiązanie sprawdza się w przypadku mniejszej liczby kontenerów, wyobraźmy sobie sytuację, gdy musimy zarządzać setkami takich jednostek.
Zarządzanie cyklem życia kontenerów i ich kontrola staje się niezwykle skomplikowane, gdy ich liczba gwałtownie rośnie wraz z zapotrzebowaniem.
Orkiestracja kontenerów stanowi odpowiedź na to wyzwanie, automatyzując procesy planowania, wdrażania, skalowania, równoważenia obciążenia, zapewniania dostępności i tworzenia sieci kontenerów. W istocie, orkiestracja kontenerów to automatyzacja i zarządzanie całym cyklem życia kontenerów oraz powiązanych z nimi usług.
Jest to proces organizowania i administrowania wieloma kontenerami oraz architekturą mikroserwisów na dużą skalę.
Na szczęście, rynek oferuje szeroki wybór narzędzi, które wspierają orkiestrację kontenerów.
Przyjrzyjmy się im bliżej!
Kubernetes
Prawdopodobnie to przewidziałeś, prawda?
Kubernetes to platforma open source, która początkowo powstała w Google, a obecnie jest rozwijana przez Cloud Native Computing Foundation. Kubernetes wspiera zarówno konfigurację deklaratywną, jak i automatyzację. Pomaga zautomatyzować wdrażanie, skalowanie i zarządzanie skonteneryzowanymi obciążeniami i usługami.
Obraz pochodzi ze strony Kubernetes.io
Interfejs API Kubernetes umożliwia komunikację pomiędzy użytkownikami, elementami klastra i zewnętrznymi komponentami innych firm. Płaszczyzna kontroli i węzły Kubernetes działają w grupie węzłów, które wspólnie tworzą klaster. Obciążenie aplikacji składa się z jednego lub więcej podów, które działają w węzłach roboczych. Płaszczyzna sterowania zarządza podami i węzłami roboczymi.
Firmy takie jak Babylon, Booking.com czy AppDirect intensywnie wykorzystują Kubernetes.
Kluczowe cechy:
- Wykrywanie usług i równoważenie obciążenia
- Orkiestracja przestrzeni dyskowej
- Automatyczne wdrożenia i wycofywanie zmian
- Skalowanie poziome
- Zarządzanie sekretami i konfiguracją
- Samonaprawa
- Realizacja zadań wsadowych
- Obsługa protokołów IPv4/IPv6
- Automatyczne rozmieszczanie kontenerów
Chcesz nauczyć się obsługiwać Kubernetes? Sprawdź te materiały edukacyjne.
OpenShift
Redhat oferuje OpenShift, platformę kontenerową jako usługę (PaaS). Pomaga zautomatyzować wdrażanie aplikacji na bezpiecznych i skalowalnych zasobach w środowiskach chmury hybrydowej. Zapewnia platformy klasy korporacyjnej do tworzenia i wdrażania oraz zarządzania aplikacjami kontenerowymi.
Obraz ze strony Openshift
Opiera się na systemie Redhat Enterprise Linux oraz silniku Kubernetes. OpenShift posiada rozmaite funkcje do zarządzania klastrami za pomocą interfejsu użytkownika i CLI. Redhat udostępnia OpenShift w dwóch wariantach:
- OpenShift Online – oferowany jako oprogramowanie jako usługa (SaaS)
- OpenShift Dedicated – oferowany jako usługa zarządzana
OpenShift Origin (Origin Community Distribution) to projekt społecznościowy o otwartym kodzie źródłowym, który jest wykorzystywany w OpenShift Container Platform, OpenShift Online i OpenShift Dedicated.
Nomad
Nomad to uproszczone, elastyczne i łatwe w obsłudze narzędzie do zarządzania obciążeniami. Umożliwia wdrażanie i kontrolowanie kontenerów i aplikacji niekontenerowych na dużą skalę, zarówno w infrastrukturze lokalnej, jak i w chmurze. Nomad funkcjonuje jako pojedynczy plik binarny o niewielkim rozmiarze (35 MB) i jest obsługiwany w systemach macOS, Windows i Linux.
Programiści wykorzystują deklaratywną infrastrukturę jako kod (IaC) do wdrażania aplikacji i definiowania sposobu ich implementacji. Nomad automatycznie przywraca aplikacje po awariach.
Obraz ze strony Nomad
Nomad organizuje aplikacje dowolnego typu, nie tylko kontenery. Zapewnia wsparcie dla platformy Docker, Windows, Java, maszyn wirtualnych i innych.
Kluczowe cechy:
- Prosty i niezawodny
- Możliwość modernizacji starszych aplikacji bez konieczności ich przepisywania
- Łatwa federacja na dużą skalę
- Sprawdzona skalowalność
- Łatwa obsługa wielu chmur
- Integracje z Terraform, Consul i Vault
Docker Swarm
Docker Swarm opiera się na modelu deklaratywnym. Użytkownik definiuje pożądany stan usługi, a Docker dba o jego utrzymanie. Docker Enterprise Edition zintegrował Kubernetes z Swarm. Docker daje obecnie elastyczność w wyborze silnika orkiestracji. Interfejs CLI silnika Docker służy do tworzenia roju silników Docker, na których można wdrażać usługi aplikacji.
Obraz ze strony Docker
Polecenia platformy Docker służą do interakcji z klastrem. Maszyny, które dołączają do klastra, są nazywane węzłami, a menedżer Swarm zarządza działaniem klastra.
Docker Swarm składa się z dwóch głównych komponentów:
- Menedżer – węzły menedżera przydzielają zadania węzłom roboczym w roju. Lider jest wybierany na podstawie algorytmu konsensusu Raft. Lider podejmuje wszelkie decyzje dotyczące zarządzania rojem i orkiestracji zadań dla roju.
- Węzeł roboczy – węzeł roboczy otrzymuje zadania od węzła menedżera i je wykonuje.
Kluczowe cechy:
- Zarządzanie klastrem zintegrowane z Docker Engine
- Zdecentralizowana architektura
- Deklaratywny model usługi
- Skalowalność
- Uzgodnienie żądanego stanu
- Sieć na wielu hostach
- Wykrywanie usług
- Równoważenie obciążenia
- Bezpieczeństwo w standardzie
- Aktualizacje kroczące
Docker Compose
Docker Compose służy do definiowania i uruchamiania aplikacji wielokontenerowych, które ze sobą współpracują. Docker-compose opisuje grupy połączonych usług, które dzielą zależności oprogramowania, są wspólnie orkiestrowane i skalowane.
Użytkownik może wykorzystać plik YAML (docker-compose.yml) do skonfigurowania usług aplikacji. Następnie, za pomocą polecenia „docker-compose up”, tworzy i uruchamia wszystkie usługi z konfiguracji.
Przykładowy plik docker-compose.yml może wyglądać następująco:
version: '3' volumes: app_data: services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0 ports: - 9200:9200 - 9300:9300 volumes: - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12 - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data kibana: depends_on: - elasticsearch image: docker.elastic.co/kibana/kibana:6.8.0 ports: - 5601:5601 volumes: - ./kibana.yml:/usr/share/kibana/config/kibana.yml app: depends_on: - elasticsearch image: asadali08527/app:latest ports: - 8080:8080 volumes: - app_data:/var/lib/app/
Docker Compose pozwala podzielić kod aplikacji na kilka niezależnie działających usług, które komunikują się przy użyciu sieci wewnętrznej. Narzędzie udostępnia CLI do zarządzania całym cyklem życia aplikacji. Tradycyjnie, Docker Compose skupiał się na opracowywaniu i testowaniu przepływów pracy, ale teraz kładzie się nacisk na funkcje bardziej zorientowane na produkcję.
Docker Engine może być samodzielną instancją udostępnioną w Docker Machine lub całym klastrem Docker Swarm.
Kluczowe cechy:
- Wiele izolowanych środowisk na jednym hoście
- Zachowanie danych woluminów podczas tworzenia kontenerów
- Odtwarzanie tylko tych kontenerów, które uległy zmianie
- Zmienne i przenoszenie kompozycji między środowiskami
Minikube
Minikube umożliwia lokalne uruchamianie Kubernetes. Za pomocą Minikube można testować aplikacje lokalnie, w jednowęzłowym klastrze Kubernetes na komputerze osobistym. Minikube ma wbudowane wsparcie dla pulpitu nawigacyjnego Kubernetes.
Minikube uruchamia najnowszą stabilną wersję Kubernetes i obsługuje następujące funkcje:
- Równoważenie obciążenia
- Wieloklastrowość
- Trwałe woluminy
- NodePorts
- ConfigMaps i sekrety
- Środowisko uruchomieniowe kontenera: Docker, CRI-O i kontenery
- Włączanie CNI (Container Network Interface)
Marathon
Marathon to platforma dla Apache Mesos, która oferuje możliwość orkiestracji zarówno aplikacji, jak i frameworków.
Apache Mesos to menedżer klastrów o otwartym kodzie źródłowym. Mesos to projekt Apache, który pozwala uruchamiać zarówno kontenerowe, jak i niekontenerowe obciążenia. Główne elementy klastra Mesos to Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – frameworki komunikują się z masterem, aby planować zadania na węzłach agentów. Użytkownicy wchodzą w interakcję z platformą Marathon, aby planować zadania.
Harmonogram Marathon wykorzystuje ZooKeeper do lokalizowania aktualnego mastera, aby móc przesyłać zadania. Harmonogram Marathon i master Mesos mają uruchomionego drugiego mastera, aby zapewnić wysoką dostępność. Klienci komunikują się z Marathon za pomocą interfejsu API REST.
Kluczowe cechy:
- Wysoka dostępność
- Obsługa aplikacji stanowych
- Przejrzysty i rozbudowany interfejs użytkownika
- Ograniczenia
- Wykrywanie usług i równoważenie obciążenia
- Testowanie stanu
- Subskrypcja zdarzeń
- Metryki
- API REST
Cloudify
Cloudify to narzędzie do orkiestracji w chmurze typu open source, które automatyzuje wdrażanie i zarządzanie cyklem życia kontenerów i mikroserwisów. Zapewnia funkcje takie jak klastry na żądanie, automatyczne naprawianie i skalowanie na poziomie infrastruktury. Cloudify może zarządzać infrastrukturą kontenerową i organizować usługi działające na platformach kontenerowych.
Łatwo integruje się z menedżerami kontenerów opartymi na Docker i Docker, w tym z:
- Docker
- Docker Swarm
- Docker Compose
- Kubernetes
- Apache Mesos
Cloudify pomaga tworzyć, naprawiać, skalować i niszczyć klastry kontenerów. Orkiestracja kontenerów ma kluczowe znaczenie dla zapewnienia skalowalnej i wysoce dostępnej infrastruktury, na której mogą działać menedżerowie kontenerów. Cloudify oferuje możliwość orkiestracji heterogenicznych usług na różnych platformach. Aplikacje można wdrażać za pomocą CLI i Cloudify Manager.
Rancher
Rancher to platforma typu open source, która wykorzystuje orkiestrację kontenerów o nazwie Cattle. Pozwala korzystać z usług orkiestracji, takich jak Kubernetes, Swarm, Mesos. Rancher dostarcza oprogramowanie niezbędne do zarządzania kontenerami, dzięki czemu organizacje nie muszą budować od podstaw platform usług kontenerowych przy użyciu odrębnego zestawu technologii open source.
Rancher 2.x umożliwia zarządzanie klastrami Kubernetes działającymi u wybranych dostawców.
Rozpoczęcie pracy z Rancherem to proces składający się z dwóch etapów.
Przygotowanie hosta Linux
Należy przygotować hosta z systemem Linux z 64-bitowym systemem Ubuntu 16.04 lub 18.04 (lub inną obsługiwaną dystrybucją Linux) i co najmniej 4 GB pamięci. Na hoście należy zainstalować obsługiwaną wersję platformy Docker.
Uruchomienie serwera
Aby zainstalować i uruchomić Ranchera, wykonaj następujące polecenie Docker na hoście:
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Interfejs użytkownika Ranchera umożliwia zarządzanie tysiącami klastrów i węzłów Kubernetes.
Containership
Containership umożliwia wdrażanie i zarządzanie wielochmurową infrastrukturą Kubernetes. Działa elastycznie w chmurze publicznej, prywatnej i lokalnej za pomocą jednego narzędzia. Umożliwia udostępnianie, zarządzanie i monitorowanie klastrów Kubernetes we wszystkich głównych dostawcach chmury.
Containership jest zbudowany przy użyciu narzędzi natywnych dla chmury, takich jak Terraform do administracji, Prometheus do monitorowania oraz Calico do zarządzania siecią i zasadami. Bazuje na standardowej wersji Kubernetes. Platforma Containership oferuje intuicyjny pulpit nawigacyjny, a także zaawansowane API REST do kompleksowej automatyzacji.
Kluczowe cechy:
- Panel wielochmurowy
- Dzienniki audytu
- Wsparcie dla instancji GPU
- Uaktualnienia bez zakłóceń
- Zaplanowane mastery
- Zintegrowane metryki
- Logowanie w czasie rzeczywistym
- Wdrożenia bez przestojów
- Obsługa trwałej przestrzeni dyskowej
- Obsługa prywatnego rejestru
- Autoskalowanie obciążenia
- Zarządzanie kluczami SSH
AZK
AZK to narzędzie do aranżacji typu open source dla środowisk programistycznych. Wykorzystuje plik manifestu (Azkfile.js), aby pomóc programistom instalować, konfigurować i uruchamiać popularne narzędzia do tworzenia aplikacji internetowych w oparciu o różne technologie open source.
AZK stosuje kontenery zamiast maszyn wirtualnych. Kontenery działają podobnie do maszyn wirtualnych, ale cechują się wyższą wydajnością i mniejszym zużyciem zasobów fizycznych.
Pliki Azkfile.js można ponownie wykorzystać do dodawania nowych elementów lub tworzenia nowych od podstaw. Można je udostępniać, co zapewnia identyczne warunki środowisk programistycznych na różnych maszynach programistów i zmniejsza ryzyko wystąpienia błędów podczas wdrażania.
GKE
GKE to w pełni zarządzane rozwiązanie do orkiestracji aplikacji kontenerowych w Google Cloud Platform. Klastry GKE są oparte na platformie Kubernetes. Komunikacja z klastrami odbywa się za pomocą interfejsu wiersza polecenia Kubernetes. Polecenia Kubernetes mogą służyć do wdrażania i zarządzania aplikacjami, wykonywania zadań administracyjnych, ustawiania zasad i monitorowania stanu wdrożonych obciążeń.
Obraz ze strony GCP
Zaawansowane funkcje zarządzania Google Cloud są również dostępne w klastrach GKE. Obejmują m.in. równoważenie obciążenia Google Cloud, pule węzłów, automatyczne skalowanie węzłów, automatyczne uaktualnienia, automatyczną naprawę węzłów, logowanie i monitorowanie za pomocą pakietu Google Cloud Operations.
Google Cloud oferuje narzędzia CI/CD, które upraszczają tworzenie i udostępnianie kontenerów aplikacji. Można użyć Cloud Build do tworzenia obrazów kontenerów (takich jak Docker) z różnych repozytoriów kodu źródłowego, a Container Registry do przechowywania obrazów kontenerów.
GKE jest kompleksowym rozwiązaniem dla firm, oferującym gotowe szablony wdrożeniowe.
Chcesz nauczyć się obsługiwać GKE? Sprawdź ten kurs dla początkujących.
AKS
AKS to w pełni zarządzana usługa Kubernetes oferowana przez platformę Azure, która zapewnia bezserwerową usługę Kubernetes, bezpieczeństwo i nadzór. AKS zarządza klastrem Kubernetes i ułatwia wdrażanie aplikacji kontenerowych. AKS automatycznie konfiguruje węzły główne i węzły Kubernetes. Użytkownik zarządza jedynie węzłami agentów i dba o ich utrzymanie.
Obraz ze strony Azure
Usługa AKS jest bezpłatna; użytkownik płaci tylko za węzły agentów w klastrze, a nie za mastery. Klaster AKS można utworzyć w Azure Portal lub programowo. Platforma Azure wspiera również dodatkowe funkcje, takie jak zaawansowana sieć, integracja z usługą Azure Active Directory oraz monitorowanie za pomocą Azure Monitor.
AKS obsługuje również kontenery systemu Windows Server. Wydajność klastra i wdrożonych aplikacji można monitorować za pomocą Azure Monitor. Dzienniki są przechowywane w obszarze roboczym Azure Log Analytics.
AKS posiada certyfikat zgodności z Kubernetes.
AWS EKS
AWS EKS to w pełni zarządzana usługa Kubernetes. AWS umożliwia uruchomienie klastra EKS przy użyciu AWS Fragrate, który jest bezserwerowym systemem obliczeniowym dla kontenerów. Fargate eliminuje potrzebę alokowania serwerów i zarządzania nimi, umożliwiając płacenie za zasób na poziomie aplikacji.
AWS pozwala korzystać z dodatkowych funkcji EKS, takich jak Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups i Access Management (IAM), które monitorują, skalują i równoważą obciążenie aplikacji. EKS integruje się z siatką aplikacji AWS i oferuje natywne środowisko Kubernetes. EKS obsługuje najnowszą wersję Kubernetes i posiada certyfikat zgodności z Kubernetes.
Podsumowanie
Mam nadzieję, że powyższy przegląd pozwolił ci lepiej zrozumieć różnorodne narzędzia do orkiestracji kontenerów. Teraz, znając ich charakterystykę, łatwiej będzie ci wybrać najlepsze rozwiązanie, uwzględniając specyfikę twojego projektu.
Następnie warto zapoznać się z oprogramowaniem do zarządzania Kubernetes.
newsblog.pl