Porównanie platform Kubernetes i Docker

Szybciej twórz, dostarczaj i skaluj aplikacje za pomocą technologii kontenerów, które działają lepiej razem.

Czym się różnią platformy Kubernetes i Docker?

Dyskusja dotycząca platform Kubernetes i Docker często sprowadza się do pytania: której z tych platform użyć? Powszechnie błędne jest mniemanie, że należy dokonać między nimi wyboru.

Różnicę między platformami Kubernetes i Docker można znacznie łatwiej zrozumieć, formułując zupełnie inne pytanie, które nie zakłada wyboru tej lub innej platformy. Wybór między tymi dwoma platformami nie jest konieczny — Kubernetes i Docker to zupełnie różne technologie, które dobrze współpracują ze sobą w celu tworzenia, dostarczania i skalowania konteneryzowanych aplikacji.

Platforma Docker i popularyzacja konteneryzacji

Docker to technologia typu open source oraz format pliku kontenera służący do automatyzowania wdrażania aplikacji jako przenośne, samowystarczalne kontenery, które mogą być uruchamiane w chmurze lub lokalnie. Docker Inc., mimo podobnej nazwy, to jedna z firm doskonaląca technologię platformy Docker (typu open source) pod kątem działania w systemach Linux i Windows we współpracy z dostawcami usług w chmurze, takimi jak firma Microsoft.

Chociaż idea izolowanych środowisk nie jest nowa i istnieją inne typy oprogramowania do konteneryzacji, format Docker w ciągu ostatnich lat stał się domyślnym formatem kontenerów. W ramach platformy Docker dostępny jest aparat Docker Engine, czyli środowisko uruchomieniowe. Umożliwia ono tworzenie i uruchamianie kontenerów na dowolnej maszynie deweloperskiej, a następnie przechowywanie lub udostępnianie obrazów kontenerów za pośrednictwem rejestru kontenerów, takiego jak Docker Hub lub Azure Container Registry.

Gdy aplikacje stają się coraz większe, obejmując wiele kontenerów wdrożonych na wielu serwerach, ich obsługa staja się coraz bardziej złożona. Chociaż platforma Docker zapewnia otwarty standard tworzenia pakietów konteneryzowanych aplikacji i ich dystrybucji, potencjalne komplikacje mogą szybko narastać. W jaki sposób koordynować i planować działanie wielu kontenerów? W jaki sposób różne kontenery w aplikacji komunikują się ze sobą? W jaki sposób skalować wiele wystąpień kontenerów? Rozwiązanie tych problemów ułatwia platforma Kubernetes.

Platforma Kubernetes i orkiestracja kontenerów

Platforma Kubernetes to oprogramowanie do orkiestracji typu open source, które udostępnia interfejs API do kontrolowania, gdzie i w jaki sposób uruchamiane są te kontenery. Platforma ta umożliwia uruchamianie kontenerów i obciążeń platformy Docker oraz ułatwia rozwiązywanie komplikacji występujących podczas próby skalowania wielu kontenerów wdrożonych na wielu serwerach.

Dzięki platformie Kubernetes możesz zorganizować klaster maszyn wirtualnych i zaplanować uruchamianie kontenerów na tych maszynach wirtualnych na podstawie ich dostępnych zasobów obliczeniowych oraz wymagań poszczególnych kontenerów dotyczących zasobów. Kontenery są zgrupowane w zasobnikach — podstawowej jednostce operacyjnej platformy Kubernetes. Możliwe jest skalowanie tych kontenerów i zasobników do żądanego stanu oraz zarządzanie ich cyklem życia, aby zapewnić poprawne działanie swoich aplikacji.

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

Platformy Kubernetes i Docker są często porównywane, ale bardziej uzasadnione jest porównywanie platformy Kubernetes i rozwiązania Docker Swarm. Rozwiązanie Docker Swarm to technologia orkiestracji platformy Docker, która koncentruje się na zapewnianiu klastrowania kontenerów platformy Docker. Rozwiązanie to jest ściśle związane z ekosystemem platformy Docker i używa własnego interfejsu API.

