 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  k3s — Kubernetes na VPS

# k3s — lekki Kubernetes na VPS

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS / Kontenery

Pełny Kubernetes wymaga minimum kilku serwerów, skomplikowanej konfiguracji i sporego budżetu. k3s (Rancher/SUSE) to certyfikowana dystrybucja Kubernetes skompilowana do jednego pliku binarnego — instalujesz go w 30 sekund jednym poleceniem i masz działający klaster K8s na VPS za 20 PLN/miesiąc. API jest w 100% kompatybilne z vanilla Kubernetes — wszystkie manifesty YAML, helm charty i narzędzia jak kubectl, Helm, Kustomize działają bez żadnych modyfikacji. Ten artykuł pokazuje jak zainstalować k3s, uruchomić aplikację w deploymencie i wystawić ją na świat przez Traefik Ingress z Let's Encrypt.

## k3s vs pełny Kubernetes — porównanie

Cecha

k3s

Pełny K8s (kubeadm)

Instalacja

1 polecenie, ~30 sekund

Kilkanaście kroków, 30-60 min

RAM (control plane)

od 512 MB

od 2 GB

Rozmiar binarki

~70 MB

Dziesiątki komponentów

Datastore

SQLite (domyślnie), PostgreSQL, MySQL, etcd

etcd (obowiązkowo)

Ingress

Traefik (wbudowany)

Brak — instalujesz sam

Load Balancer

ServiceLB (wbudowany)

Brak — MetalLB lub cloud LB

Kompatybilność API

100% CNCF certified

100%

Prod-ready

Tak (z HA setup)

Tak

## Instalacja k3s — single node

\# Na serwerze Linux (Ubuntu 22.04 / Debian 12)
curl -sfL https://get.k3s.io | sh -

# k3s server startuje automatycznie jako systemd service
systemctl status k3s

# Konfiguracja kubectl
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes
# NAME        STATUS   ROLES                  AGE   VERSION
# vps-01      Ready    control-plane,master   1m    v1.29.4+k3s1

# Pobierz kubeconfig na swoj komputer lokalny
# Na lokalnym: scp root@vps-ip:/etc/rancher/k3s/k3s.yaml ~/.kube/config-k3s
# Zamien server: na adres IP VPS

# Sprawdz pody systemowe
kubectl get pods -A

## Deployment — uruchomienie aplikacji

\# Przyklad: deployment aplikacji Node.js
# myapp-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp
          image: node:20-alpine
          command: \["node", "-e", "require('http').createServer((req,res)=>res.end('Hello k3s!')).listen(3000)"\]
          ports:
            - containerPort: 3000
          resources:
            requests:
              memory: "64Mi"
              cpu: "50m"
            limits:
              memory: "128Mi"
              cpu: "200m"
---
apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  selector:
    app: myapp
  ports:
    - port: 80
      targetPort: 3000

# Zastosuj manifesty
kubectl apply -f myapp-deployment.yml

# Sprawdz status
kubectl get deployments
kubectl get pods
kubectl get svc
kubectl describe pod myapp-xxxx

## Ingress z Traefik i Let's Encrypt

k3s instaluje Traefik automatycznie. Żeby wystawić aplikację na zewnątrz z HTTPS, utwórz zasób Ingress i skonfiguruj Let's Encrypt przez HelmChartConfig:

\# /var/lib/rancher/k3s/server/manifests/traefik-config.yaml
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
    certificatesResolvers:
      letsencrypt:
        acme:
          email: twoj@email.com
          storage: /data/acme.json
          httpChallenge:
            entryPoint: web
    ports:
      websecure:
        tls:
          certResolver: letsencrypt

\# ingress.yml — Ingress dla myapp
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    traefik.ingress.kubernetes.io/router.tls.certresolver: letsencrypt
    traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: myapp-svc
                port:
                  number: 80
  tls:
    - hosts:
        - app.example.com

kubectl apply -f ingress.yml
# Po chwili Traefik zamawia certyfikat Let's Encrypt
# https://app.example.com dziala

## Przydatne komendy kubectl

\# Logi z poda
kubectl logs -f myapp-xxxx

# Wejdz do kontenera
kubectl exec -it myapp-xxxx -- sh

# Skalowanie
kubectl scale deployment myapp --replicas=3

# Rolling update (nowy image)
kubectl set image deployment/myapp myapp=node:22-alpine

# Status rollout
kubectl rollout status deployment/myapp

# Historia i rollback
kubectl rollout history deployment/myapp
kubectl rollout undo deployment/myapp

# Zasoby (CPU/RAM) uzywane przez pody
kubectl top pods
kubectl top nodes

# Opisz node (dostepna pojemnosc)
kubectl describe node vps-01

## Klaster multi-node — dodawanie worker nodes

