Kubernetes — co to jest i jak działa?

Kubernetes (K8s) to system orkiestracji kontenerów od Google. Poznaj architekturę klastra, kluczowe obiekty (Pod, Deployment, Service) i workflowy wdrożeń.

Czym jest Kubernetes?

Kubernetes (K8s) to open-source'owy system orkiestracji kontenerów — automatyzuje wdrażanie, skalowanie i zarządzanie konteneryzowanymi aplikacjami. Stworzony przez Google na bazie wewnętrznego systemu Borg, open-sourcowany w 2014 roku.

Kubernetes zarządza klastrem maszyn (węzłów) i automatycznie rozmieszcza kontenery w oparciu o dostępne zasoby. Zapewnia self-healing (restart padających kontenerów), automatyczne skalowanie, rolling updates bez downtime i load balancing.

2014

Rok open-sourcowania przez Google. Od 2016 r. projekt CNCF (Cloud Native Computing Foundation)

K8s

Skrót: K + 8 liter + s. Tak samo jak i18n (internationalization) i l10n (localization)

73%

Firm używa Kubernetes w produkcji wg CNCF Annual Survey 2023

Architektura klastra Kubernetes

Control Plane

API Server

Punkt wejścia do klastra — wszystkie operacje przechodzą przez API Server. kubectl komunikuje się przez REST API.

etcd

Rozproszony key-value store — przechowuje stan całego klastra. Single source of truth dla K8s.

Scheduler

Decyduje na którym węźle uruchomić nowy Pod na podstawie zasobów, affinity rules, taints/tolerations.

Controller Manager

Uruchamia kontrolery (Deployment, ReplicaSet, Node, Job) które zapewniają desired state klastra.

Worker Node

kubelet

Agent K8s na każdym węźle. Zarządza Podami, komunikuje się z container runtime, raportuje stan do API Server.

kube-proxy

Zarządza regułami sieciowymi (iptables/IPVS) dla komunikacji między serwisami.

Container Runtime

Uruchamia kontenery — containerd (default), CRI-O. Docker deprecated jako runtime od K8s 1.24.

Kluczowe obiekty Kubernetes

Pod

Najmniejsza jednostka — jeden lub kilka kontenerów. Ephemeral, zawsze na jednym węźle.

kubectl get pods -n production

Deployment

Zarządza ReplicaSet i Podami. Rolling updates, rollback, desired state.

kubectl rollout status deployment/my-app

Service

Stały endpoint sieciowy dla grupy Podów. Typy: ClusterIP, NodePort, LoadBalancer.

kubectl expose deployment my-app --port=80

Ingress

Zarządza zewnętrznym ruchem HTTP/HTTPS. Routing po hostach i ścieżkach, TLS termination.

kubectl get ingress -A

ConfigMap

Przechowuje konfigurację (env vars, pliki) oddzielnie od kodu. Nie dla danych wrażliwych.

kubectl create configmap app-config --from-file=config.yaml

Secret

Przechowuje dane wrażliwe (hasła, tokeny) base64-encoded. Integracja z Vault, AWS Secrets Manager.

kubectl create secret generic db-creds --from-literal=password=secret

PersistentVolume

Zewnętrzne storage niezależne od cyklu życia Poda. PVC (Claim) requestuje zasób PV.

kubectl get pv,pvc -n production

HorizontalPodAutoscaler

Automatycznie skaluje Pody na podstawie CPU, memory lub custom metrics.

kubectl get hpa -n production

Workflow wdrożenia w Kubernetes

1

1. Build

Buduj obraz Docker i pushuj do registry (Docker Hub, ECR, GCR, Harbor)

docker build -t myapp:v1.2.3 . && docker push registry/myapp:v1.2.3

2

2. Deploy

Aktualizuj Deployment z nowym tagiem obrazu

kubectl set image deployment/myapp myapp=registry/myapp:v1.2.3

3

3. Monitor

Sprawdź status rolling update

kubectl rollout status deployment/myapp

