Informacje zawarte w tym dokumencie mogą być już nieaktualne
Ten dokument po raz ostatni został zmodyfikowany wcześniej niż wskazuje na to data publikacji jego wersji referencyjnej. To oznacza, że może być już nieaktualny. Jeśli znasz angielski, zajrzyj do oryginalnej, aktualizowanej na bieżąco, wersji dokumentacji: Overview
Przegląd
Kubernetes to przenośna, rozszerzalna platforma oprogramowania open source służąca do zarządzania zadaniami i serwisami uruchamianymi w kontenerach. Umożliwia ich deklaratywną konfigurację i automatyzację. Kubernetes posiada duży i dynamicznie rozwijający się ekosystem. Szeroko dostępne są usługi, wsparcie i dodatkowe narzędzia.
Na tej stronie znajdziesz ogólne informacje o Kubernetesie.
Nazwa Kubernetes pochodzi z języka greckiego i oznacza sternika albo pilota. Skrót
K8s powstał poprzez zastąpienie ośmiu liter pomiędzy "K" i "s". Google otworzyło
projekt Kubernetes publicznie w 2014. Kubernetes korzysta z
piętnastoletniego doświadczenia Google w uruchamianiu wielkoskalowych serwisów i
łączy je z najlepszymi pomysłami i praktykami wypracowanymi przez społeczność.
Do czego potrzebujesz Kubernetesa i jakie są jego możliwości
Kontenery są dobrą metodą na opakowywanie i uruchamianie aplikacji. W środowisku
produkcyjnym musisz zarządzać kontenerami, w których działają aplikacje i pilnować, aby nie było
żadnych przerw w ich dostępności. Przykładowo, kiedy jeden z kontenerów przestaje
działać, musi zostać wymieniony. Nie byłoby prościej, aby takimi działaniami zajmował się jakiś system?
I tu właśnie przychodzi z pomocą Kubernetes! Kubernetes zapewnia środowisko do uruchamiania
systemów rozproszonych o wysokiej niezawodności. Kubernetes obsługuje skalowanie aplikacji,
przełączanie w sytuacjach awaryjnych, różne scenariusze wdrożeń itp. Przykładowo, Kubernetes w łatwy
sposób może zarządzać wdrożeniem nowej wersji oprogramowania zgodnie z metodyką canary deployments.
Kubernetes zapewnia:
- Detekcję nowych serwisów i balansowanie ruchu Kubernetes może
udostępnić kontener używając nazwy DNS lub swojego własnego adresu IP. Jeśli
ruch przychodzący do kontenera jest duży, Kubernetes może balansować
obciążenie i przekierować ruch sieciowy, aby zapewnić stabilność całej instalacji.
- Zarządzanie obsługą składowania danych Kubernetes
umożliwia automatyczne montowanie systemów składowania
danych dowolnego typu - lokalnych, od dostawców chmurowych i innych.
- Automatyczne wdrożenia i wycofywanie zmian Możesz opisać oczekiwany stan instalacji
za pomocą Kubernetesa, który zajmie się doprowadzeniem w sposób
kontrolowany stanu faktycznego do stanu oczekiwanego. Przykładowo, przy pomocy
Kubernetesa możesz zautomatyzować proces tworzenia nowych kontenerów na
potrzeby swojego wdrożenia, usuwania istniejących i przejęcia zasobów przez nowe kontenery.
- Automatyczne zarządzanie dostępnymi zasobami Twoim zadaniem jest dostarczenie
klastra maszyn, które Kubernetes może wykorzystać do uruchamiania zadań w kontenerach.
Określasz zapotrzebowanie na moc procesora i pamięć RAM dla każdego z kontenerów. Kubernetes
rozmieszcza kontenery na maszynach w taki sposób, aby jak najlepiej wykorzystać dostarczone zasoby.
- Samoczynne naprawianie Kubernetes restartuje kontenery, które
przestały działać, wymienia je na nowe, wymusza wyłączenie kontenerów, które
nie odpowiadają na określone zapytania o stan i nie rozgłasza
powiadomień o ich dostępności tak długo, dopóki nie są gotowe do działania.
- Zarządzanie informacjami poufnymi i konfiguracją Kubernetes pozwala składować i
zarządzać informacjami poufnymi, takimi jak hasła, tokeny OAuth czy klucze SSH. Informacje poufne i
zawierające konfigurację aplikacji mogą być dostarczane i zmieniane bez konieczności ponownego
budowania obrazu kontenerów i bez ujawniania poufnych danych w ogólnej konfiguracji oprogramowania.
- Wykonywanie wsadowe Oprócz usług Kubernetes może zarządzać zadaniami
wsadowymi i obciążeniami CI, automatycznie wymieniając kontenery, które ulegną awarii.
- Skalowanie poziome Skaluj swoją aplikację w górę i w dół za pomocą prostego
polecenia, poprzez interfejs użytkownika lub automatycznie na podstawie zużycia CPU.
- Podwójny stos IPv4/IPv6
Przydzielanie adresów IPv4 i IPv6 do podów i usług
- Możliwość rozbudowy Dodawaj funkcje do swojego klastra
Kubernetesa bez konieczności zmiany kodu źródłowego w głównym repozytorium.
Czym Kubernetes nie jest
Kubernetes nie jest tradycyjnym, zawierającym wszystko systemem PaaS (Platform as a Service).
Ponieważ Kubernetes działa w warstwie kontenerów, a nie sprzętu, posiada różne funkcjonalności
ogólnego zastosowania, wspólne dla innych rozwiązań PaaS, takie jak: instalacje (deployments),
skalowanie i balansowanie ruchu, umożliwiając użytkownikom integrację rozwiązań służących do
logowania, monitoringu i ostrzegania. Co ważne, Kubernetes nie jest monolitem i domyślnie dostępne
rozwiązania są opcjonalne i działają jako wtyczki. Kubernetes dostarcza elementy, z których może być
zbudowana platforma deweloperska, ale pozostawia użytkownikowi wybór i elastyczność tam, gdzie jest to ważne.
Kubernetes:
- Nie ogranicza typów aplikacji, które są obsługiwane. Celem Kubernetesa jest możliwość obsługi bardzo
różnorodnego typu zadań, włączając w to aplikacje bezstanowe (stateless), aplikacje ze stanem (stateful) i ogólne
przetwarzanie danych. Jeśli jakaś aplikacja może działać w kontenerze, będzie doskonale sobie radzić w środowisku Kubernetesa.
- Nie oferuje wdrażania aplikacji wprost z kodu źródłowego i nie buduje
aplikacji. Procesy Continuous Integration, Delivery, and Deployment (CI/CD) są
zależne od kultury pracy organizacji, jej preferencji oraz wymagań technicznych.
- Nie dostarcza serwisów z warstwy aplikacyjnej, takich jak warstwy pośrednie
middleware (np. broker wiadomości), środowiska analizy danych (np. Spark), bazy danych (np.
MySQL), cache ani klastrowych systemów składowania danych (np. Ceph) jako usług wbudowanych. Te składniki
mogą być uruchamiane na klastrze Kubernetes i udostępniane innym aplikacjom
przez przenośne rozwiązania, takie jak Open Service Broker.
- Nie wymusza użycia konkretnych systemów zbierania logów, monitorowania ani ostrzegania. Niektóre z tych
rozwiązań są udostępnione jako przykłady. Dostępne są też mechanizmy do gromadzenia i eksportowania różnych metryk.
- Nie dostarcza, ani nie wymusza języka/systemu używanego do konfiguracji (np. Jsonnet). Udostępnia API typu deklaratywnego,
z którego można korzystać za pomocą różnych metod wykorzystujących deklaratywne specyfikacje.
- Nie zapewnia, ani nie wykorzystuje żadnego ogólnego systemu do zarządzania
konfiguracją, utrzymaniem i samo-naprawianiem maszyn.
- Co więcej, nie jest zwykłym systemem planowania (orchestration). W rzeczywistości, eliminuje konieczność orkiestracji.
Zgodnie z definicją techniczną, orkiestracja to wykonywanie określonego ciągu zadań: najpierw A,
potem B i następnie C. Dla kontrastu, Kubernetes składa się z wielu niezależnych, możliwych do złożenia
procesów sterujących, których zadaniem jest doprowadzenie stanu faktycznego do stanu oczekiwanego. Nie ma
znaczenia, w jaki sposób przechodzi się od A do C. Nie ma konieczności scentralizowanego zarządzania. Dzięki
temu otrzymujemy system, który jest potężniejszy, bardziej odporny i niezawodny i dający więcej możliwości rozbudowy.
Trochę historii
Aby zrozumieć, dlaczego Kubernetes stał się taki przydatny, cofnijmy sie trochę w czasie.

