Blog: Narzedzia devops 2 | Mikroserwisy i konteneryzacja

Dlaczego Kubernetes zyskuje na popularności? Pięć ważnych powodów

Dlaczego Kubernetes zyskuje na popularności? Pięć ważnych powodów
  • 859 views

Od dłuższego czasu możemy zauważyć rosnącą popularność konteneryzacji. Duża w tym zasługa platformy Kubernetes. Według opublikowanego w 2021 roku raportu Red Hat Survey , 85% ankietowanych liderów IT wskazało wspomnianą wyżej technologię jako bardzo ważny element strategii tworzenia nowego oprogramowania, szczególnie w środowisku chmurowych

Udostępnij!

Dlaczego Kubernetes zyskuje na popularności? Pięć ważnych powodów

Skąd wzięła się szybko zdobywana sława tego narzędzia? Wymieńmy kilka powodów:

1. Open-source

Rozwiązania typu open-source – oparte na otwartym kodzie – są bardzo popularne w branży IT. Projekty tego typu często są wspierane przez duże firmy technologicznie. Stworzony w 2014 roku przez Google Kubernetes, potocznie nazywany K8s, nie jest wyjątkiem. W chwili powstania głównym zadaniem Kubernetesa było wspieranie i promowanie technologii konteneryzacji systemu Linux; rok później projekt przekazano utworzonej w celu dalszej promocji i rozwoju konterneryzacji organizacji Cloud Native Computing Foundation. W tym samym czasie miała również miejsce premiera Kubernetesa w wersji 1.0; dzięki formatowi open-source  projekt mógł zostać przystosowany do  bardzo różnych potrzeb. Na Kubernetesie bazuje m.in. popularne rozwiązanie od Red Hat – Openshift. Środowiska chmurowe dostarczają gotowe klastry (np. Google Kubernetes Engine), które pozwalają firmom oszczędzić czas i koszty związane np. z utrzymaniem (więcej w punkcie nr. 2).

2.Infrastruktura w postaci kodu

To bardzo ważny argument dla nowych projektów technologicznych. Obecnie kładzie się coraz większy nacisk na rozwiązania z zakresu DevOps, takie jak m.in. CI/CD (Continuous Integration i Continuous Delivery) oraz IaaC (Infrastructure as a Code). Dzięki wykorzystaniu manifestu YAML oraz Dockerfile możemy dostarczać nowe wersje oprogramowania  w pełni zautomatyzowany sposób, oszczędzając czas oraz koszty wprowadzania nowych wersji. Na rynku dostępne są dodatkowe narzędzia, które pozwalają budować całe klastry od podstaw, również za pomocą kodu (np. Terraform).

3. Wysoka dostępność i skalowalność dostępna „od ręki”

Jedna z ważnych zalet Kubernetesa. Aplikacja oraz jej elementy, takie jak np. przestrzeń dyskowa lub  systemy odpowiedzialne za ruch sieciowy, są tworzone w tak zwanych ”podach”, które dzięki usłudze ReplicaSet (RS) możemy również replikować. Utworzone pody w każdej chwili mogą zostać przeskalowane w górę lub w dół. Reszta zostanie wykonana automatycznie przez K8s.

ReplicaSet odpowiada także za monitorowanie ilości replik. Jeżeli podczas pracy któregoś z podów dojdzie do awarii, RS natychmiastowo stworzy w jego miejsce zastępczy pod.

4.Zero Downtime Deployment

Jest to kolejna ważna zaleta środowisk opartych o kontenery. Dzięki obiektowi typu Deployment możemy wdrażać nowe wersje programu bez konieczności wyłączania do niej dostępu. Deployment działa domyślnie na podstawie strategii aktualizacji nazywanej RollingUpdate. Oznacza to, że w czasie wdrażania nowej wersji aplikacji powstanie nowa replika, która, współpracując z aktualną, stopniowo zamienia aktualne pody z nową wersją kodu. Przykładowo – przy aplikacji składającej się z czterech podów, w momencie wdrażania nowej wersji jeden z nich zostanie wyłączony, a na jego miejsce powstanie nowy – już dla kolejnej wersji. Cały proces będzie się wykonywał, dopóki nie zostaną zastąpione wszystkie pody. Jeżeli podczas wdrażania pojawi się błąd, procedura nie będzie dalej kontynuowana . Oznacza to, że w  momencie otrzymania błędu, zostanie wyłączony tylko jeden pod naszej aplikacji (pozostałe trzy będą działać bez zmian). Innymi słowy – kolejne pody będą zastępowane nowymi, jeżeli poprzednie zostały zastąpione i działają prawidłowo.

5. Dynamiczne zarządzanie zasobami i infrastruktura klastrowa

W przeciwieństwie do wirtualizacji, kontenery nie rezerwują podanej w konfiguracji pamięci RAM oraz mocy procesora. Użytkownik klastra podczas przygotowywania ustala minimalne wymagania (wymagane do uruchomienia poda) oraz maksymalne, jakie mogą zostać przydzielone. Przykładowo – jeżeli ustawimy maksymalny RAM na poziomie 2GB, nasza umieszczona w podzie aplikacja nie będzie zajmować 2GB RAMu  przez cały czas. Niewykorzystane zasoby są dostępne dla innych podów oraz obiektów Kubernetesa.

Poza tym nie jesteśmy ograniczeni pojedynczą maszyną. Kubernetes może pracować w klastrze (konfiguracja main-worker albo main-main), z kolei w aplikacji możemy wprowadzić odpowiednie ograniczenia konfiguracji. Wybrany pod może na przykład zostać uruchomiony tylko na wybranych maszynach lub wybrane pody muszą zostać uruchomione na tym węźle. Pozwala to na sprawne i zwinne zarządzanie infrastrukturą aplikacji.