Podstawową różnicą między platformami Kubernetes i Docker jest sposób uruchamiania: platforma Kubernetes jest przeznaczona do uruchamiania w ramach klastra, natomiast platforma Docker w ramach pojedynczego węzła. Platforma Kubernetes jest bardziej złożona od rozwiązania Docker Swarm i jest przeznaczona do efektywnego koordynowania klastrów węzłów na dużą skalę w środowisku produkcyjnym. Zasobniki platformy Kubernetes, czyli jednostki do planowania mogące zawierać co najmniej jeden kontener w ekosystemie platformy Kubernetes — są dystrybuowane wśród węzłów w celu zapewnienia wysokiej dostępności.

Platformy Kubernetes i Docker — najlepiej działają razem

Kontenery zapewniają możliwość jednorazowego utworzenia kodu, a następnie uruchamiania go w dowolnym miejscu, natomiast platforma Kubernetes pozwala orkiestrować i zarządzać wszystkimi zasobami kontenerów z poziomu jednej płaszczyzny kontroli. Ułatwia to wykonywanie operacji sieciowych, równoważenie obciążenia, zabezpieczanie oraz skalowanie we wszystkich węzłów platformy Kubernetes, w ramach których są uruchamiane kontenery. Platforma Kubernetes posiada również wbudowane mechanizmy izolacji, takie jak przestrzenie nazw, które umożliwiają grupowanie zasobów kontenerów według uprawnień dostępu, środowisk przejściowych i nie tylko. Te konstrukcje ułatwiają firmom IT zapewnianie deweloperom samoobsługowego dostępu do zasobów oraz umożliwiają deweloperom współpracę w ramach nawet najbardziej skomplikowanej architektury mikrousług bez potrzeby tworzenia modelu całej aplikacji w ich środowisku deweloperskim. Połączenie praktyk DevOps z kontenerami oraz platformą Kubernetes pozwala zapewnić podstawę dla architektury mikrousług cechującą się możliwością szybkiego dostarczania i skalowalną orkiestracją aplikacji natywnych dla chmury.

W skrócie możesz używać platformy Kubernetes i Docker, aby:

  • Zapewnić większą niezawodność infrastruktury i dostępność aplikacji. Twoja aplikacja będzie w trybie online nawet wtedy, gdy niektóre węzły przejdą w trybu offline.
  • Zapewnić lepszą skalowalność aplikacji. Jeśli Twoja aplikacja jest coraz bardziej obciążona i konieczne jest przeprowadzenie zwiększania skali w poziomie w celu udostępnienia lepszego środowiska użytkownika, wystarczy jedynie uruchomić więcej kontenerów lub dodać więcej węzłów w klastrze Kubernetes.

Platforma Kubernetes współdziała z platformą Docker. Platforma Docker zapewnia otwarty standard pakowania i dystrybucji aplikacji konteneryzowanych. Za pomocą platformy Docker możesz tworzyć i uruchamiać kontenery, a także przechowywać i udostępniać obrazy kontenerów. W łatwy sposób można uruchomić kompilację platformy Docker w ramach klastra Kubernetes, ale sama platforma Kubernetes nie jest kompletnym rozwiązaniem. Aby zoptymalizować działanie platformy Kubernetes w środowisku produkcyjnym, zaimplementuj dodatkowe narzędzia i usługi w celu zarządzania zabezpieczeniami, nadzorem i tożsamością oraz uzyskiwania dostępu, korzystając z przepływów pracy ciągłej integracji/ciągłego wdrażania oraz innych praktyk DevOps.

Architektury rozwiązań platformy Kubernetes i Docker w środowisku produkcyjnym

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. Przegląd
  2. Przepływ

Przegląd

Korzystaj z usługi AKS w celu optymalizowania skalowania w poziomie, mechanizmu samonaprawiania, równoważenia obciążenia i zarządzania wpisami tajnymi.