4

4. Rollback

Wróć do poprzedniej wersji jeśli coś poszło nie tak

kubectl rollout undo deployment/myapp

5

5. Scale

Ręczne lub automatyczne skalowanie liczby replik

kubectl scale deployment/myapp --replicas=5

FAQ — Kubernetes

Co to jest Kubernetes?

Kubernetes (K8s) to open-source'owy system do automatyzacji wdrażania, skalowania i zarządzania konteneryzowanymi aplikacjami. Stworzony przez Google na podstawie wewnętrznego systemu Borg, open-sourcowany w 2014 roku, teraz rozwijany przez CNCF (Cloud Native Computing Foundation). Kubernetes zarządza klastrami węzłów (nodes), na których uruchamiane są kontenery Docker (lub inne runtime zgodne z OCI). Nazwa pochodzi z greki i oznacza 'sternik'.

Czym różni się Kubernetes od Docker?

Docker to technologia konteneryzacji — pakuje aplikację z jej zależnościami w przenośny kontener. Kubernetes to orkiestrator kontenerów — zarządza wieloma kontenerami na wielu maszynach. Docker Compose to narzędzie do uruchamiania wielu kontenerów na jednej maszynie (dev/staging). Kubernetes to produkcyjna platforma: automatyczne skalowanie, self-healing (restartuje padające pody), load balancing, rolling updates, secrets management.

Co to jest Pod w Kubernetes?

Pod to najmniejsza jednostka wdrożeniowa w Kubernetes — grupa jednego lub kilku kontenerów współdzielących sieć (localhost między sobą) i storage (volumes). Kontenery w jednym Podzie zawsze uruchamiane są razem na tym samym węźle. Większość Podów zawiera jeden kontener (main container) + opcjonalne init containers i sidecar containers (np. do zbierania logów). Pody są ephemeral — Kubernetes je niszczy i tworzy nowe (nigdy nie naprawia istniejącego Poda).

Jak Kubernetes realizuje automatyczne skalowanie?

Kubernetes oferuje 3 typy autoskalowania: HPA (Horizontal Pod Autoscaler) — zwiększa/zmniejsza liczbę Podów na podstawie CPU/memory lub custom metrics (np. requests per second); VPA (Vertical Pod Autoscaler) — dostosowuje limity CPU/memory poszczególnych Podów; Cluster Autoscaler — dodaje lub usuwa węzły (nodes) klastra w zależności od zapotrzebowania. HPA jest najczęściej używany: kubectl autoscale deployment my-app --cpu-percent=50 --min=2 --max=20.

Jakie są zarządzane usługi Kubernetes?

Główne managed Kubernetes services: GKE (Google Kubernetes Engine) — najpojrzejszy, pełna integracja z Google Cloud; EKS (Amazon Elastic Kubernetes Service) — AWS, popularne w enterprise; AKS (Azure Kubernetes Service) — Microsoft Azure, dobre z Active Directory; DigitalOcean Kubernetes — prosty, tani, dla mniejszych projektów; Rancher — zarządzanie multi-cluster on-premise i cloud. Managed K8s eliminuje zarządzanie control plane (API server, etcd, scheduler).

Kontakt

Skontaktuj się z nami

Porozmawiajmy o Twoim projekcie. Bezpłatna wycena w ciągu 24 godzin.

Wyślij zapytanie

Bezpłatna wycena w 24h
Bez zobowiązań
Indywidualne podejście
Ekspresowa realizacja

Telefon

+48 790 814 814

Pon-Pt: 9:00 - 18:00

Email

adam@fotz.pl

Odpowiadamy w ciągu 24h

Adres rejestrowy

Poznańska 117/11

62-023 Kamionki · obsługa zdalna

Godziny pracy

Pon - Pt9:00 - 18:00
Sob - NdzZamknięte

Wolisz porozmawiać?

Zadzwoń teraz i porozmawiaj z naszym specjalistą o Twoim projekcie.

Zadzwoń teraz