Ana içeriğe geç

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ı oku

Docker 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ı oku

Kubernetes ve Docker Swarm karşılaştırması

ÖzellikKubernetesDocker 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'leridocker stack deploy ile dağıtılan Compose dosyaları
Temel kavramlarPod'lar, deployment'lar, service'ler, ingress'ler ve çok daha fazlasıServisler, task'lar, stack'ler, overlay ağlar ve secret'lar
ÖlçeklemeCPU, bellek ya da özel metriklere göre otomatikElle: replika sayısını siz belirlersiniz
GenişletilebilirlikCustom resource'lar, operator'lar ve geniş bir araç ekosistemiYerleşik özellikleriyle sınırlı
Yönetilen hizmetlerHer büyük bulut sağlayıcısındanNadir; genellikle kendi sunucularınızda
Öğrenme eğrisiDik: çok sayıda kavram ve hareketli parçaDocker ve Compose bilen herkes için yumuşak
En uygunBüyük, karmaşık ya da çok ekipli sistemlerKüçü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

Kubernetesyaml
# 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 Swarmyaml
# Docker Swarm: a Compose file, deployed with
# docker stack deploy -c compose.yaml shop
services:
  web:
    image: shop-web:1.4
    deploy:
      replicas: 3

Sı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.

Daha fazla

Ayarlar