Kubernetes
![]() Logo programu | |
![]() | |
Autor | |
---|---|
Pierwsze wydanie | 2014-06-07 7 czerwca 2014(dts)[1] |
Aktualna wersja stabilna | 1.31.0 (13 sierpnia 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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Kubernetes_talk_at_Google_Cloud_Summit.jpg/220px-Kubernetes_talk_at_Google_Cloud_Summit.jpg)
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
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
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Pod-networking.png/700px-Pod-networking.png)
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
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ż
- Docker (oprogramowanie)
- skalowalność
- chmura prywatna
- chmura publiczna
Przypisy
- ↑ First commit · kubernetes/kubernetes@2c4b3a5 · GitHub [online], github.com [dostęp 2019-09-07] (ang.).
- ↑ What is Kubernetes? [online] [dostęp 2017-03-31] .
- ↑ Repozytorium oprogramowania w serwisie GitHub. github.com. [dostęp 2021-08-07]. (ang.).
- ↑ Kubernetes v1.12: Introducing RuntimeClass [online], kubernetes.io [dostęp 2019-08-13] (ang.).
- ↑ CadeC. Metz CadeC., Google Made Its Secret Blueprint Public to Boost Its Cloud, „Wired”, 10 czerwca 2015, ISSN 1059-1028 [dostęp 2019-08-13] .
- ↑ Large-scale cluster management at Google with Borg [online], ai.google [dostęp 2019-08-21] .
- ↑ Borg, Omega, and Kubernetes - ACM Queue [online], queue.acm.org [dostęp 2019-08-21] .
- ↑ Early Stage Startup Heptio Aims to Make Kubernetes Friendly [online], eWEEK [dostęp 2019-08-21] .
- ↑ As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation [online], TechCrunch [dostęp 2019-08-21] (ang.).
- ↑ SarahS. Conway SarahS., Kubernetes Is First CNCF Project To Graduate [online], Cloud Native Computing Foundation, 6 marca 2018 [dostęp 2019-08-21] (ang.).
- ↑ PriyankaP. Sharma PriyankaP., Autoscaling based on CPU/Memory in Kubernetes — Part II [online], Medium, 13 kwietnia 2017 [dostęp 2019-08-22] (ang.).
- ↑ Configure Kubernetes Autoscaling with Custom Metrics [online], docs.bitnami.com, 15 listopada 2018 [dostęp 2019-08-22] [zarchiwizowane z adresu 2019-03-27] .
- ↑ a b An Introduction to Kubernetes [online], DigitalOcean [dostęp 2019-08-22] (ang.).
- ↑ Pods [online], kubernetes.io [dostęp 2019-08-22] (ang.).