 Autor: [Monika Wojciechowska](/autorzy/monika-wojciechowska) Specjalistka SEO i treści webowych · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Kubernetes podstawy dla webdeveloperów

# 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.

Contabo

VPS z dużym RAM — idealny do self-hosted K3s (lekki Kubernetes) na jednym węźle

K3s Ready

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo)

Mikrus

Tani VPS do nauki kubectl i K3s bez kosztów managed Kubernetes

Learn K8s

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus)

CyberFolks

Managed hosting gdy K8s jest overkill — prostsze wdrożenie bez DevOps

Simple Deploy

[Aktywuj rabat →](/out/cyberfolks)

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/cyberfolks)

## Powiązane strony

-   [Docker na VPS — instalacja i konfiguracja](/baza-wiedzy/docker-na-vps)
-   [Nginx load balancer — konfiguracja upstream](/baza-wiedzy/nginx-load-balancer-konfiguracja)
-   [Ansible Playbook — automatyzacja konfiguracji serwera](/baza-wiedzy/ansible-playbook-hosting)
-   [Wszystkie artykuły](/baza-wiedzy/)