\# Na masterze — pobierz token
cat /var/lib/rancher/k3s/server/node-token

# Na workerze — dolacz do klastra
curl -sfL https://get.k3s.io | K3S\_URL=https://<master-ip>:6443 K3S\_TOKEN=<token> sh -

# Na masterze sprawdz nowe nody
kubectl get nodes
# NAME       STATUS   ROLES                  AGE
# master     Ready    control-plane,master   10m
# worker01   Ready    <none>                 30s

## Helm — manager pakietów dla k3s

\# Instalacja Helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

# Dodaj repo i zainstaluj aplikacje
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# Instalacja PostgreSQL
helm install my-postgres bitnami/postgresql \\
  --set auth.postgresPassword=mocne-haslo \\
  --set primary.persistence.size=10Gi

# Instalacja WordPress
helm install my-wordpress bitnami/wordpress \\
  --set wordpressUsername=admin \\
  --set wordpressPassword=haslo-wp

# Lista zainstalowanych chartow
helm list
helm status my-postgres

## Najczęstsze pytania

Czym k3s różni się od pełnego Kubernetes? +

k3s to lekka dystrybucja Kubernetes od Rancher (SUSE), skompilowana do pojedynczego binarnego pliku (~70 MB). Usuwa rzadko używane komponenty (cloud provider integrations, alpha features) i zastępuje etcd domyślnie SQLite (lub PostgreSQL/MySQL dla HA). Pełne K8s wymaga minimum 2 GB RAM per node, k3s startuje w 512 MB. Instalacja k3s to jedno polecenie vs konfiguracja kubeadm przez kilkanaście kroków. API jest w 100% kompatybilne — wszystkie kubectl komendy i manifesty działają identycznie.

Ile zasobów potrzebuje k3s na VPS? +

k3s server (control plane) potrzebuje minimum 512 MB RAM i 1 vCPU, ale komfortowo działa od 1 GB RAM. k3s agent (worker node) potrzebuje minimum 256 MB RAM. Dla klastra single-node (serwer + agent na jednej maszynie) z kilkoma podami realistyczne minimum to 2 GB RAM. Dla środowisk produkcyjnych z wieloma aplikacjami rekomendowane jest 4 GB RAM na master i 2 GB na każdy worker. VPS z 4 GB RAM i 2 vCPU jak Contabo jest dobrym punktem startowym.

Jak działa Traefik jako Ingress w k3s? +

k3s domyślnie instaluje Traefik jako Ingress Controller. Traefik automatycznie wykrywa IngressRoute i Ingress resources w Kubernetes i konfiguruje routing HTTP/HTTPS. Aby dodać nową aplikację wystarczy stworzyć zasób Ingress z rules określającymi host i path, a Traefik przekieruje ruch do odpowiedniego Service. Let's Encrypt jest wbudowany — wystarczy adnotacja "kubernetes.io/tls-acme: true" i Traefik sam zamawia i odnawia certyfikaty. Alternatywnie możesz zastąpić Traefik Nginx Ingress Controller przy instalacji.

Czy k3s nadaje się do produkcji? +

Tak, k3s jest gotowy do produkcji — używają go m.in. firmy na edge computing, IoT, małe klastry SaaS. Dla wysokiej dostępności (HA) uruchamia się k3s z zewnętrznym datastore (PostgreSQL lub MySQL) i minimum 3 nodami server. Ograniczenia: bez chmurowych load balancerów (trzeba MetalLB dla on-premise), mniejsza społeczność niż vanilla Kubernetes, niektóre helm charty mogą wymagać dostosowania. Dla małych i średnich aplikacji k3s jest prostszy i tańszy niż zarządzany K8s (EKS/GKE/AKS) lub full kubeadm.

## 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 4-8 GB RAM — minimum dla k3s HA z kilkoma aplikacjami w podach

VPS k8s

[Aktywuj rabat →](/out/contabo)

#Reklama · link partnerski

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

Mikr.us

Budżetowy VPS do nauki k3s single-node — 2 GB RAM wystarczy

Dev/Test

[Aktywuj rabat →](/out/mikrus)

#Reklama · link partnerski

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

LH.pl

Hosting zarządzany — alternatywa bez własnego klastra K8s

Managed

[Aktywuj rabat →](/out/lh-pl)

#Reklama · link partnerski

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

## Powiązane strony

-   [Docker na VPS — instalacja i konfiguracja](/baza-wiedzy/docker-na-vps)
-   [Traefik — reverse proxy z auto-SSL](/baza-wiedzy/traefik-reverse-proxy)
-   [Terraform — provisioning VPS](/baza-wiedzy/terraform-vps-provisioning)
-   [Wszystkie artykuły](/baza-wiedzy/)