Kubernetes

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Kubernetes
Autor Google
Pierwsze wydanie 2014-06-077 czerwca 2014[1]
Aktualna wersja stabilna 1.15 – 19 czerwca 2019; ponad 6 miesięcy temu
Język programowania Go
Rodzaj Oprogramowanie do zarządzania klastrami kontenerowymi
Licencja Apache License 2.0
Strona internetowa

Kubernetes (stylizowany na k8s[2]) – otwartoźródłowa platforma do zarządzania, automatyzacji i skalowania aplikacji kontenerowych. Jego pierwotna wersja została stworzona w 2014 roku przez Google, a obecnie rozwijany jest przez Cloud Native Computing Foundation. Kubernetes działa z wieloma narzędziami kontenerowymi, w tym z Dockerem[3]. Jest również wspierany przez większość chmur publicznych i dostarczany w usłudze PaaS oraz IaaS. Wielu dostawców oferuje także własne dystrybucje Kubernetes pod inną nazwą.

Historia[edytuj | edytuj kod]

Dyskusja na temat Google Container Engine podczas Google Cloud Summit

Pracę nad projektem Kubernetes (κυβερνήτης, gr. gubernator, kapitan) rozpoczęli trzej inżynierowie Google: Joe Beda, Brendan Burns i Craig McLuckie. Później dołączyli do nich inni pracownicy Google, w tym Brian Grant i Tim Hockin[4]. W połowie 2014 roku firma Google ogłosiła pierwsze wydanie platformy. Duży wpływ na rozwój projektu miał opracowany w Google system Borg[5][6]. Oryginalna nazwa kodowa Kubernetes w Google to Projekt Siedem z Dziewięciu (ang. Project Seven of Nine), co jest odniesieniem do fikcyjnej postaci z serialu Star Trek o tej samej nazwie, która jest „bardziej przyjaznym” Borgiem[7]. Siedem szprych na kole logo Kubernetes odnosi się właśnie do tego kryptonimu. Oryginalny projekt Borg został napisany w całości w języku C++, ale przepisany system Kubernetes jest zaimplementowany w Go.

Kubernetes v1.0 został wydany 21 lipca 2015 roku. W tym czasie przy współpracy z Linux Foundation powstała także organizacja Cloud Native Computing Foundation (CNCF)[8]. 6 marca 2018 roku projekt Kubernetes zajął dziewiąte miejsce w liczbie commitów na GitHub oraz drugie miejsce w liczbie kontrybutorów i otworzonych issues[9].

Obiekty Kubernetes[edytuj | edytuj kod]

Kubernetes udostępnia zestaw narzędzi, które zapewniają mechanizmy wdrażania, utrzymywania i skalowania aplikacji w oparciu o procesor, pamięć[10] lub niestandardowe parametry[11]. Kubernetes został zaprojektowany tak, aby był elastyczny w celu umożliwienia szerokiego wykorzystania. Ta elastyczność jest w dużej mierze zapewniana przez API Kubernetes, który jest wykorzystywany przez komponenty wewnętrzne, a także przez rozszerzenia i kontenery uruchomione przez Kubernetes[12]. Platforma kontroluje zasoby obliczeniowe i pamięciowe, definiując je jako obiekty, którymi następnie można zarządzać. Kluczowymi obiektami Kubernetes są:

Pody[edytuj | edytuj kod]

W nomenklaturze projektu pod oznacza abstrakcję grupującą skonteneryzowane komponenty. Pod składa się z jednego lub kilku kontenerów znajdujących się na tym samym hoście, mogących współdzielić zasoby. Pod jest najmniejszą jednostką możliwą do uruchomienia w Kubernetes[13].

Usługi[edytuj | edytuj kod]

Uproszczony widok pokazujący, w jaki sposób Usługi współdziałają z siecią Pod w klastrze Kubernetes

Usługi (ang. services) Kubernetes to zestaw podów współpracujących ze sobą, tak jak jedna wielowarstwowa aplikacja. Zestaw podów stanowiących usługę jest definiowany przez selektor etykiet[14].

Woluminy[edytuj | edytuj kod]

Systemy plików w kontenerze Kubernetes domyślnie zapewniają efemeryczną pamięć masową. Oznacza to, że ponowne uruchomienie poda usuwa wszystkie dane z takich kontenerów, a zatem ta forma przechowywania jest dość ograniczająca. Wolumin (ang. volumes) Kubernetes zapewnia trwałe miejsce do przechowywania, które istnieje przez cały okres eksploatacji poda.

Przestrzenie nazw[edytuj | edytuj kod]

Kubernetes udostępnia współdzielone zasoby przez udostępnienie na wyłączność przy pomocy przestrzeni nazw (ang. namespaces). Przestrzenie nazw są przeznaczone do użytku w środowiskach z wieloma użytkownikami w wielu zespołach lub projektach, a nawet w celu wydzielenia środowisk, takich jak deweloperskie, testowe i produkcyjne.

Sekrety[edytuj | edytuj kod]

Częstym wyzwaniem dla twórców aplikacji jest decydowanie, gdzie przechowywać oraz jak zarządzać informacjami poufnymi, takimi jak hasła, tokeny OAuth i klucze ssh. Mechanizm dostarczony przez Kubernetes nazywa się „sekretami” (ang. secrets). Sekrety są bezpieczniejsze i bardziej elastyczne niż umieszczanie wrażliwych danych w definicji poda lub w obrazie kontenera.

Mikroserwisy[edytuj | edytuj kod]

Kubernetes jest powszechnie używany jako sposób hostowania mikroserwisów, ponieważ wraz z ekosystemem powiązanych narzędzi zapewnia wszystkie możliwości niezbędne do budowania aplikacji zgodnie z architekturą mikroserwisów.

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. First commit · kubernetes/kubernetes@2c4b3a5 · GitHub, github.com [dostęp 2019-09-07] (ang.).
  2. What is Kubernetes? [dostęp 2017-03-31].
  3. Kubernetes v1.12: Introducing RuntimeClass, kubernetes.io [dostęp 2019-08-13] (ang.).
  4. Cade Metz, Google Made Its Secret Blueprint Public to Boost Its Cloud, „Wired”, 10 czerwca 2015, ISSN 1059-1028 [dostęp 2019-08-13].
  5. Large-scale cluster management at Google with Borg, ai.google [dostęp 2019-08-21].
  6. Borg, Omega, and Kubernetes - ACM Queue, queue.acm.org [dostęp 2019-08-21].
  7. Early Stage Startup Heptio Aims to Make Kubernetes Friendly, eWEEK [dostęp 2019-08-21].
  8. As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation, TechCrunch [dostęp 2019-08-21] (ang.).
  9. Sarah Conway, Kubernetes Is First CNCF Project To Graduate, Cloud Native Computing Foundation, 6 marca 2018 [dostęp 2019-08-21] (ang.).
  10. Priyanka Sharma, Autoscaling based on CPU/Memory in Kubernetes — Part II, Medium, 13 kwietnia 2017 [dostęp 2019-08-22] (ang.).
  11. Configure Kubernetes Autoscaling with Custom Metrics, docs.bitnami.com, 15 listopada 2018 [dostęp 2019-08-22].
  12. An Introduction to Kubernetes, DigitalOcean [dostęp 2019-08-22] (ang.).
  13. Pods, kubernetes.io [dostęp 2019-08-22] (ang.).
  14. An Introduction to Kubernetes, DigitalOcean [dostęp 2019-08-22] (ang.).