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

⚡ W skrócie · 8 min czytania

-   Kubernetes podstawy: Pod, Deployment, Service, Namespace, kubectl komendy, manifest YAML, vs Docker Compose, managed K8s (GKE/EKS/DigitalOcean), kiedy NIE używać K8s.
-   Czym jest Kubernetes?
-   Podstawowe koncepty.
-   Instalacja kubectl i pierwsze kroki.
-   Manifest YAML - Deployment + Service.

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 ryzyko.
-   **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 (<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 "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 "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 "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/)
-   [Harbor - prywatny rejestr Docker z skanowaniem obrazów
    
    Harbor prywatny Docker registry: instalacja Docker Compose, projekty i robot accounts, skanowanie podatności Trivy,…
    
    ](/baza-wiedzy/harbor-docker-registry/)
-   [Kong API Gateway na VPS - instalacja i konfiguracja
    
    Kong API Gateway: Docker Compose, tryb DB-less (YAML), tworzenie Service/Route, pluginy rate-limiting i key-auth,…
    
    ](/baza-wiedzy/kong-api-gateway-vps/)
-   [Kubernetes Ingress - Traefik i Nginx Ingress Controller
    
    Kubernetes Ingress: instalacja Traefik (Helm), TLS z cert-manager i Let's Encrypt, IngressClass, rate limiting,…
    
    ](/baza-wiedzy/kubernetes-ingress-traefik/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 9 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)