Yukarı tıklayın " CSDN "," En İyi Resmi Hesap "ı seçin
Kritik anda teslim edin!
Yazar Amr Abdelrazik
Çevirmen Teixeira10
[Çevirmenin Notu] Yazar, Docker, Kubernetes ve Mesos'un üç teknolojisinin geliştirme sürecini, teknik ilkelerini ve teknik özelliklerini tanıtır ve geliştiricilere farklı uygulanabilir senaryolar ve teknik özellikler için makul önerilerde bulunur. Aşağıdaki çeviridir:
Docker, Kubernetes ve Mesos'u karşılaştıran sayısız makale, konu ve çok sayıda sosyal sohbet var. Ondan bir şeyler öğrenmiş olsaydınız, bu üç açık kaynak projesinin konteynerlerin egemenliği için savaştığını düşünürsünüz. Ayrıca bu teknolojilerden yalnızca birini seçmenin ihtiyatlı bir karar olacağını da hissedebilirsiniz; tabii ki, bazı insanlar seçtikleri teknolojiyi desteklemek için diğer iki teknolojiyi reddediyor.
Açıkçası, bu uygulamalar yanlış.
Bu üç teknoloji, uygulamaların konteyner dağıtımını, yönetimini ve ölçeklendirmesini uygulayabilse de, aslında farklı sorunları çözerler ve tamamen farklı ortamlarda kullanılırlar. Aslında, yaygın olarak benimsenen bu üç teknolojiden hiçbiri diğerleri ile tamamen aynı değildir.
Hızla gelişen bu teknolojilerin örtüşen özelliklerini karşılaştırmak yerine, her projenin orijinal görevlerini ve mimarisini ve bunların birbirlerini nasıl tamamladıklarını ve etkileşime girdiklerini gözden geçirelim.
Docker ile başlayalım
Docker Inc, dotCloud adlı bir platform hizmetleri başlangıç şirketidir. Ekip, birçok uygulama ve müşteri arasındaki bağımlılıkları ve ikili dosyaları yönetmenin çok çaba gerektirdiğini fark etti. Bu nedenle, Linux gruplarının ve ad alanlarının bazı özelliklerini tek ve kullanımı kolay bir pakette birleştirdiler, böylece uygulama herhangi bir altyapı üzerinde çalışmaya devam edebilir. Bu paket, aşağıdaki işlevleri sağlayan bir Docker görüntüsüdür:
Uygulamayı ve kitaplığı tek bir pakette (Docker görüntüsü) paketleyin, böylece uygulama birçok ortamda tutarlı bir şekilde dağıtılabilir
"Docker push" ve "docker commit" gibi "docker" a benzer anlambilim sağlayarak geliştiricilerin yeni teknolojileri kolayca benimsemesine ve bunları mevcut iş akışlarına entegre etmesine olanak tanır
Docker görüntüsünü değişmez bir katman olarak tanımlayın ve değişmez bir altyapıyı destekleyin. Gönderilen güncellemeler, ayrı bir salt okunur katman olarak depolanır, bu da aynaları yeniden kullanmayı ve değişiklikleri izlemeyi kolaylaştırır. Tüm görüntüyü aktarmak yerine güncellemeleri katmanlar arasında aktararak disk alanından ve ağ trafiğinden tasarruf etmek de mümkündür.
Değişmez bir görüntüyü örnekleyerek Docker konteynerini çalıştırın.Çalışma zamanı değişikliklerini geçici olarak depolamak için yazılabilir bir katman kullanır, böylece uygulamanın birden çok örneği hızlı bir şekilde dağıtılabilir ve genişletilebilir.
Docker gittikçe daha popüler hale geliyor ve geliştiriciler dizüstü bilgisayarlarda çalıştırmadan bu konteynerleri üretim modunda çalıştırmaya başlıyor. Aynı zamanda, bu kapsayıcıları birden çok makine arasında koordine etmek için ek araçlara ihtiyaç vardır, buna kapsayıcı düzenleme adı verilir. İlginç bir şekilde, Docker görüntülerini destekleyen ilk konteyner destekçilerinden biri (Haziran 2014), Apache Mesos'taki Marathon'du (aşağıda ayrıntılı olarak açıklanacaktır). Docker'ın kurucusu ve CTO'su Solomon Hykes, o yıl Mesos'u "üretim kümeleri için altın standart" olarak önerdi. Kısa süre sonra, Docker Swarm's Marathon'a ek olarak, birçok konteyner düzenleme teknolojisi de ortaya çıktı: Nomad, Kubernetes ve Mesos (şimdi Docker motorunun bir parçası). Docker, açık kaynak dosya biçimini ticarileştirirken, şirket ayrıca temel Docker dosya biçimini ve çalışma zamanı motorunu tamamlayacak araçlar sunmaya başladı.
Docker hub, Docker görüntüleri için genel depolama
Docker kayıt defteri, yerel dağıtımı depolamak için kullanılır
Docker cloud, kapsayıcılar oluşturmak ve çalıştırmak için bir yönetim hizmeti
Ticari bir hizmet olarak Docker veri merkezi, birçok Docker teknolojisini bünyesinde barındırır
Kaynak: www.docker.com
Docker, yazılımı ve bağımlı paketlerini tek bir pakette kapsıyor, bu da yazılım endüstrisi için bir oyun değişikliği; aynı şekilde mp3 de müzik endüstrisinin yeniden şekillenmesine yardımcı oldu. Docker dosya formatı bir endüstri standardı haline geldi ve önde gelen konteyner teknolojisi satıcıları (Docker, Google, Pivotal, Mesosphere ve diğerleri dahil) Cloud Native Computing Foundation (CNCF) ve Open Container Initiative (OCI) oluşturdu. Bugün, CNCF ve OCI'nin amacı, konteyner teknolojilerinde birlikte çalışabilirlik ve standartlaştırılmış arayüzler sağlamak ve herhangi bir araçla oluşturulan Docker konteynerlerinin herhangi bir zamanda veya altyapıda çalışabilmesini sağlamaktır.
Kubernetes'e girin
Google, Docker yansıtma potansiyelini erken bir aşamada fark etti ve Google bulut platformunda "hizmet olarak" hizmetler sunmayı umdu. Google, kapsayıcılar konusunda kapsamlı bir deneyime sahiptir (Linux'ta cgroupları tanıttılar), ancak mevcut dahili kapsayıcılar ve Borg gibi dağıtılmış bilgi işlem araçları doğrudan altyapılarına bağlanacak. Bu nedenle Google, mevcut sistemde herhangi bir kod kullanmadı, ancak Docker konteynerlerini düzenlemek için Kubernetes'i sıfırdan tasarladı. Kubernetes Şubat 2015'te piyasaya sürüldü ve aşağıdaki hedefleri ve düşünceleri içerir:
Uygulama geliştiricilerini, temel altyapıyla etkileşim kurmadan Docker kapsayıcıları tarafından sağlanan güçlü araçları kullanmaları için yetkilendirin
Tutarlı uygulama dağıtımı ve çapraz bulut API'leri için standart dağıtım arayüzleri ve ilkeler sağlayın
Modüler bir API çekirdeği oluşturmak, satıcıların sistemleri temel Kubernetes teknolojisi etrafında entegre etmelerine olanak tanır. Mart 2016 itibariyle, Google Kubernetes'i CNCF'ye bağışladı ve bu güne kadar projeye hala ana katkıda bulunan (ardından Redhat, CoreOS ve diğerleri).
Kaynak: wikipedia
Kubernetes, altyapı ve operasyon ekiplerine olan bağımlılığı azalttığı için uygulama geliştiricileri için çok çekicidir. Satıcılar aynı zamanda Kubernetes'i de severler çünkü konteyner hareketini desteklemek için basit bir yol sağlar ve kendi Kubernetes dağıtımlarını çalıştırma operasyonu için ticari bir çözüm sağlar (bu hala olağanüstü bir deneyimdir). Kubernetes, CNCF altında açık kaynaklı bir proje olduğu için de çok çekicidir.Docker kümesiyle karşılaştırıldığında, ikincisinin açık kaynak projesi Docker tarafından sıkı bir şekilde kontrol edilir.
Kubernetes'in temel avantajı, uygulama geliştiricilerine durum bilgisiz Docker konteynerlerini düzenlemek için güçlü araçlar sağlamasıdır. Daha fazla iş yükünün kapsamını genişletme planları olsa da (analitik ve durum verileri hizmetleri gibi), bu planlar hala çok erken bir aşamadadır ve ne kadar başarılı oldukları görülmeye devam etmektedir.
Apaçi Mesos
Apache Mesos, başlangıçta Berkeley'deki California Üniversitesi'nin yeni nesil bir küme yöneticisi oluşturma hedefiyle bir projesiydi ve bulut bilişim ve Google'ın Borg ve Facebook'un Tupperware'i gibi dağıtılmış bilgi işlem altyapısından deneyim öğrendi. Borg ve Tupperware tek bir mimariye sahip olmasına ve fiziksel altyapıyla ilgili kapalı tescilli teknolojiler olmasına rağmen, Mesos, modüler bir mimari, açık kaynaklı bir geliştirme yöntemi sunar ve tamamen bağımsız olacak şekilde tasarlanmıştır. Temel altyapı. Mesos, mikro hizmetlerden büyük veriye ve gerçek zamanlı analizden birçok alanı kapsayan Twitter, Apple (Siri), Yelp, Uber, Netflix vb. Gibi birçok önde gelen teknoloji şirketi tarafından hızla kabul edildi.
Bir küme yöneticisi olarak Mesos'un mimarisi bir dizi farklı sorunu çözmektir:
Özel veya genel bulutlarda tutarlı uygulamalar ve işletim deneyimi sağlarken, kaynak tahsisini basitleştirmek için veri merkezi kaynaklarını tek bir havuzda soyutlayın
Kullanımı iyileştirmek, maliyetleri düşürmek ve yer kaplamak için aynı altyapı üzerinde analitik, durum bilgisi olmayan mikro hizmetler, dağıtılmış veri hizmetleri ve geleneksel uygulamalar gibi farklı iş yüklerini kullanın
Dağıtım, kendi kendini iyileştirme, genişletme ve yükseltme gibi belirli uygulamalara yönelik görevler, ikinci gün işlemleri otomatik olarak gerçekleştirebilir; yüksek kullanılabilirlik ve hataya dayanıklı altyapı sağlar
Küme yöneticisini veya mevcut uygulamaları değiştirmeden yeni uygulamaları ve teknolojileri çalıştırmak için kalıcı ölçeklenebilirlik sağlayın
Birkaç uygulamadan düzinelerce hatta on binlerce kişiye kadar uygulamaların ve temel altyapının esnek planlaması.
Mesos, Java gibi geleneksel uygulamalar, durumsuz Docker mikro hizmetleri, toplu işleme, gerçek zamanlı analiz ve durum dağıtılmış veri hizmetleri dahil olmak üzere çeşitli farklı iş yüklerini tek tek yönetme konusunda benzersiz bir yeteneğe sahiptir. Mesos'un kapsamlı iş yükü, "uygulamaya duyarlı" zamanlamayı mümkün kılan iki katmanlı mimarisinden gelir. Uygulamaya duyarlı programlama, belirli bir uygulamanın işlem mantığını bir "Mesos çerçevesi" içinde (işlemdeki bir runbook'a benzer) kapsülleyerek gerçekleştirilir. Kaynak yöneticisi Mesos Master, izolasyonu korurken bu çerçeveler için temel altyapının bir parçasını sağlar. Bu yöntem, her iş yükünün kendi özel uygulama zamanlayıcısına sahip olmasına izin verir, böylece dağıtım, genişletme ve yükseltme için belirli operasyonel gereksinimlerini anlayabilir. Uygulama planlayıcısının geliştirilmesi, yönetimi ve güncellenmesi bağımsızdır, bu da Mesos'un daha fazla operasyonel yetenek eklerken yeni iş yüklerini desteklemek için yüksek derecede ölçeklenebilirliğe sahip olmasını sağlar.
Örneğin, bir takım yükseltme sürecini nasıl yönetir? Durum bilgisi olmayan uygulamalar "mavi / yeşil" dağıtım yönteminden yararlanabilir; bu uygulamanın başka bir tam sürümü eski sürüm hala mevcutken görünecektir ve kullanıcı hazır olduğunda ağı açın ve yeni sürümü arayın. Eski uygulamanın üzerine de yazılacaktır. Ancak, HDFS veya Cassandra gibi verileri yükseltirken, düğümün yerel veri hacmini korumak, veri kaybını önlemek ve aynı anda belirli bir işlemi gerçekleştirmek ve yükseltmeden önce ve sonra her düğümde özel işlemler gerçekleştirmek için bir kez çevrimdışı olması gerekir. Kontrol edin ve sipariş edin. Bu adımların tümü, belirli uygulamalar veya hizmetler gerektirir ve hatta belirli sürümler olabilir. Bu, veri hizmetlerini geleneksel kapsayıcılar kullanarak yönetmeyi oldukça zorlaştırır.
Mesos, her işi yönetme yeteneğine sahiptir, bu da birçok şirketin Mesos'u mikro hizmetleri ve veri hizmetlerini birleştiren birleşik bir platform olarak kullanmasına neden olur. "SMACK yığını", veri yoğun uygulamaları çalıştırmak için genel bir referans mimarisidir.
Bir an netlik
Apache Mesos'un konteyner düzenlemesini nasıl tanımlayacağımızı henüz tanıtmadık. Öyleyse neden insanlar otomatik olarak Mesos'u konteyner düzenlemesiyle ilişkilendiriyor? Kapsayıcı düzenleme, Mesos'un modüler mimarisinde çalışabilir ve Marathon adı verilen Mesos tabanlı bir düzenleme çerçevesi kullanır. Marathon, başlangıçta cgroup konteynerlerinde uygulama arşivlerini (jar, tarball, ZIP dosyaları gibi) düzenlemek için geliştirildi ve 2014 yılında Docker konteynerlerini destekleyen ilk konteyner koordinatörlerinden biri oldu.
Bu nedenle, insanlar Kubernetes ve Kubernete'yi Mesos ile karşılaştırdıklarında, Docker ve Docker Swarm'ı Mesos'ta koşan Marathon ile karşılaştırıyorlar.
Bu neden önemli çünkü açıkçası Mesos kimin üstüne çıkacağı umurunda değil. Mesos, Java uygulama sunucuları, Docker konteyner düzenlemesi, Jenkins CI Jobs, Apache Spark analitiği, Apache Kafka akışı ve daha fazla paylaşılan altyapı için küme hizmetleri sağlayabilir. Genel entegrasyon henüz uygulanmamış olsa da Mesos, Kubernetes veya diğer konteyner birleştiricilerde bile çalışabilir.
Kaynak: Apache Mesos Anketi 2016
Mesos'un bir başka avantajı (ve neden birçok kurumsal mimarın ilgisini çekiyor) kritik görevleri yürütme konusundaki olgunluğudur. Mesos 7 yıldan fazla bir süredir seri üretimde (onbinlerce sunucu), bu nedenle piyasadaki diğer birçok konteyner teknolojisinden daha olgun ve güvenilir olduğunu biliyoruz.
Bunların hepsi ne anlama geliyor?
Kısacası, bu üç teknolojinin tümü Docker konteynerleri ile ilgilidir ve uygulama taşınabilirliği ve ölçeklendirme için konteyner düzenlemesi sağlar. Peki, bunlar arasında nasıl seçim yapılır? Doğru aracı seçmek o andaki işe bağlıdır (farklı işler için farklı araçlar seçmeniz gerekir). Bir uygulama geliştiriciyseniz ve uygulamaları oluşturmanın ve paketlemenin modern bir yolunu bulmak veya mikro hizmetleri hızlandırmak istiyorsanız, Docker kapsayıcıları ve geliştirme araçları en iyi seçeneklerdir.
Bir geliştirme / devops ekibiyseniz ve Docker konteyner düzenlemesine adanmış bir sistem oluşturmak istiyorsanız ve temel altyapı için çözümleri kişisel olarak entegre etmeye istekliyseniz (veya Google Engine veya Azure Container Service gibi genel bulut altyapısına güveniyorsanız), Kubernetes Düşünmeyi hak ettiğiniz iyi teknoloji.
Docker kapsayıcıları, eski programlar (ör. Java) ve dağıtılmış veri hizmetleri (ör. Spark, Kafka, Cassandra, Elastic) dahil olmak üzere birden çok önemli görevi çalıştırabilen güvenilir bir platform oluşturmak ve taşınabilir olmak istiyorsanız Bulut hizmeti veya veri merkezi, ardından Mesos (veya kendi Mesos dağıtımımız, Mesosphere DC / OS) tam size göre.
Neyi seçerseniz seçin, sunucu kaynaklarının daha verimli kullanılmasını sağlayan, uygulama taşınabilirliğini basitleştiren ve geliştirici çevikliğini artıran bir dizi araç kullanacaksınız. Bu şekilde, gerçekten bir hata yapma olasılığınız yok.