Docker Compose ve Kubernetes: Hangisinin ne zaman kullanılması gerektiği, farkları ve geçiş

Son Güncelleme: 15 Kasım 2025
  • Docker Compose yerel ortamları ve testleri basitleştirir; Kubernetes, otomatik ölçekleme, sürekli güncellemeler ve kendi kendini iyileştirme ile iş yüklerini ölçeklenebilir şekilde düzenler.
  • Compose, tek bir ana bilgisayarda ve Docker ile çalışır; K8s, birden fazla çalışma zamanını, çok düğümlü kümeleri ve bulut dağıtımlarını destekler.
  • Kompose, Compose'dan Kubernetes'e geçişi hızlandırır; Hizmetleri ince ayar yapmak için sağlayıcıları, alternatif nesneleri ve etiketleri destekler.
  • Kullanım örnekleri: Dev/CI için Compose; üretim, IoT/edge, büyük veri/makine öğrenimi ve çoklu/hibrit bulut senaryoları için Kubernetes.

Docker Compose ve Kubernetes Karşılaştırması

Konteynerlerle çalışıyorsanız, er ya da geç şu büyük soru ortaya çıkar: Docker Compose mu yoksa Kubernetes mi? Her iki araç da konteynerleştirilmiş uygulama yaşam döngüsünde kullanılır , ancak aynı sorunları çözmek veya aynı bağlamda çalışmak üzere tasarlanmamışlardır. Bu makalede, pratik örnekler, gerçek dünya senaryoları ve birinden diğerine sorunsuz geçiş için ipuçlarıyla birlikte, bu iki aracı derinlemesine karşılaştırıyoruz.

Teknolojik gösterişin ötesinde, bu karar günlük operasyonları etkiliyor: dağıtım süreleri, ölçeklenebilirlik , dayanıklılık, güvenlik ve maliyetler . Ayrıca, veri mühendisliğinin tipik kullanım durumlarını da etkiliyor: işlem hatları, veritabanları, akış, toplu işleme, veri formatları ve yönetişim; bu alanlarda orkestrasyon verimlilikte büyük fark yaratıyor.

Docker ve Docker Compose nedir (ve gerçekte ne işe yararlar)?

Docker'dan bahsettiğimizde aslında bir ekosistemden bahsediyoruz: Docker Engine, Docker Hub, Dockerfile, Docker Compose … Motor, imajlardan konteynerler oluşturur ve çalıştırır; Hub, bunların paylaşımını kolaylaştırır; ve Compose, yığının çeşitli parçalarını bir YAML dosyasında tanımlayarak tek bir komutla başlatmanıza olanak tanır.

