پرش به محتوا

Kubernetes سبک با K3s روی یک سرور

یک کلاستر Kubernetes تک‌نودی با K3s راه بیندازید، kubectl را تنظیم کنید و اولین برنامه را با Deployment و Service اجرا کنید.

Ubuntu 24.04 LTSسطح: پیشرفتهبرای: Ubuntu 24.04 LTS، Ubuntu 26.04 LTS، Ubuntu 22.04 LTSبه‌روزرسانی: ۱۶ آبان ۱۴۰۵

K3s یک توزیع سبک و کامل Kubernetes است که برای محیط آزمایش، شعب کوچک و سرورهای لبه مناسب است. همه‌چیز در یک فایل اجرایی و یک سرویس systemd قرار دارد.

۱. پیش‌نیازها

  • حداقل ۲ هسته و ۲ گیگابایت حافظه
  • پورت 6443 برای API (فقط برای مدیران باز شود)

۲. نصب

bash
curl -sfL https://get.k3s.io -o k3s-install.sh
less k3s-install.sh            # همیشه اسکریپت را پیش از اجرا بخوانید
sudo sh k3s-install.sh --write-kubeconfig-mode 600
sudo systemctl status k3s --no-pager

۳. kubectl برای کاربر خودتان

bash
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER: ~/.kube/config
kubectl get nodes
kubectl get pods -A

۴. اولین برنامه

yaml
# hello.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  replicas: 2
  selector:
    matchLabels: { app: hello }
  template:
    metadata:
      labels: { app: hello }
    spec:
      containers:
        - name: web
          image: nginx:1.27-alpine
          ports:
            - containerPort: 80
          resources:
            limits: { cpu: "250m", memory: "128Mi" }
---
apiVersion: v1
kind: Service
metadata:
  name: hello
spec:
  selector: { app: hello }
  ports:
    - port: 80
      targetPort: 80
bash
kubectl apply -f hello.yaml
kubectl get deploy,pods,svc
kubectl port-forward svc/hello 8080:80

در ترمینال دیگر: curl -I http://127.0.0.1:8080

۵. انتشار با Ingress

K3s به‌طور پیش‌فرض Traefik را به‌عنوان Ingress Controller نصب می‌کند:

yaml
# hello-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello
spec:
  rules:
    - host: hello.corp.lan
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service: { name: hello, port: { number: 80 } }
bash
kubectl apply -f hello-ingress.yaml
curl -H 'Host: hello.corp.lan' http://127.0.0.1/

۶. حذف کامل

bash
sudo /usr/local/bin/k3s-uninstall.sh