Przepływ

  1. 1 Użycie środowiska IDE, takiego jak program Visual Studio, aby zatwierdzić zmiany w usłudze GitHub.
  2. 2 Usługa GitHub wyzwala nową kompilację w usłudze Azure DevOps
  3. 3 Usługa Azure DevOps pakuje mikrousługi jako kontenery i wypychają je do usługi Azure Container Registry
  4. 4 Kontenery są wdrażane w klastrze usługi AKS
  5. 5 Dostęp do zasobów jest zabezpieczany za pomocą usługi Azure Active Directory
  6. 6 Użytkownicy uzyskują dostęp do usług za pośrednictwem aplikacji i witryn internetowych
  7. 7 Administratorzy uzyskują dostęp do aplikacji za pomocą osobnego portalu administratora
  8. 8 Mikrousługi przechowują i pobierają informacje przy użyciu baz danych
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. Przegląd
  2. Przepływ

Przegląd

Metodyka DevOps i platforma Kubernetes lepiej działają razem. Dzięki zaimplementowaniu bezpiecznej metodyki DevOps razem z platformą Kubernetes na platformie Azure możesz osiągnąć równowagę między szybkością a bezpieczeństwem i szybciej dostarczać kod na dużą skalę. Zastosuj zabezpieczenia zgodności w procesach deweloperskich, korzystając z ciągłej integracji/ciągłego wdrażania z dynamicznymi mechanizmami kontroli zasad i przyspiesz pętlę opinii dzięki ciągłemu monitorowaniu. Usługa Azure Pipelines umożliwia szybkie dostarczanie, jednocześnie zapewniając wymuszanie krytycznych zasad za pomocą usługi Azure Policy. Platforma Azure oferuje możliwość obserwacji w czasie rzeczywistym dla potoków kompilacji i wydań oraz możliwość stosowania inspekcji zgodności i ponownych konfiguracji.

Przepływ

  1. 1 Szybkie iterowanie, testowanie i debugowanie razem różnych części aplikacji w tym samym klastrze Kubernetes
  2. 2 Kod jest scalany w repozytorium GitHub, po czym zautomatyzowane kompilacje i testy są uruchamiane przez usługę Azure Pipelines
  3. 3 Obraz kontenera jest rejestrowany w usłudze Azure Container Registry
  4. 4 Klastry Kubernetes są aprowizowane przy użyciu narzędzi, takich jak Terraform. Pakiety chart narzędzia Helm zainstalowane za pomocą narzędzia Terraform definiują żądany stan zasobów i konfiguracji aplikacji
  5. 5 Operatorzy wymuszają zasady nadzoru nad wdrożeniami w klastrze usługi AKS
  6. 6 Potok wydania automatycznie wykonuje wstępnie zdefiniowaną strategię wdrażania dla każdej zmiany kodu
  7. 7 Inspekcja i wymuszanie zasad zostały dodane do potoku ciągłej integracji/ciągłego dostarczania przy użyciu usługi Azure Policy
  8. 8 Telemetria aplikacji, monitorowanie kondycji kontenerów i analiza dzienników w czasie rzeczywistym są włączane przy użyciu usługi Azure Monitor
  9. 9 Szczegółowe informacje są używane do rozwiązywania problemów i przekazywane do planów następnego przebiegu

Wykorzystaj mocne strony rozwiązania Kubernetes dzięki platformie Azure

Wdrażanie konteneryzowanych aplikacji i zarządzanie nimi jest łatwe za pomocą usługi Azure Kubernetes Service (AKS). Oferuje ona bezserwerową platformę Kubernetes, zintegrowane środowisko ciągłej integracji/ciągłego wdrażania oraz zabezpieczenia i nadzór klasy korporacyjnej. Połącz zespoły deweloperskie i operacyjne na jednej platformie, aby szybko i pewnie tworzyły, dostarczały i skalowały aplikacje.

Wprowadzenie do platform Kubernetes i Docker