Compose, bizi sonsuz komut dosyalarından ve birbirinden bağımsız komutlardan kurtarmak için oluşturuldu. Tek bir docker-compose.yml dosyasıyla servisleri, ağları ve birimleri tanımlarsınız ve her şeyi tek bir "docker compose up" (veya V1'de "docker-compose up") komutuyla çalışır hale getirirsiniz. Yerel geliştirme, entegre test, demo veya CI ortamları için idealdir.

Compose'un tipik bir örneği, API ve Postgres veritabanıyla birlikte şu şekilde olabilir. Bağımlılıkların, değişkenlerin ve portların nasıl okunabilir bir blok halinde tanımlandığına dikkat edin :

version: '3.8'
services:
  db:
    image: postgres:latest
    restart: always
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=postgres
    ports:
      - '5432:5432'
    volumes:
      - db:/var/lib/postgresql/data
    networks:
      - mynet

  my-api:
    container_name: my-api
    build:
      context: ./
    image: my-api
    depends_on:
      - db
    ports:
      - '8080:8080'
    environment:
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: postgres
      DB_PASSWORD: postgres
      DB_NAME: postgres
    networks:
      - mynet

networks:
  mynet:
    driver: bridge

volumes:
  db:
    driver: local

Compose'da manuel olarak ölçeklendirme yapmak için, servisin ölçeklendirme seçeneğini kullanabilirsiniz. Compose V2'de bunu genellikle `up --scale` komutuyla yaparsınız (V1'de `docker-compose scale` komutu kullanılıyordu):

docker compose up -d --scale my-api=3

Sınırlamalara dikkat edin: Compose tek bir sunucu için tasarlanmıştır , düğümler arasında yük dengelemesi veya otomatik ölçeklendirme yapmaz ve güncellemeler genellikle "build" ve "up -d" komutlarıyla konteynerlerin manuel olarak yeniden oluşturulmasıyla gerçekleştirilir.

Kubernetes nedir ve Compose'a göre ne gibi avantajlar sunar?

Kubernetes (K8s), dağıtılmış bir konteyner düzenleme platformudur. Üretim iş yüklerini çalıştırmak için Pod'lar, Dağıtımlar ve Hizmetler gibi kavramlarla çok düğümlü kümeler genelinde büyük ölçekli dağıtımları yönetir .

Kubernetes'te tek tek konteynerleri yönetmezsiniz; Pod'ları (bir veya daha fazla konteyner içerebilen) yönetirsiniz. Kontrol düzlemi, her Pod'un nerede çalışacağını planlar , servisleri sunar, trafiği dağıtır, yatay ölçeklendirme yapar ve iş yüklerinin sağlığını izler.

Temel bir dağıtım, web servisinin 3 kopyasıyla şu şekilde görünebilir. Şablonları, etiketleri ve açıkta bırakılan portları tanımlayın :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: my-web-image
          ports:
            - containerPort: 8000

Yük dengeleme ile kullanıma sunmak için bulutta tipik olarak bir LoadBalancer servisi kullanılır. Seçici , trafiği yönlendirmek için Pod'un etiketleriyle eşleşir .

apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8000
  type: LoadBalancer

Üretim ortamında Kubernetes, yüksek performanslı otomasyon (HPA), kademeli güncellemeler ve kendi kendini kurtarma gibi yetenekleriyle öne çıkar. HPA, metrikler (örneğin, CPU kullanımı) temelinde replikaları ayarlar :

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: web-hpa
spec:
  minReplicas: 1
  maxReplicas: 10
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-deployment
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50

Konteyner sağlığı, problar aracılığıyla izlenir; eğer bu problar başarısız olursa, K8s konteyneri yeniden başlatır. Bu, "kendini onarma"nın temelidir :

apiVersion: v1
kind: Pod
metadata:
  name: web-pod
spec:
  containers:
    - name: web
      image: my-web-image
      ports:
        - containerPort: 8000
      livenessProbe:
        httpGet:
          path: /healthcheck
          port: 8000
        initialDelaySeconds: 15
        periodSeconds: 15

Docker Compose ve Kubernetes arasındaki farklar

Temel benzerlikler ve farklılıklar (lafı dolandırmadan temel noktalar)

Ortak noktaları şu: konteynerlerle çalışıyorlar ve dağıtımları YAML üzerinden tanımlıyorlar. Her iki çözüm de geliştiriciler ve operatörler için kullanışlıdır ve geliştirme → üretim iş akışında birbirlerini çok iyi tamamlarlar.

  Güvenli ve Ölçeklenebilir Bulut Mimarisine Dair Kapsamlı Kılavuz

En önemli fark kapsamda yatmaktadır: Compose, Docker merkezli ve tek sunuculudur ; Kubernetes ise çoklu çalışma ortamlarını ve çok düğümlü kümeleri destekler ve bulutlara ve yönetilen hizmetlere doğrudan entegrasyon sağlar.

Daha önemli farklılıklar şunlardır: Kubernetes otomatik ölçeklendirme, kademeli güncellemeler ve kendi kendini onarma özellikleri sunarken , Compose bunları sunmaz. Kubernetes, Pod'larla soyutlama yaparken, Compose doğrudan Docker konteynerleriyle etkileşim kurar.

Ayrıca Kubernetes, tek seferlik veya planlanmış görevler için Jobs ve CronJobs içerir. Bu, sistem cron işlerinden ve ekstra kapsayıcılaştırılmış süreçlerden kaçınmayı sağlayarak platformu otomasyon tanımlamak için doğal bir yer haline getirir.

Şirket içi ortamlarda, hız ve sadelik açısından Compose öne çıkıyor. Yüzlerce düğüme veya çoklu bulut ortamlarına ölçeklendirme için ise Kubernetes mantıklı bir seçim . Compose, çoklu sunucu dağıtımları için Docker Swarm'ı kullanabilir, ancak benimsenme oranı ve yetenekleri Kubernetes'in ekosistemi ve olgunluğuyla eşleşmiyor.

Orkestrasyona neden ihtiyacınız var (ve her biri ne zaman en iyi şekilde uyuyor)

İyi bir orkestratör size şunları sağlar: birleşik tedarik ve dağıtım, planlanmış başlatmalar, hizmetler arasında iletişim , yük dengeleme ve her hizmet üzerinde ek yönetim yoluyla artırılmış güvenlik.

Compose, temel işlevleri sade ve anlaşılır bir şekilde ele alarak geliştirme, test ve demo çalışmaları için harika bir araçtır. Ancak, birden fazla düğüme, yerel yük dengeleme ve otomatik ölçeklendirmeye veya kesinti olmadan artımlı dağıtımlara ihtiyaç duyduğunuzda sınırlamaları ortaya çıkar .

Kubernetes ise yük arttığında "platform" görevi görüyor: çok düğümlü, otomatik ölçeklendirme, yüksek kullanılabilirlik ve AWS, Azure, GCP'de yerel desteği ve yönetilen seçenekleriyle devasa bir ekosistem.

Gerçek dünya kullanım durumları (geliştirme, veri ve daha fazlası)

Compose şu alanlarda öne çıkıyor: tekrarlanabilir yerel ortamlar, uçtan uca testler, CI/CD ve eğitim . Tüm yığını YAML'de tanımlayıp tek bir komutla çalıştırmak, gereksiz birçok şeyi ortadan kaldırıyor.

Kubernetes, üretim uygulamaları, IoT ve uç bilişim, büyük veri ve makine öğrenimi ile çoklu/hibrit bulut ortamları için idealdir . Gecikme süresi, dayanıklılık ve gözlemlenebilirliğin önemli olduğu dağıtılmış iş yüklerini yönetir.

Veri mühendisliğinde K8s, akış ve toplu işlem hatları, veritabanları, kuyruklar ve analitik motorlar için mükemmeldir ; her bir pod için kaynak kontrolü ve zirvelerde otomatik ölçeklendirme özelliklerine sahiptir.

Projeniz küçükse ve tek bir sunucuya sığıyorsa, Compose sorunsuz bir şekilde işinizi görecektir. Ancak kullanıcı tabanınız büyüdüğünde ve ciddi hata toleransı ve yük dengelemesine ihtiyaç duyduğunuzda , Kubernetes'i düşünmenin zamanı gelmiştir.

Ağ oluşturma, ölçekleme ve yükseltmeler: pratik bir karşılaştırma

Compose, her proje için bir ağ oluşturur ve her hizmet için adları çözümler. Proje içinde konteynerlerle iletişim kurmak kolay ve güvenlidir , ancak harici yük dengeleme ve çoklu barındırma yerleşik özellikler değildir.

Kubernetes'te, Servisler küme içinde DNS keşfi ve yük dengelemesi sağlar ; dışarıya doğru ise HTTP/S trafiğini yönlendirmek için LoadBalancer, NodePort veya Ingress kullanabilirsiniz.

Ölçeklendirme: Compose manuel olarak ve yalnızca tek bir sunucuda ölçeklenir. Kubernetes, HPA ile yatay olarak ve metrikler ve/veya olaylarla programatik olarak ölçeklenir. Küme izin veriyorsa daha fazla düğüme de genişleyebilir.

Güncellemeler: Compose'da bunlar genellikle manuel olarak yeniden oluşturulur. Kubernetes, ilerleme kontrolü (kubectl rollout) ve bir şeyler ters giderse geri alma özelliğiyle kademeli güncellemeler yapar ve böylece etkiyi en aza indirir.

Kendi kendini onarma: Compose, konteynerleri yeniden başlatabilir, ancak sunucu veya çalışma zamanı çökmelerini çözmez. Kubernetes, Pod'ları kullanıcılara şeffaf bir şekilde sağlıklı düğümlere taşır .

Geliştirici verimliliği ve operasyonel deneyim

Compose, Docker'ın üzerinde ince bir katmandır. Öğrenmesi hızlıdır ve geri bildirim döngüsü anında gerçekleşir ; bu da yinelemeli geliştirme için mükemmeldir.

Kubernetes yeni kavramlar ekler (Pod'lar, Dağıtımlar, Hizmetler, Ingress, ConfigMap'ler, PVC'ler vb.). Öğrenme eğrisi vardır, ancak karşılığında dağıtımlar, güvenlik, gözlemlenebilirlik ve ölçeklenebilirlik üzerinde ayrıntılı kontrol elde edersiniz .

Uyumluluk açısından Compose, "Docker öncelikli"dir. Kubernetes ise çeşitli çalışma ortamlarını destekler ve bulut sağlayıcılarıyla entegre olur ; bu da çoklu bulut veya hibrit stratejileri olan şirketler için çok önemlidir.

Çılgına dönmeden Docker Compose'dan Kubernetes'e geçiş

Ne zaman geçiş yapılmalı? Uygulamanız artık "küçük" olmadığında, çok düğümlü mimariye, gözlemlenebilirliğe, ölçeklenebilirliğe ve yüksek kullanılabilirliğe ihtiyaç duyduğunuzda veya kademeli (canary) ve mavi/yeşil dağıtımlar istendiğinde.

Tipik zorluklar şunlardır: servis ağının haritalandırılması, PV/PVC ile depolama tasarımı , yapılandırmanın ConfigMaps/Secrets'a ayrılması ve her bir konteynerin sağlık ve hazır olma durumlarının incelenmesi.

Mimari de yeniden gözden geçirilmelidir: dağıtım birimi olarak Pod , uç noktaları ortaya çıkarmak için servisler ve zamanlayıcının işini yapabilmesi için konteyner başına kaynaklar (CPU/Bellek).

Kompose: Birkaç adımda Compose'dan K8s'e

Kompose, docker-compose.yml dosyalarını Kubernetes veya OpenShift manifestlerine dönüştürür. Tüm YAML dosyalarını manuel olarak yeniden yazmaya gerek kalmadan geçişe başlamanın en doğrudan yoludur .

Başlamadan önce, bir Kubectl kümesine ve yapılandırılmış bir kubectl'e ihtiyacınız var. Durum bilgisi içeren bir şey test ediyorsanız, en az iki işçi düğümü (kontrol düzlemi değil) önerilir. Sürümünüzü `kubectl version` komutuyla kontrol edin.

  Sunucu kurulumu eğitimleri: eksiksiz ve pratik bir rehber

Kurulum: Önerilen yöntem, en son GitHub sürümünden ikili dosyayı indirmektir. Ayrıca bir tarball, macOS'ta Homebrew veya "go get" (bu son seçenek, geliştirme aşamasındaki değişiklikleri içeren ana dalı kullanır) kullanabilirsiniz .

Temel dönüştürme: docker-compose.yml dizinine gidin ve şunu çalıştırın :

kompose convert
kubectl apply -f <archivos-generados>

Kompose varsayılan olarak Dağıtımlar ve Hizmetler oluşturur. Günlük genellikle oluşturulan her dosyayı listeler ve uygulandıktan sonra kümede Dağıtımlar ve Hizmetler "oluşturulmuş" olarak görünecektir.

Erişim: Minikube kullanıyorsanız, servisleri kolayca açığa çıkarabilir veya sorgulayabilirsiniz. Bulutta, LoadBalancer servisinin genel IP adresini almak için "LoadBalancer Ingress"i kontrol edin; NodePort ile düğümlerde açık bir portunuz olur.

Temizleme: Testi bitirdiğinizde, uygulanan kaynakları kaldırın. Yinelemeler arasında çakışmaları önlemek için kümenizi temiz tutun .

Kompose gelişmiş seçenekleri (sağlayıcılar, nesneler ve etiketler)

Kompose, Kubernetes ve OpenShift'i destekler. "--provider" belirtmezseniz, varsayılan olarak Kubernetes'i kullanır . OpenShift ile, DeploymentConfigs ve ImageStreams'i, hatta derleme yönergelerini kullanırsanız BuildConfigs'i bile oluşturabilir.

Ayrıca çeşitli çıktıları da destekler: "-j" ile JSON, ReplicationControllers, DaemonSets veya Helm Charts . "--replicas" bayrağı, RC'lerdeki kopya sayısını değiştirmenize olanak tanır; Helm için ise temel grafik yapısını oluşturur.

Kompose işlemi içindeki Kompose'a özgü etiketler, dönüştürmeyi etkiler. Örneğin, Servis türünü veya bir uç noktanın Ingress/Route üzerinden gösterilip gösterilmeyeceğini tanımlayabilirsiniz .

etiket Valores
kompose.service.type nodeport/clusterip/yük dengeleyici
kompose.service.expose doğru / ana bilgisayar adı

Dikkat edilmesi gereken detaylar: "_" içeren isimler "-" olarak dönüştürülür (K8s alt çizgiye izin vermez) ve bir servis birimler kullanıyorsa, birden fazla yazıcıyla çakışmaları önlemek için dağıtım stratejisi "Yeniden Oluştur" olarak değiştirilir.

Kompose birden fazla sürümü ve dosyayı destekler

Kompose, Compose V1, V2 ve V3'ü destekler (deneysel yapıları nedeniyle 2.1 ve 3.2 sürümlerine sınırlı destek verilir). Birden fazla docker-compose dosyasını aynı anda gönderirseniz, bunlar birleştirilir ve ortak öğeler, tıpkı bir geçersiz kılma işleminde olduğu gibi, en sonuncusu tarafından üzerine yazılır.

Kubernetes dönüşümü sırasında, uyumsuz anahtarlar varsa "WARN Desteklenmeyen anahtar yapısı – göz ardı ediliyor" gibi mesajlar göreceksiniz. Endişelenmeyin, araç anladığı kısımla devam edecek ve geri kalanını daha sonraki manuel ayarlamalar için bırakacaktır.

Kompose'un Ötesinde: Move2Kube ve manuel geçiş

Daha fazla kontrole ihtiyacınız varsa, Compose dosyanızı analiz eden ve daha ince ayarlı Kubernetes yapıtları üreten Move2Kube gibi araçlar mevcuttur. Bu araçlar, platformunuzdaki iş modellerini veya şablonlarını uyarlamak istediğinizde kullanışlıdır.

Manuel geçiş, ilk geçişten sonra tamamen geçerli ve neredeyse her zaman önerilen bir yöntemdir. Tipik adımlar şunlardır: servislerin Deployments/StatefulSets'e , ağların Services/Ingress'e ve birimlerin depolama sınıflarıyla birlikte PV/PVC'ye dönüştürülmesi.

Bir Compose servisini Deployment'a dönüştürmenin en basit örneği şöyle olabilir: portları, imajı ve etiketleri Pod şablonuna aktarın:

# docker-compose.yml
version: '3'
services:
  web:
    build: .
    ports:
      - '8000:8000'
    depends_on:
      - db

# Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: my-web-image
          ports:
            - containerPort: 8000

Durum yönetimi (veritabanları, kuyruklar) için StatefulSets ve PersistentVolumes'ı göz önünde bulundurun. Compose'da "bir arada" olan her şey aynı Pod'da olmamalıdır ; sorumlulukları ayırın ve bileşenler arasında iletişim kurmak için Services kullanın.

Veri senaryoları: akış, toplu ve yönetişim

Karmaşık veri işlem hatlarında K8s tam anlamıyla işe yarıyor: Toplu işlemler için Jobs, zaman aralıkları için CronJobs , API'ler için Deployments ve Kafka, Spark veya Flink gibi sistemler için operators.

Akış ve veritabanları için, topluluk operatörleri ve grafikler başlatmayı kolaylaştırır. Hizmet Ağı (Service Mesh) ağı ve kaynak kontrolü, tek bir sunucu çözümüne kıyasla daha öngörülebilir gecikme süreleri ve SLO'lar sağlar.

Veri yönetimi ve güvenliği alanında Kubernetes, ortamların denetlenmesi ve ayrılması için ad alanları, politikalar ve RBAC denetimi sunar . Bu, Compose'un yerel yaklaşımına göre pratik bir avantajdır.

En iyi uygulamalar ve küçük operasyonel püf noktaları

Compose'da: YAML dosyanızı küçük ve modüler tutun ; ortam değişkenlerini ve .env dosyalarını kullanın; portları ve bağımlılıkları belgeleyin; ve yerel olarak çalıştırdıklarınızı CI'ya yansıtın.

Kubernetes'te: CPU ve bellek isteklerini/sınırlarını tanımlayın , Hazırlık/Canlılık denetimlerini kullanın, yapılandırmayı ConfigMaps/Secrets'a ayırın ve her hizmete uygun dağıtım stratejileri uygulayın.

Kubeck güncellemeleri için: ilerlemeyi izlemek ve bir sorun çıkması durumunda geri almak için `kubectl set image` ve `kubectl rollout status` komutlarını kullanın . Bu, üretimde kesinti yaşanmasını önleyecektir.

Compose'da belirli işlere ihtiyacınız varsa, bunları simüle edebilirsiniz, ancak Kubernetes'te CronJobs/Jobs ile daha temiz bir çözüm var ; konteynerleri ekstra işlemlerle veya ana bilgisayar cron'larıyla doldurmazsınız.

  .NET programlama dilleri ve bulut: Mükemmel bir uyum

Karışıklığı önlemek için hızlı SSS

Compose, Kubernetes'in yerini mi alıyor? Hayır. Compose, tek bir sunucuda çoklu konteyner yığınlarını basitleştirirken; Kubernetes, yüksek kullanılabilirlik ile küme ölçeğinde düzenleme yapar .

Compose hala kullanılıyor mu? Evet, hem de çokça. Sadece birkaç komutla eksiksiz ortamlar kurmak için ideal bir geliştirme ve test aracıdır .

Kubernetes, Docker'dan "daha mı iyi"? Bunlar farklı şeyler: Docker konteyner platformudur ; Kubernetes ise bunları bir kümede düzenler ve gelişmiş işlemler ekler.

Compose kodumu manuel olarak yeniden yazmadan Kubernetes'e taşıyabilir miyim? Evet, Kompose veya Docker Desktop entegrasyonu ile. Bu size hızlı bir ilk adım sunar ve daha sonra bunu iyileştirebilirsiniz.

İnce ayrıntılar: programlama, OpenShift ve alternatif dönüşümler

Kubernetes sadece sürekli dağıtım anlamına gelmez: Jobs ve CronJobs , sistem cron'larını yönetmenize gerek kalmadan tek seferlik veya planlanmış görevleri kapsar .

OpenShift'te Kompose, DeploymentConfigs ve ImageStreams'i, hatta Compose'un bir Git deposuyla ilişkili bir derlemesi varsa BuildConfigs'i bile oluşturabilir. Kaynağı ayarlamak için "--build-repo" ve "--build-branch" bayrakları kullanılır.

Farklı bir çıktı istiyorsanız, Kompose varsayılan Dağıtımlar ve Hizmetler yerine DaemonSet'ler, ReplicationController'lar veya Helm Grafikleri kullanmanıza olanak tanır . Ayrıca yalnızca YAML değil, JSON da üretebilir.

Uyumluluk, uyarılar ve küçük sorunlar

Kompose, Compose V1/V2/V3 sürümlerini destekler (2.1 ve 3.2 sürümlerinde sınırlamalar mevcuttur). Desteklenmeyen tuşlar bir UYARI ile göz ardı edilir ve manuel ayarlamalar için alan bırakılır.

Eğer servisinizde birden fazla disk birimi (volume) varsa, Kompose aynı disk biriminde eşzamanlılığı önlemek için stratejiyi "Yeniden Oluştur" (Recreate) olarak değiştirir . Bu, durum bilgisi içeren servisler için normal bir durumdur.

İsimlerdeki alt çizgiler tireye dönüştürülür. Bu, Kubernetes'in nesne adlarına getirdiği bir kısıtlamadır , bu nedenle dönüştürme sırasında sürprizlerle karşılaşmamak için Compose'da bunları doğru şekilde adlandırdığınızdan emin olun.

Dışarıdan erişim için, Hizmet türünü kontrol edin: ClusterIP (dahili), NodePort (düğümlerdeki port) veya LoadBalancer (buluttaki genel IP). Ingress ile temiz HTTP/S rotalarına ve merkezi TLS'ye sahip olacaksınız.

Minikube'de test yapıyorsanız, "minikube service <svc> –url" gibi komutlar hızlı bir URL döndürür . Cloud'da ise, Hizmeti tanımlarken "LoadBalancer Ingress" alanına bakın.

İlginç bir nokta: Topluluk içinde, Kubernetes profilleri için maaşlara ve üretim ortamlarında %88'e yakın benimseme oranlarına dair referanslar bulacaksınız . Olağandışı bir durum yok: bu fiili standart.

Resmi tamamlamak gerekirse, Kubernetes'in HTTP'den çok daha fazlası var: Service Mesh, operatörler ve CRD'ler Kubernetes'in erişim alanını genişletiyor. Compose'tan geliyorsanız, ilk başta bunalmış hissetmeniz normal, ancak bu ekstra güç daha sağlam işlemler anlamına geliyor.

Politikaları sıfırla: yararlı eşdeğerlikler

Compose, "yeniden başlatma: her zaman/arıza durumunda/hayır" seçeneklerini sunar. Kubernetes'te, duruma bağlı olarak, uygun yeniden başlatma politikalarına sahip ayrı Pod'lar veya denetleyiciler (Deployment'lar veya RC'ler) bulunur .

docker-compose yeniden başlatıldı K8'lerdeki nesne yeniden başlatma politikası
"" / Her zaman Denetleyici (Dağıtım/RC) Daima
arıza durumunda Koza Arıza durumunda
yok hayır Koza asla

Compose'da "hesaplama" konteynerleriniz veya geçici görevleriniz (örneğin hızlı bir "pi" işlemi) varsa, bunu uygun politikayla Kubernetes'te bir Job veya CronJob olarak uygulamanız yeterlidir.

Hızlı yerel dağıtımlar için Compose'u, ortamınız daha fazla güç gerektirdiğinde ise Kubernetes'i tercih edin: çok düğümlü destek, otomatik ölçeklendirme, sorunsuz dağıtımlar ve gerçek dayanıklılık . Compose, Move2Kube ve biraz özenle geçiş sorunsuz olur.

Sonuç olarak, seçim ölçek ve karmaşıklığa bağlıdır: Compose, geliştirme, test ve tek sunuculu ortamlar için mükemmel bir seçimdir; Kubernetes ise kurumsal, çoklu bulut dağıtımları ve gelişmiş otomasyon, yüksek kullanılabilirlik ve binlerce entegrasyona sahip bir ekosisteme ihtiyaç duyan ekipler için idealdir.

Kubernetes nedir
İlgili makale:
Kubernetes Nedir: Konteyner Orkestratörüne Giriş