Kubernetes

Z Wikipedii, wolnej encyklopedii
Kubernetes
Logo Kubernetes
Logo programu
ilustracja
Autor Google
Pierwsze wydanie 2014-06-07 7 czerwca 2014(dts)[1]
Aktualna wersja stabilna 1.30.0
(17 kwietnia 2024) [±]
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[3] 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[4]. 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 Kubernetes 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[5]. 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[6][7]. 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[8]. 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)[9]. 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[10].

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ęć[11] lub niestandardowe parametry[12]. 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[13]. 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[14].

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[13].

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