Yan yana
KubernetesvsDocker Swarm
Kubernetes ile Docker Swarm arasındaki fark nedir?
Güncellendi 3 dk okuma8 fark
Kısaca
İkisi de konteynerleri bir kümede çalıştırır; Docker Swarm Docker'a yerleşik ve basittir, Kubernetes ise karmaşıklık pahasına çok daha fazlasını yapar.
Kubernetes
Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
Kubernetes sayfasını okuDocker Swarm
Docker Swarm, Docker Engine'e yerleşik küme modudur: birkaç makineyi tek bir swarm'da birleştirir ve konteynerleri bunlara çoğaltılmış servisler olarak dağıtır.
Docker Swarm sayfasını okuKubernetes ve Docker Swarm karşılaştırması
| Özellik | Kubernetes | Docker Swarm |
|---|---|---|
| Kurulum | Çok sayıda bileşen; genellikle yönetilen bir servis ya da bir kurulum aracı | Docker'a yerleşik: docker swarm init ve bir katılım token'ı |
| Yapılandırma | Çoğu zaman Helm ile paketlenen Kubernetes YAML manifest'leri | docker stack deploy ile dağıtılan Compose dosyaları |
| Temel kavramlar | Pod'lar, deployment'lar, service'ler, ingress'ler ve çok daha fazlası | Servisler, task'lar, stack'ler, overlay ağlar ve secret'lar |
| Ölçekleme | CPU, bellek ya da özel metriklere göre otomatik | Elle: replika sayısını siz belirlersiniz |
| Genişletilebilirlik | Custom resource'lar, operator'lar ve geniş bir araç ekosistemi | Yerleşik özellikleriyle sınırlı |
| Yönetilen hizmetler | Her büyük bulut sağlayıcısından | Nadir; genellikle kendi sunucularınızda |
| Öğrenme eğrisi | Dik: çok sayıda kavram ve hareketli parça | Docker ve Compose bilen herkes için yumuşak |
| En uygun | Büyük, karmaşık ya da çok ekipli sistemler | Küçük ve orta ölçekli kurulumlar, şirket içi ve edge |
Fark, açıklamalı
Kubernetes ve Docker Swarm ikisi de konteyner orkestratörüdür: bir grup makineyi tek bir kümeye dönüştürür, her konteynerin nerede çalışacağına karar verir, çökenleri yeniden başlatır ve güncellemeleri kesinti olmadan yayarlar. Google'da geliştirilen ve bugün CNCF tarafından sürdürülen Kubernetes; kendi API'si, pod, deployment ve service gibi nesneleri ve YAML manifest'leri olan ayrı bir platformdur. Resmî adıyla swarm modu olan Docker Swarm ise 2016'dan beri Docker Engine'e yerleşiktir; docker swarm init herhangi bir Docker makinesini küme yöneticisine dönüştürür.
Fark kapsamdadır. Swarm; servisler, replikalar, overlay ağlar ve secret'lar gibi az sayıda kavramla yetinir, Docker komut satırını ve Compose dosyalarını yeniden kullanır; bu yüzden zaten Docker kullanan bir ekip bir öğleden sonrada küme çalıştırabilir. Kubernetes çok daha fazlasını sunar: otomatik ölçekleme, ayrıntılı zamanlama, rol tabanlı erişim denetimi, custom resource'lar, karmaşık yazılımları otomatikleştiren operator'lar ve ağ, depolama, izleme ve güvenlik için geniş bir araç ekosistemi. Bütün bu güç, öğrenilecek, yapılandırılacak ve güncel tutulacak daha fazla parçayla gelir.
Ekosistem pek çok kararı belirler. Her büyük bulut yönetilen Kubernetes sunar, çoğu altyapı aracı önce onu hedefler; büyük ya da karmaşık sistemler için varsayılan seçimdir ve iş ilanlarında sık aranan bir beceridir. Swarm'ın topluluğu çok daha küçüktür ve ona denk yönetilen bulut hizmetleri yoktur; ama Docker Engine'in parçası olmayı sürdürür, Mirantis'ten ticari destek alır ve küçük ve orta ölçekli production kurulumlarında, şirket içi sunucularda ve edge lokasyonlarında iyi çalışır.
Sık yapılan bir yanlış, Docker Swarm'ın öldüğünü düşünmektir. Bakımı sürüyor ve hâlâ kullanılıyor; ancak yavaş gelişiyor ve sektör büyük ölçüde Kubernetes'te standartlaştı. Bir diğer yanlış, Kubernetes ile Docker'ı rakip sanmaktır: Kubernetes, Docker'ın oluşturduğu OCI imajlarının aynısını çalıştırır; bu yüzden ekipler tipik olarak Docker ile derler, Swarm ya da Kubernetes ile orkestre eder.
Hangisini kullanmalısınız?
Kubernetes şu durumlarda doğru seçim:
- Sistem büyük; çok sayıda servis, ekip ya da ortam var.
- Otomatik ölçekleme, ayrıntılı erişim denetimi ya da operator'larla özel otomasyon gerekiyor.
- Bir bulut sağlayıcısından yönetilen bir servis ve geniş bir araç ekosistemi istiyorsunuz.
- İşe alım ve uzun vadeli destek önemli; sektörün ortak platformunu istiyorsunuz.
Docker Swarm şu durumlarda doğru seçim:
- Ekibiniz Docker ve Compose'u zaten biliyor ve az yeni şey öğrenerek kümeleme istiyor.
- Kurulum küçük ya da orta ölçekli: birkaç sunucu, şirket içi makineler ya da edge lokasyonları.
- İşletilecek az parçayla, hızla çalışan bir küme istiyorsunuz.
- Elle ölçekleme ve yerleşik özellikler ihtiyacınızı karşılıyor.
Bir web uygulamasının üç kopyasını çalıştırmak
# Kubernetes: a Deployment, applied with kubectl apply -f web.yaml
apiVersion: apps/v1
kind: Deployment
metadata: { name: web }
spec:
replicas: 3
selector: { matchLabels: { app: web } }
template:
metadata: { labels: { app: web } }
spec:
containers:
- { name: web, image: shop-web:1.4 }# Docker Swarm: a Compose file, deployed with
# docker stack deploy -c compose.yaml shop
services:
web:
image: shop-web:1.4
deploy:
replicas: 3Sık sorulan sorular
Docker Swarm hâlâ destekleniyor mu?
Evet. Swarm modu Docker Engine'in ve açık kaynaklı Moby projesinin parçasıdır; Mirantis de ticari destek sunar. Yavaş değiştiği için, ona bağlanmadan önce ihtiyaç duyduğunuz özelliklerin var olduğunu kontrol edin.
Küçük bir proje için Kubernetes fazla mı?
Çoğu zaman evet. Bir avuç sunucuda birkaç servis için Docker Swarm, tek makinede Docker Compose ya da hizmet olarak platform (PaaS) çok daha basit olabilir; yönetilen bir Kubernetes servisi aradaki farkı daraltır ama ortadan kaldırmaz.
Docker Swarm'dan sonra Kubernetes'e geçebilir miyim?
Evet. İkisi de aynı konteyner imajlarını çalıştırır; bu yüzden asıl iş, Compose dosyalarını Kubernetes manifest'leri olarak yeniden yazmaktır ve Kompose gibi araçlar bu işe sizin için başlayabilir.