Wikipedysta:JerzyEL/brudnopis: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
JerzyEL (dyskusja | edycje)
Nie podano opisu zmian
JerzyEL (dyskusja | edycje)
Nie podano opisu zmian
Linia 17:
}}
 
'''Kubernetes''' (znanystylizowany również jakona '''k8s'''<ref name=":2">{{Cytuj |tytuł = What is Kubernetes? |data dostępu = 2017-03-31 <!-- nieprzetłumaczone parametry: | website = Kubernetes --> |url = https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/}}</ref>) – to [[Otwarte oprogramowanie|otwartaotwartoźródłowa]] platforma do zarządzania, automatyzacji i skalowania aplikacji kontenerowych. Jego pierwotna wersja została stworzona w 2014 roku przez [[Google|Google]], a obecnie zarządzanyrozwijany jest przez [[Cloud Native Computing Foundation|Cloud Native Computing Foundation]]. Kubernetes działa z wieloma narzędziami kontenerowymi, w tym z [[Docker (oprogramowanie)|Dockerem]]<ref>{{Cytuj |tytuł = Kubernetes v1.12: Introducing RuntimeClass |data dostępu = 2019-08-13 |opublikowany = kubernetes.io |url = https://kubernetes.io/blog/2018/10/10/kubernetes-v1.12-introducing-runtimeclass/ |język = en}}</ref>. Jest również wspierany przez większość [[Chmura publiczna|chmur publicznych]] i dostarczany w usłudze [[Platform as a Service|PaaS]] oraz [[Infrastructure as a Service|IaaS]]. Wielu dostawców oferuje także jego własne wersjedystrybucje Kubernetes pod inną nazwą.
== Historia ==
[[File:GoogleCloudKubernetes.jpg|thumb|Dyskusja na temat Google Container Engine podczas Google Cloud Summit|alt=]]
Pracę nad projektem Kubernetes ([[wikt:κυβερνήτης|κυβερνήτης]], [[Język grecki|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<ref>{{Cytuj |autor = Cade Metz |tytuł = Google Made Its Secret Blueprint Public to Boost Its Cloud |czasopismo = Wired |data = 2015-06-10 |data dostępu = 2019-08-13 |issn = 1059-1028 |url = https://www.wired.com/2015/06/google-kubernetes-says-future-cloud-computing/}}</ref>. 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]]<ref>{{Cytuj |autor = |tytuł = Large-scale cluster management at Google with Borg |data = |data dostępu = 2019-08-21 |opublikowany = ai.google |url = https://ai.google/research/pubs/pub43438}}</ref><ref>{{Cytuj |tytuł = Borg, Omega, and Kubernetes - ACM Queue |data dostępu = 2019-08-21 |opublikowany = queue.acm.org |url = https://queue.acm.org/detail.cfm?id=2898444}}</ref>. Oryginalna [[Kryptonim|nazwa kodowa]] Kubernetes w Google to Projekt Siedem z Dziewięciu (ang. ''Project Seven of Nine''), co jest odniesieniem do fikcyjnej [[Siedem z Dziewięciu|postaci z serialu Star Trek o tej samej nazwie]], która jest "bardziej przyjaznym" [[Borg (Star Trek)|Borgiem]]<ref>{{Cytuj |tytuł = Early Stage Startup Heptio Aims to Make Kubernetes Friendly |data dostępu = 2019-08-21 |opublikowany = eWEEK |url = https://www.eweek.com/cloud/early-stage-startup-heptio-aims-to-make-kubernetes-friendly}}</ref>. Siedem szprych na [[Koło sterowe|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 (język programowania)|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)<ref>{{Cytuj |tytuł = As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation |data dostępu = 2019-08-21 |opublikowany = TechCrunch |url = http://social.techcrunch.com/2015/07/21/as-kubernetes-hits-1-0-google-donates-technology-to-newly-formed-cloud-native-computing-foundation-with-ibm-intel-twitter-and-others/ |język = en-US}}</ref>. 6 marca 2018 roku projekt Kubernetes zajął dziewiąte miejsce w commitachliczbie [[Git (oprogramowanie)|commitów]] na [[GitHub]] oraz drugie miejsce w autorachliczbie ikontrybutorów wydaniach dotyczącychi jądraotworzonych Linuksa[[Bugtracker|issues]]<ref>{{Cytuj |autor = Sarah Conway |tytuł = Kubernetes Is First CNCF Project To Graduate |data = 2018-03-06 |data dostępu = 2019-08-21 |opublikowany = Cloud Native Computing Foundation |url = https://www.cncf.io/blog/2018/03/06/kubernetes-first-cncf-project-graduate/ |język = en-US}}</ref>.
 
== Obiekty Kubernetes ==
Kubernetes definiujeudostępnia zestaw elementów składowych („prymitywów”)narzędzi, które łącznie zapewniają mechanizmy wdrażania, utrzymywania i skalowania aplikacji w oparciu o procesor, pamięć<ref>{{Cytuj |autor = Priyanka Sharma |tytuł = Autoscaling based on CPU/Memory in Kubernetes — Part II |data = 2017-04-13 |data dostępu = 2019-08-22 |opublikowany = Medium |url = https://blog.powerupcloud.com/autoscaling-based-on-cpu-memory-in-kubernetes-part-ii-fe2e495bddd4 |język = en}}</ref> lub niestandardowe parametry<ref>{{Cytuj |tytuł = Configure Kubernetes Autoscaling with Custom Metrics |data = 2018-11-15 |data dostępu = 2019-08-22 |opublikowany = docs.bitnami.com |url = https://docs.bitnami.com/kubernetes/how-to/configure-autoscaling-custom-metrics/}}</ref>. Kubernetes jestzostał luźnozaprojektowany powiązanytak, iaby był elastyczny, abyw celu sprostaćumożliwienia różnymszerokiego obciążeniomwykorzystania. Ta elastyczność jest w dużej mierze zapewniana przez interfejs[[Interfejs programowania aplikacji|API]] Kubernetes, który jest wykorzystywany przez komponenty wewnętrzne, a także przez rozszerzenia i kontenery działająceuruchomione naprzez Kubernetes<ref>{{Cytuj |tytuł = An Introduction to Kubernetes |data dostępu = 2019-08-22 |opublikowany = DigitalOcean |url = https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes |język = en}}</ref>. Platforma kontroluje zasoby obliczeniowe i pamięciowe, definiując je jako Obiektyobiekty, którymi następnie można zarządzać. Kluczowymi obiektami Kubernetes są:
 
=== PodPody ===
WyższyW poziomemnomenklaturze abstrakcjiprojektu grupujących''pod'' konteneryzowaneoznacza abstrakcję grupującą skonteneryzowane komponenty. SkładaPod składa się z jednego lub kilku kontenerów znajdujących się wna tym samym miejscu w [[Host|hoście]], mogących współdzielić zasoby. Pod jest podstawowąnajmniejszą jednostką możliwą do uruchomienia w Kubernetes<ref>{{Cytuj |tytuł = Pods |data dostępu = 2019-08-22 |opublikowany = kubernetes.io |url = https://kubernetes.io/docs/concepts/workloads/pods/pod/ |język = en}}</ref>.
 
=== Usługi (ang. services) ===
Każda kapsuła w Kubernetes ma przypisany unikalny [[Adres IP|''adres'' ''IP'']] ''kapsuły'' w klastrze, co umożliwia aplikacjom korzystanie z portów bez ryzyka konfliktu<ref>{{Cytuj |tytuł = Kubernetes 101 – Networking |data = 2015-02-12 |data dostępu = 2019-08-22 |opublikowany = Das Blinken Lichten |url = http://www.dasblinkenlichten.com/kubernetes-101-networking/ |język = en-US}}</ref>. Wewnątrz zasobnika wszystkie kontenery mogą odnosić się do siebie na komputerze lokalnym, ale kontener w jednym zasobniku nie ma możliwości bezpośredniego adresowania innego kontenera w innym zasobniku; w tym celu musi użyć adresu IP zasobnika. Twórca aplikacji nigdy nie powinien jednak używać adresu IP zasobnika, aby odwoływać się / wywoływać możliwości w innym zasobniku, ponieważ adresy IP zasobników są efemeryczne - określony zasobnik, do którego się odnoszą, może zostać przypisany do innego adresu IP zasobnika po ponownym uruchomieniu. Zamiast tego powinni użyć odwołania do usługi, która zawiera odniesienie do docelowego zasobnika pod określonym adresem IP zasobnika.
 
Kapsuła może zdefiniować wolumin, taki jak lokalny katalog dysku lub dysk sieciowy, i udostępnić go kontenerom w kapsule<ref>{{Cytuj |autor = James Strachan |tytuł = Kubernetes for developers |data = 2015-05-22 |data dostępu = 2019-08-22 |opublikowany = Medium |url = https://blog.fabric8.io/kubernetes-for-developers-2a9c7202fcd3 |język = en}}</ref>. Strąkami można zarządzać ręcznie za pośrednictwem interfejsu [[Interfejs programowania aplikacji|API]] Kubernetes lub ich zarządzanie można przekazać do kontrolera<ref>{{Cytuj |tytuł = An Introduction to Kubernetes |data dostępu = 2019-08-22 |opublikowany = DigitalOcean |url = https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes |język = en}}</ref>. Takie woluminy są również podstawą funkcji Kubernetes w ConfigMaps (zapewniających dostęp do konfiguracji poprzez system plików widoczny dla kontenera) i Secrets (w celu zapewnienia dostępu do poświadczeń potrzebnych do bezpiecznego dostępu do zasobów zdalnych, poprzez zapewnienie tych poświadczeń w systemie plików tylko widocznym do autoryzowanych pojemników).
 
=== Usługi ===
[[Plik:Pod-networking.png|mały|700x700px|Uproszczony widok pokazujący, w jaki sposób Usługi współdziałają z siecią Pod w klastrze Kubernetes]]
Usługi Kubernetes to zestaw modułówpodów współpracujących ze sobą, tak jak jedna [[Architektura wielowarstwowa|wielowarstwowa]] aplikacja. Zestaw Podówpodów stanowiących usługę jest definiowany przez selektor etykiet<ref>{{Cytuj |tytuł = An Introduction to Kubernetes |data dostępu = 2019-08-22 |opublikowany = DigitalOcean |url = https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes |język = en}}</ref>. Kubernetes zapewnia dwa tryby wykrywania usług, wykorzystując zmienne środowiskowe lub DNS Kubernetes<ref>{{Cytuj |tytuł = Service |data dostępu = 2019-08-22 |opublikowany = kubernetes.io |url = https://kubernetes.io/docs/concepts/services-networking/service/ |język = en}}</ref>. Wykrywanie usług przypisuje do usługi stabilny adres IP i [[Domain Name System|nazwę DNS]], a obciążenie równoważy ruch w sposób okrężny do połączeń sieciowych tego adresu IP między zasobnikami pasującymi do selektora (nawet jeśli awarie powodują, że zasobniki przenoszą się z maszyny na maszynę)<ref>{{Cytuj |tytuł = Kubernetes 101 – Networking |data = 2015-02-12 |data dostępu = 2019-08-22 |opublikowany = Das Blinken Lichten |url = http://www.dasblinkenlichten.com/kubernetes-101-networking/ |język = en-US}}</ref>. Domyślnie usługa jest widoczna w klastrze (np. podsystemy [[Front-end i back-end|back-endu]] mogą być zgrupowane w usłudze, a żądania z podsystemów front-endu są równoważone obciążeniem), ale usługa może być również widoczna poza klastrem (np. dla klientów, w celu dotarcia do front-endów)<ref>{{Cytuj |tytuł = Kubernetes 101 – External access into the cluster |data = 2015-02-19 |data dostępu = 2019-08-22 |opublikowany = Das Blinken Lichten |url = http://www.dasblinkenlichten.com/kubernetes-101-external-access-into-the-cluster/ |język = en-US}}</ref>.
 
=== WolumenyWoluminy (ang. volumes) ===
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ść ograniczona w niczym innym niż trywialnym zastosowaniuograniczająca. Wolumin Kubernetes zapewnia trwałe miejsce do przechowywania, które istnieje przez cały okres eksploatacji zasobnika/poda. Pamięć ta może być również wykorzystana jako współdzielone miejsce na dysku dla kontenerów w zasobniku. Woluminy są montowane w określonych punktach montowania w kontenerze, które są zdefiniowane przez konfigurację zasobnika i nie mogą być montowane na innych woluminach ani linkować do innych woluminów. Ten sam wolumin można zamontować w różnych punktach drzewa systemu plików za pomocą różnych kontenerów.
 
=== Przestrzenie nazw (ang. namespaces) ===
Kubernetes zapewniaudostępnia partycjonowaniewspółdzielone zarządzanychzasoby zasobówprzez udostępnienie na niewyłączność nakładająceprzy siępomocy zestawyprzestrzeni zwanenazw. przestrzeniamiPrzestrzenie nazw. przeznaczone do użytku w środowiskach z wieloma użytkownikami rozproszonymi w wielu zespołach lub projektach, a nawet w środowiskachcelu wydzielenia oddzielnychśrodowisk, takich jak programowaniedeweloperskie, testowanietestowe i produkcjaprodukcyjne.
 
=== Sekrety (ang. secrets) ===
Częstym wyzwaniem dla twórców aplikacji jest decydowanie, gdzie przechowywać poufneoraz informacje ijak zarządzać nimiinformacjami poufnymi, takimi jak hasła, tokeny [[OAuth]] i klucze [[Secure Shell|ssh]]. Mechanizm dostarczony przez Kubernetes nazywa się „sekretami”. Sekrety są bezpieczniejsze i bardziej elastyczne niż umieszczanie wrażliwych danych w definicji zasobnikapoda lub w obrazie kontenera. Same dane są przechowywane na urządzeniu głównym, który jest wysoce zabezpieczoną maszyną, do której nikt nie powinien mieć dostępu do logowania. Sekret jest wysyłany do węzła tylko wtedy, gdy wymaga tego zasobnik. Kubernetes zachowa to w pamięci w tym węźle. Po usunięciu zasobnika zależnego od tajnego klucza, usuwana jest również kopia w pamięci. Dane są dostępne dla zasobnika na jeden z dwóch sposobów: (a) jako zmienne środowiskowe (które zostaną utworzone przez Kubernetes po uruchomieniu zasobnika) lub (b) dostępne w systemie plików widocznym tylko z zasobnika.
 
== MikrousługiMikroserwisy ==
Kubernetes jest powszechnie używany jako sposób hostowania implementacji opartej na mikrousługachmikroserwisów, ponieważ wraz z ekosystemem powiązanych narzędzi zapewnia wszystkie możliwości niezbędne do rozwiązaniabudowania kluczowychaplikacji problemów związanychzgodnie z [https://microservices.io architekturą mikrousługmikroserwisów].
 
== Przypisy ==