Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Kubernetes — podstawy dla webdeveloperów hostujących aplikacje

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / DevOps

Kubernetes (K8s) jest wszędzie w ogłoszeniach o pracę i na konferencjach, ale większość webdeveloperów nigdy go nie potrzebuje. Ten artykuł wyjaśni czym jest, kiedy ma sens, a kiedy Docker Compose wystarczy — i przeprowadzi przez pierwsze kroki z kubectl.

Czym jest Kubernetes?

Kubernetes to orkiestrator kontenerów — zarządza wieloma kontenerami Docker na wielu serwerach (Node'ach) jednocześnie. Jego główne zadania to:

  • Scheduling — decyduje na którym Node uruchomić kontener
  • Self-healing — restartuje padłe kontenery, zastępuje Node'y
  • Scaling — automatycznie zwiększa/zmniejsza liczbę replik
  • Rolling updates — wdraża nowe wersje bez przestoju
  • Service discovery — kontenery odnajdują się przez DNS
  • Config management — ConfigMap i Secret dla konfiguracji

Podstawowe koncepty

Obiekt Co robi Analogia Docker
Node Maszyna wirtualna/fizyczna w klastrze Serwer z Docker daemon
Pod Jeden lub więcej kontenerów z shared network docker run (jeden kontener)
Deployment Deklaruje ile replik Poda ma działać i jak je aktualizować docker-compose service z replicas
Service Stały adres sieciowy dla grupy Podów (load balancing) Docker network + expose port
Ingress HTTP/HTTPS routing z zewnątrz do Service'ów Nginx reverse proxy
ConfigMap Konfiguracja jako zmienne środowiskowe lub pliki env_file w docker-compose
Secret Wrażliwe dane (hasła, klucze API) base64-encoded .env z secrets
Namespace Wirtualna izolacja w klastrze (dev/staging/prod) Brak bezpośredniej analogii

Instalacja kubectl i pierwsze kroki

# Instalacja kubectl (Linux)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# macOS
brew install kubectl

# Sprawdź wersję
kubectl version --client
# Podstawowe komendy kubectl

# Sprawdź status klastra
kubectl cluster-info
kubectl get nodes

# Lista Podów (wszystkie namespaces)
kubectl get pods --all-namespaces
kubectl get pods -n default

# Szczegóły obiektu
kubectl describe pod my-pod
kubectl describe deployment my-app

# Logi kontenera
kubectl logs my-pod
kubectl logs my-pod -f          # Tail/follow
kubectl logs my-pod -c sidecar  # Konkretny kontener w Podzie

# Exec do kontenera
kubectl exec -it my-pod -- /bin/bash
kubectl exec -it my-pod -- sh

# Port forwarding (lokalny debug)
kubectl port-forward pod/my-pod 8080:80

# Apply manifest
kubectl apply -f deployment.yaml
kubectl delete -f deployment.yaml

# Skalowanie
kubectl scale deployment my-app --replicas=5

# Rolling update
kubectl set image deployment/my-app app=myimage:v2

Manifest YAML — Deployment + Service

# deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app
        image: myrepo/my-app:v1.0.0
        ports:
        - containerPort: 3000
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "500m"
        env:
        - name: NODE_ENV
          value: production
        - name: DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: app-secrets
              key: db-password
---
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 3000
  type: ClusterIP   # Tylko wewnętrzny. LoadBalancer = publiczny IP.
# Wdrożenie
kubectl apply -f deployment.yaml

# Sprawdź status
kubectl get deployments
kubectl get pods -l app=my-app
kubectl rollout status deployment/my-app

# Rollback do poprzedniej wersji
kubectl rollout undo deployment/my-app

Kubernetes vs Docker Compose — kiedy co wybrać

Kryterium Docker Compose Kubernetes
Złożoność Niska — jeden plik YAML Wysoka — wiele obiektów, kubeconfig
Skalowanie Ręczne lub docker swarm Automatyczne (HPA)
Multi-node Nie (tylko Docker Swarm) Tak — natywnie
Krzywa uczenia 1-2 dni 2-4 tygodnie
Koszt Koszt VPS VPS + zarządzanie + ew. managed fee
Idealne dla 1-3 serwery, startup, dev, staging SaaS, mikroserwisy, 10+ serwisów

Managed K8s vs self-hosted

Managed Kubernetes (GKE, AWS EKS, DigitalOcean Kubernetes, Hetzner) oddaje control plane (API server, etcd, scheduler) dostawcy — płacisz tylko za worker nodes. Self-hosted (kubeadm, K3s, K0s na własnych VPS) daje pełną kontrolę, ale wymaga zarządzania control plane:

  • DigitalOcean Kubernetes — prosty panel, od ~$12/msc per node, dobra opcja na start.
  • Google GKE Autopilot — serverless K8s, płacisz za CPU/RAM Podów, nie za Node'y.
  • AWS EKS — $0.10/h za control plane + EC2 workers, pełna integracja z AWS.
  • K3s na VPS — lekka dystrybucja K8s (Rancher), działa na 512 MB RAM, idealna do nauki i małych projektów.

Kiedy NIE używać Kubernetes

Kubernetes nie jest odpowiedzią na wszystkie problemy:

  • Mały projekt (1-3 serwisy) — Docker Compose + Nginx wystarczy. K8s dodaje tygodnie konfiguracji bez realnych korzyści.
  • WordPress, PHP, statyczne strony — managed hosting lub prosta konfiguracja VPS jest znacznie prostsza.
  • Startup bez DevOps — K8s wymaga stałego zarządzania. Bez osoby znającej K8s w zespole to pułapka.
  • Mały ruch (<1000 req/min) — jeden VPS z PM2/Docker Compose obsłuży to bez problemu.
  • Baza danych w K8s — stateful aplikacje (PostgreSQL, Redis) są trudne w K8s. Lepiej użyć managed DB (RDS, Cloud SQL) z zewnątrz klastra.

Najczęstsze pytania

Czym jest Pod w Kubernetes? +
Pod to najmniejsza jednostka deploymentu w Kubernetes. Zawiera jeden lub więcej kontenerów Docker, które dzielą tę samą sieć (localhost między sobą) i storage. W praktyce większość Podów ma jeden kontener. Pody są ulotne — gdy Node padnie, Pod znika. Dlatego nie tworzy się Podów bezpośrednio, lecz przez Deployment, który pilnuje żeby zawsze działała odpowiednia liczba replik (replicas).
Kiedy używać Kubernetes zamiast Docker Compose? +
Docker Compose sprawdza się dla pojedynczego serwera, aplikacji dev/staging i prostych deploymentów. Kubernetes ma sens gdy: (1) aplikacja musi działać na wielu serwerach jednocześnie (multi-node cluster), (2) potrzebujesz automatycznego skalowania (HPA — Horizontal Pod Autoscaler), (3) masz wiele mikrousług z różnymi wymaganiami zasobów, (4) potrzebujesz zero-downtime rolling updates bez ręcznej pracy. Dla mniejszości projektów (&lt;10% webaplikacji) K8s to overkill. Dla SaaS z tysiącami użytkowników — naturalny wybór.
Co to jest kubeconfig i gdzie go znaleźć? +
Kubeconfig to plik konfiguracyjny kubectl (domyślnie ~/.kube/config). Zawiera: adresy API serwerów Kubernetes, dane uwierzytelniające (token lub certyfikat), nazwy kontekstów (cluster + user + namespace). Przy managed K8s (GKE, EKS, AKS, DigitalOcean) generujesz kubeconfig przez panel lub CLI dostawcy (np. doctl kubernetes cluster kubeconfig save my-cluster). Możesz mieć wiele klastrów w jednym pliku i przełączać się przez kubectl config use-context.
Ile kosztuje managed Kubernetes u dostawców chmurowych? +
Sam control plane (API server, etcd, scheduler) jest zazwyczaj darmowy — płacisz za worker nodes (maszyny wirtualne). DigitalOcean: od ~$12/msc za 1 node (2 GB RAM). Hetzner Cloud K8s (via Hetzner k3s/talos): od ~5€/msc za node. AWS EKS: $0.10/h za control plane + cena EC2 instancji. GKE: darmowy Autopilot tier do pewnych limitów. Self-hosted K3s (lekka dystrybucja K8s) na jednym VPS to koszt samego VPS.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.