Co to jest Kubernetes?
Najczęściej pojawiającą się odpowiedzią w internecie, na pytanie co to jest Kubernetes, pada odpowiedź, że jest to rozwiązanie opensourcowe do orkiestracji kontenerów… Jak dla mnie, taka odpowiedź niczego nie wyjaśnia… Dlatego, w poniższym tekście postaram się lepiej wyjaśnić, czym jest właściwie Kubernetes. Szczególnie, ta odpowiedź powinna być jasna dla osób które już poznały trochę samego Dockera czy znają kontenery ogólnie.
W Dockerze każdy obiekt, czy to kontener czy wolumen jest tworzony, czyli powoływany do życia poprzez wpisanie polecenia, ręcznie. Podobnie jest z jego obsługą, to też wymaga od administratora wydania konkretnego polecenia, aby coś się zadziało. Nawet jeśli mamy środowisko graficznego, które upraszcza wpisywanie polecenie na wciśnięcie na przycisku w ładnym menu graficznym, to zawsze to administrator reaguje na sytuację i podejmuje odpowiednie działania. Generalnie wszystko dzieje się ręcznie.
Pewną namiastkę automatyzacji mamy dzięki Docker Compose. Tu możemy wydać jedno polecenie, na przykład docker compose up i dalej ma zadziać się szereg akcji – utworzenie wielu kontenerów, wolumenów, zbudowanie obrazów, uruchomienie usług, itd. To wszystko na podstawie wcześniej przygotowanego pliku w formacie YAML. Tak, w pewnym stopniu jest to już automatyzacja jakiegoś procesu – budowania aplikacji, uruchomienie wiele kontenerów, przygotowania serwisu www.
A co gdybyśmy chcieli jeszcze aby automatycznie tworzyły się kolejne instancje kontenerów by obsłużyć wzmożony ruch do naszego serwisu www w kontenerze…
Albo gdybyśmy chcieli aby nasz serwis internetowy działający w kontenerze był zawsze dostępny, bo były tworzone nowe instalacje w różnych lokalizacjach (klastrach). Tak aby niezależnie od awarii w jednym miejscu zawsze gdzieś działał jakiś kontener z naszym serwisem a użytkownik był przekierowany automagicznie do jakiegoś działającego kontenera z naszym serwisem…
Albo gdybyśmy chcieli łatwo wdrożyć lub wycofać nowa wersję aplikacji (jednym poleceniem) i wrócić do poprzedniej wersji, gdy pójdzie coś nie tak. Wszystko w ten sposób aby klienci nie zauważyli żadnych problemów z dostępem do naszej skonkretyzowanego serwisu www…
I to jako odpowiedź przychodzi właśnie Kubernetes. To narzędzie automatyzuje nam różne sytuacje z życia, których byśmy wymagali od kontenerów. Tak, aby na podstawie definicji w pliku, Kubernetes zadbał o to by sama zadziała się magia i było to automatyczne działanie z kontenerami.
Tak więc czy Kubernetes zastępuje Dockera? Nie. Kubetebnets jest rozwinięciem, rozszerzeniem tego co daje Docker w kontekście kontenerów. To kolejna warstwa do zarządzania tym co mamy w kontenerach (naszymi aplikacjami i serwisami). Aby jeszcze łatwiej zrozumieć czym jest Kubernetes w porównaniu do Dockera to mogę zaryzykować porównanie, że gdy Docker to małe miejskie auto to Kubernetes to już cały autobus.
W uproszczeniu Docker obsługuje kontenery. Natomiast Kubernetes zarządza i automatyzuje procesy związane z działaniem serwisów i aplikacji w kontenerach.
Na koniec ciekawostka, która mi osobiście się bardzo podoba – Kubernetes znaczy Sternik 🙂