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 🙂