Kubernetes i orkiestracja kontenerów

W miarę zwiększania się złożoności systemów IT, pojawiło się zapotrzebowanie na zarządzanie rozporoszonymi, kontenerowymi aplikacjami na masową skalę. Rozbudowane systemy potrafią wykorzystywać nawet setki kontenerów umieszczonych na wielu serwerach, uniemożliwiając ręczne zarządzanie. Tu z pomocą przychodzi orkiestracja kontenerów, czyli proces polegający na automatyzacji wdrażania, zarządzania, skalowania i łączenia kontenerów w sieć.  

Najpopularniejszym rozwiązaniem do orkiestracji jest platforma open-source Kubernetes (w skrócie K8s) stworzona przez inżynierów firmy Google, a obecnie odpowiada za nią Cloud Native Computing Foundation. Platforma cieszy się dużym wsparciem społeczności i globalnych przedsiębiorstw. Zapewnia dużą elastyczność i oferuje szerokie spektrum funkcji, które stale się powiększa. Za jej pomocą można usprawnić korzystanie z technologii kontenerów, np. w celu budowania aplikacji lub przechowywania wrażliwych danych. 

Co to jest Kubernetes?

Kubernetes to oprogramowanie typu open source (czyli jego kod źródłowy jest upubliczniony i bezpłatny, można go modyfikować i rozpowszechniać), które służy do zarządzania aplikacjami w chmurze. Jest ono szczególnie przydatne w przypadku aplikacji rozbudowanych i skalowalnych. K8s  służy do automatyzacji i skalowania kontenerów linuksowych. Ponadto oferuje wsparcie dla wielu popularnych technologii i frameworków, takich jak Docker czy Apache Mesos. 

Kubernetes pozwala grupować wirtualne maszyny, na których uruchomione zostały kontenery linuksowe, a następnie nimi zarządzać i skalować. Eliminuje problemy, które wiązały się z brakiem automatyzacji operacji kontenerowych systemu Linux. Kubernetes ułatwia zarządzanie klastrami niezależnie od typu infrastruktury, w jakim są hostowane. Sprawdza się doskonale w środowiskach on-premises, chmurach publicznych, prywatnych i hybrydowych. Umożliwia wdrażanie w środowiskach chmurowych aplikacji w oparciu o architekturę mikroserwisów. 

Kubernetes vs Docker

Czym różni się Docker od Kubernetesa? Czasem różnice miedzy tymi rozwiązaniami nie są jasne. Platforma Docker służy do zapisywania aplikacji w formie obrazu  oraz „pakowania” aplikacji w kontenery. Jednocześnie pozwala stworzyć stosunkowo proste, niewielkie  środowisko uruchomieniowe, np. na potrzeby testów. Z kolei Kubernetes jest platformą do uruchamiania i zarządzania już gotowymi kontenerami. Dostarcza środowisko uruchomieniowe dla nich o znacznie większej skali i oparte zwykle o szereg węzłów (serwerów) fizycznych lub wirtualnych. Obu rozwiązań można używać niezależnie. Docker oferuje zresztą własne narzędzie do orkiestracji – Docker Swarm.  

Geneza Kubernetes

Kubernetes to oprogramowanie, które powstało w 2014 roku i zostało opracowane przez Google. Już wtedy ten światowy gigant wykorzystywał i wspierał technologię kontenerową Linuksa. Jak niektórych źródeł wynika, że Google wdraża ponad 2 miliardy kontenerów tygodniowo za pomocą wewnętrznej platformy Borg

W 2015 roku projekt Kubernetes przekazano organizacji Cloud Native Computing Foundation. CNCF został utworzony po to, aby promować technologię kontenerową. Jego start ogłoszono w wraz ze startem Kubernetes 1.0, a program CNCF podano do informacji rok później, w trakcie Cloud Native Day 2016. W skład założycieli CNFC wchodzą: Google, CoreOs, Red Hat, Mesosphere, Twitter, Huawei, Intel, Cisco, IBM, Docker, Univa, VMware. 

Jak działa Kubernetes?

Działanie platformy Kubernetes opiera się na interfejsie API, które pozwala kontrolować poszczególne kontenery. Jest to sposób, który rozwiązuje problem złożoności obsługi kontenerów – zarządzanie coraz to większymi kontenerami na wielu serwerach jest po prostu trudne i nieefektywne, często prowadzi do blokowania infrastruktury lub dostawcy chmury. Dzięki Kubernetes wszystkie procesy zostają uporządkowane, a my zyskujemy nad nimi kontrolę. 

Jedną z funkcjonalności Kubernetes jest również możliwość planowania uruchomienia kontenerów na wcześniej zorganizowanym klastrze maszyn wirtualnych. Platforma bierze pod uwagę dostępne zasoby obliczeniowe i zapewnia skalowalność kontenerów na różnych poziomach. 

Kubernetes wykrywa usługi i równoważy obciążenia oraz automatyzuje większość procesów, m.in. rollouts i rollbacks. Kubernetes zapewnia niezawodność dzięki funkcjom, które pozwalają na utrzymanie aplikacji w działaniu nawet w przypadku awarii. Monitoruje kontenery w celu lepszego rozdysponowania zasobów, ponownie je uruchamia, gdy ulegną awarii.  

Korzyści z używania Kubernetes

Z Kubernetes korzystają już nie tylko światowi giganci, ale także startupy i przedsiębiorstwa, które dopiero co poznały systemy obliczeniowe. Oczywiście, argument o tym, że “wszyscy” do orkiestracji kontenerów używają Kubernetes, nie jest powodem, który przekona świadomego przedsiębiorcę. Tym, co odgrywa decydującą rolę, są korzyści biznesowe. Oto najważniejsze z nich: 

  • Wspierane oprogramowanie 

Chociaż rozwiązań ułatwiających orkiestrację kontenerów jest wiele, to Kubernetes cieszy się największym wsparciem zarówno przemysłu, jak i szeroko rozumianej społeczności. Już wcześniej wspomniana lista założycieli CNCF, w skład której wchodzą największe globalne przedsiębiorstwa, robi wrażenie. Przy tak dużym wsparciu można liczyć na to, że Kubernetes długo utrzyma pozycję lidera, a nowe technologie dalej będą wdrażane najszybciej właśnie do K8s. 

  • Duże doświadczenie

Architektura Kubernetes opiera się na latach doświadczenia operacyjnego inżynierów Google. Ma już ponad 10 lat, dzięki czemu jest to sprawdzona platforma z opracowanymi standardami.

  • Szeroka funkcjonalność

Kubernetes składa się z wielu funkcji, które nie występują w innych systemach zarządzania kontenerami lub znajdują się w pojedynczych oprogramowaniach. W K8s wybór języków oprogramowania, struktur czy obciążeń jest na tyle duży, że zaspokaja potrzeby różnego rodzaju użytkowników i zapewnia elastyczność. 

  • Ciągły rozwój

Duże wsparcie globalnych przedsiębiorstw i społeczności, w skład której wchodzą liczni programiści i inżynierowie, sprawia, że w Kubernetes ciągle pojawiają się nowe funkcje. Jest to system, którego tempo rozwoju nieustannie wzrasta.