Era wdrożeń tradycyjnych:
Na początku aplikacje uruchamiane były na fizycznych serwerach. Nie było możliwości
separowania zasobów poszczególnych aplikacji, co prowadziło do problemów z alokacją
zasobów. Przykładowo, kiedy wiele aplikacji jest uruchomionych na jednym fizycznym
serwerze, część tych aplikacji może zużyć większość dostępnych zasobów, powodując
spowolnienie działania innych. Rozwiązaniem tego problemu mogło być uruchamianie każdej aplikacji na
osobnej maszynie. Niestety, takie podejście ograniczało skalowanie, ponieważ
większość zasobów nie była w pełni wykorzystywana, a utrzymanie wielu fizycznych maszyn było kosztowne.
Era wdrożeń w środowiskach wirtualnych:
Jako rozwiązanie zaproponowano wirtualizację, która umożliwia uruchamianie wielu maszyn wirtualnych
(VM) na jednym procesorze fizycznego serwera. Wirtualizacja pozwala
izolować aplikacje pomiędzy maszynami wirtualnymi, zwiększając w ten sposób bezpieczeństwo,
jako że informacje związane z jedną aplikacją nie są w łatwy sposób dostępne dla pozostałych.
Wirtualizacja pozwala lepiej wykorzystywać zasoby fizycznego serwera i lepiej
skalować, ponieważ aplikacje mogą być łatwo dodawane oraz aktualizowane, pozwala
ograniczyć koszty sprzętu oraz ma wiele innych zalet. Za pomocą wirtualizacji można
udostępnić wybrane zasoby fizyczne jako klaster maszyn wirtualnych "wielokrotnego użytku".
Każda maszyna wirtualna jest pełną maszyną zawierającą własny
system operacyjny pracujący na zwirtualizowanej warstwie sprzętowej.
Era wdrożeń w kontenerach:
Kontenery działają w sposób zbliżony do maszyn wirtualnych, ale mają mniejszy
stopnień wzajemnej izolacji, współdzieląc ten sam system operacyjny. Kontenery
określane są mianem "lekkich". Podobnie, jak maszyna wirtualna, kontener posiada własny
system plików, udział w zasobach procesora, pamięć, przestrzeń procesów itd.
Ponieważ kontenery są definiowane rozłącznie od leżących poniżej warstw infrastruktury,
mogą być łatwiej przenoszone pomiędzy chmurami i różnymi dystrybucjami systemu operacyjnego.
Kontenery zyskały popularność ze względu na swoje zalety, takie jak:
- Szybkość i elastyczność w tworzeniu i instalacji
aplikacji: obraz kontenera buduje się łatwiej niż obraz VM.
- Ułatwienie ciągłego rozwoju, integracji oraz wdrażania aplikacji (
Continuous development, integration, and deployment): obrazy kontenerów mogą być budowane w sposób wiarygodny i częsty. W razie
potrzeby, przywrócenie poprzedniej wersji aplikacji jest stosunkowo łatwie (ponieważ obrazy są niezmienne).
- Rozdzielenie zadań Dev i Ops: obrazy kontenerów
powstają w fazie build/release, a nie w trakcie procesu
instalacji, oddzielając w ten sposób aplikacje od infrastruktury.
- Obserwowalność obejmuje nie tylko informacje i metryki z poziomu systemu operacyjnego,
ale także poprawność działania samej aplikacji i inne sygnały.
- Spójność środowiska na etapach rozwoju oprogramowania, testowania i
działania w trybie produkcyjnym: działa w ten sam sposób na laptopie i w chmurze.
- Możliwość przenoszenia pomiędzy systemami operacyjnymi i platformami chmurowymi: Ubuntu, RHEL,
CoreOS, prywatnymi centrami danych, największymi dostawcami usług chmurowych czy gdziekolwiek indziej.
- Zarządzanie, które w centrum uwagi ma aplikacje: Poziom abstrakcji przeniesiony jest z warstwy systemu operacyjnego
działającego na maszynie wirtualnej na poziom działania aplikacji, która działa na systemie operacyjnym używając zasobów logicznych.
- Luźno powiązane, rozproszone i elastyczne "swobodne" mikro serwisy: Aplikacje podzielone
są na mniejsze, niezależne komponenty, które mogą być dynamicznie uruchamiane i zarządzane -
nie jest to monolityczny system działający na jednej, dużej maszynie dedykowanej na wyłączność.
- Izolacja zasobów: wydajność aplikacji możliwa do przewidzenia
- Wykorzystanie zasobów: wysoka wydajność i upakowanie.
Co dalej?
Ostatnia modyfikacja December 07, 2025 at 4:37 PM PST:
[pl] sync docs/concepts/overview/_index.md (cf43f84782)