Kubernetes: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
JerzyEL (dyskusja | edycje)
Nowy artykuł przetłumaczony z angielskiej Wikipedii https://en.wikipedia.org/wiki/Kubernetes
(Brak różnic)

Wersja z 14:25, 5 wrz 2019

Kubernetes (stylizowany na k8s[2]) – to 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ą.

Kubernetes
logo
ilustracja
Autor Google
Pierwsze wydanie 2014-06-07 7 czerwca 2014(dts)[1]
Aktualna wersja stabilna 1.15 – 19 czerwca 2019; ponad 4 lata temu
Język programowania Go
Rodzaj Oprogramowanie do zarządzania klastrami kontenerowymi
Licencja Apache License 2.0
Strona internetowa

Historia

 
Dyskusja na temat Google Container Engine podczas Google Cloud Summit

Pracę nad projektem Kubernetes (κυβερνήτης, gr. gubarnator, 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

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

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

 
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

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

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

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

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ż

Przypisy

  1. https://github.com/kubernetes/kubernetes/commit/2c4b3a562ce34cddc3f8218a2c4d11c7310e6d56
  2. What is Kubernetes? [online] [dostęp 2017-03-31].
  3. Kubernetes v1.12: Introducing RuntimeClass [online], 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 [online], ai.google [dostęp 2019-08-21].
  6. Borg, Omega, and Kubernetes - ACM Queue [online], queue.acm.org [dostęp 2019-08-21].
  7. Early Stage Startup Heptio Aims to Make Kubernetes Friendly [online], eWEEK [dostęp 2019-08-21].
  8. As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation [online], TechCrunch [dostęp 2019-08-21] (ang.).
  9. Sarah Conway, Kubernetes Is First CNCF Project To Graduate [online], 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 [online], Medium, 13 kwietnia 2017 [dostęp 2019-08-22] (ang.).
  11. Configure Kubernetes Autoscaling with Custom Metrics [online], docs.bitnami.com, 15 listopada 2018 [dostęp 2019-08-22].
  12. An Introduction to Kubernetes [online], DigitalOcean [dostęp 2019-08-22] (ang.).
  13. Pods [online], kubernetes.io [dostęp 2019-08-22] (ang.).
  14. An Introduction to Kubernetes [online], DigitalOcean [dostęp 2019-08-22] (ang.).