k3s, Minikube yoki kind: qaysi yengil Kubernetes’ni tanlash kerak
Asoslar4 daqInnovialabs tahririyati
Qisqacha
Minikube addon’lar bilan lokal ishlab chiqish uchun qulay, kind — CI’dagi tez bir martalik klasterlar uchun, k3s esa VPS yoki edge-serverdagi haqiqiy yengil klaster uchun; klasterni yuritish servisning o‘zidan qimmatga tusha boshlaganda managed Kubernetes’ga o‘tish kerak.
Qisqa javob
Uchalasi ham ishlaydigan Kubernetes API beradi, lekin turli vazifalar uchun yaratilgan:
- Minikube — ko‘plab drayverlar va tayyor addon’larga ega dasturchilar uchun lokal klaster.
- kind (Kubernetes IN Docker) — tugunlari Docker-konteynerlar bo‘lgan klasterlar; bir necha daqiqada yaratiladi va o‘chiriladi, CI uchun ideal.
- k3s — bitta binar fayldagi sertifikatlangan yengil Kubernetes distributivi; kichik serverlar, edge-qurilmalar va VPS’da prod uchun mos.
Oddiy qoida: noutbuk — Minikube yoki kind, CI — kind, VPS — k3s.
Taqqoslash jadvali
| Mezon | Minikube | kind | k3s |
|---|---|---|---|
| Asosiy vazifa | Lokal ishlab chiqish | Testlash va CI | Yengil prod, edge, ishlab chiqish |
| Tugunlar qanday ishlaydi | VM yoki konteyner (drayver tanlanadi) | Docker yoki Podman konteynerlari | To‘g‘ridan-to‘g‘ri xostda tizim servisi sifatida |
| Bir nechta tugun | Mumkin | Ha, konfig orqali | Ha, serverlar va agentlar turli mashinalarda |
| Resurs sarfi | O‘rtacha, drayverga bog‘liq | Past yoki o‘rtacha | Past |
| O‘rnatilgan komponentlar | Addon’lar: ingress, dashboard, metrics-server | Minimal, o‘zingiz qo‘shasiz | Traefik ingress, ServiceLB, local-path storage |
| Prod | Yo‘q | Yo‘q | Ha |
Lokal ishlab chiqish
Minikube — dasturchi noutbuki uchun eng qulay variant:
minikube start
minikube addons enable ingress
minikube service my-app
- Linux, macOS va Windows’da Docker, Hyper-V, KVM yoki VirtualBox drayverlari bilan ishlaydi.
- Addon’lar odatiy komponentlarni bitta buyruq bilan yoqadi.
minikube tunnelLoadBalancerturidagi servislarga ochiq manzil beradi.
Agar Docker allaqachon o‘rnatilgan bo‘lsa va yonma-yon bir nechta klaster kerak bo‘lsa, kind yengilroq. k3s nativ ravishda faqat Linux’da ishlaydi; macOS va Windows’da odatda k3s’ni Docker ichida ishga tushiradigan k3ddan foydalaniladi.
CI’da testlash
kind aynan shu uchun yaratilgan. Odatiy pipeline:
kind create cluster --name ci
kind load docker-image my-app:test --name ci
kubectl apply -f k8s/
kubectl wait --for=condition=available deployment/my-app --timeout=120s
kind delete cluster --name ci
kind load docker-imagelokal yig‘ilgan obrazni registry’siz klasterga yuklaydi.- Kubernetes versiyasini tugun obrazi orqali qat’iy belgilash mumkin — yangilanishlarni tekshirish uchun qulay.
- Agar prod k3s’da ishlasa va CI unga mos bo‘lishini istasangiz, k3d yaxshi muqobil.
Minikube ham CI’da ishlaydi, lekin odatda kind’ga qaraganda og‘irroq va sekinroq ishga tushadi.
VPS’dagi kichik prod klaster
Uchtasidan faqat k3s real variant:
curl -sfL https://get.k3s.io | sh -
sudo k3s kubectl get nodes
- Bitta buyruq containerd, Flannel tarmog‘i, Traefik ingress va oddiy balansirovkachi bilan serverni o‘rnatadi.
- Qo‘shimcha serverlar va agentlar token orqali ulanadi.
- Bitta server sukut bo‘yicha o‘rnatilgan SQLite omboridan foydalanadi; yuqori mavjudlik uchun o‘rnatilgan etcd yoki tashqi bazali bir nechta server ishga tushiriladi.
- Asosiy narsalarni unutmang: ombor zaxira nusxalari, OT yangilanishlari, firewall, TLS sertifikatlari va monitoring — sizning zimmangizda.
Bilish kerak bo‘lgan tarmoq cheklovlari
- Minikube: servislar xostdan
minikube service,minikube tunnelyoki port-forward orqali ochiq; boshqa mashinalardan sukut bo‘yicha — yo‘q. - kind: tugun portlari Docker ichida joylashgan. Ularni xostda ochish uchun klaster konfigiga
extraPortMappingsqo‘shing yokikubectl port-forwarddan foydalaning.LoadBalancerservislari uchun qo‘shimcha komponent kerak, masalan MetalLB yoki cloud-provider-kind. - k3s: ServiceLB
LoadBalancerservislarini tugunlar IP’sida e’lon qiladi, bu VPS’da qulay, lekin ular oldida bulutli balansirovkachi yo‘q. Trafik tugunlarga qanday yetib borishini va bitta tugun ishdan chiqsa nima bo‘lishini o‘ylab ko‘ring.
Qachon managed Kubernetes’ga o‘tish kerak
Quyidagi hollarda EKS, GKE, AKS yoki mahalliy bulut provayderining managed Kubernetes’iga qarang:
- control plane’ning yuqori mavjudligi kerak, lekin uni o‘zingiz yuritish imkoni yo‘q;
- jamoa yangilanishlar, etcd zaxiralari va tugunlar nosozliklariga sezilarli vaqt sarflaydi;
- bulutli balansirovkachilar, tugunlarni avtomasshtablash va boshqariladigan bazalar bilan integratsiya kerak;
- komplayens talablari audit qilinadigan infratuzilmani nazarda tutadi.
Agar Docker Compose’li bitta VPS hali ham yuklamani ko‘tarayotgan bo‘lsa, sizga hozircha Kubernetes umuman kerak bo‘lmasligi mumkin.