K3s یک توزیع سبک و کامل Kubernetes است که برای محیط آزمایش، شعب کوچک و سرورهای لبه مناسب است. همهچیز در یک فایل اجرایی و یک سرویس systemd قرار دارد.
۱. پیشنیازها
- حداقل ۲ هسته و ۲ گیگابایت حافظه
- پورت 6443 برای API (فقط برای مدیران باز شود)
۲. نصب
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 برای کاربر خودتان
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER: ~/.kube/config
kubectl get nodes
kubectl get pods -A۴. اولین برنامه
# 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: 80kubectl 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 نصب میکند:
# 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 } }kubectl apply -f hello-ingress.yaml
curl -H 'Host: hello.corp.lan' http://127.0.0.1/۶. حذف کامل
sudo /usr/local/bin/k3s-uninstall.sh