Docker, Kubernetes ve Mesos: Neden tüm bildiğiniz yanlış olabilir?

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.

Meksika nihayet #MeToo kasırgasını başlatarak Twitter'da hayatın her alanını kasıp kavurdu
önceki
Tekel karşıtı tam olarak neye karşı çıkıyor? Son 50 yılda süper büyük şirketlerde ve karşılaştıkları denetimde ne gibi değişiklikler oldu?
Sonraki
Java'nın yeri doldurulamaz beş özelliğini kontrol edin, mükemmel programlama dili yoktur
Duvar rafları "görünmez" olabilir mi? Aslında görsel bir oyun Bu tasarım harika
Çince karakterlerin güzelliğini hissedin ve kültürel klasikleri miras alın
Kış Olimpiyatları sırasında Arowana, Pekin Kış Olimpiyatları'nın resmi tahıl ve yağ ürünleri sponsoru oldu
Sok San özgürlük getiriyor, Pogba ve Manchester United doğuyor
2019 Kuzey Amerika Otomobil Fuarı Pavyonu: Lincoln'ün 80. Yıl Sürümü Açıklandı
OnePlus tarihindeki en iyi cep telefonu: OnePlus 6T% 23 arttı
Yılbaşı alışverişlerinin listesi "yabancı tatlar" ile dolu
Kağıt fiyatları yükselmeye devam ediyor, geri dönüştürülebilir kurye kutuları ilk olarak "jianghu" olarak göründü
Muhtemelen en hızlı ekranlı parmak izli telefon! OnePlus 6T parmak izi kilit açma hızı yalnızca 0,34 saniyedir
Haval'ın küresel satışları 5 milyona ulaştı ve resmi olarak 5-2-1 küreselleşme stratejisi yayınladı
Reformun öncüleri, reformun 40. yıldönümünü tartışmak ve açılmak için mezun oldukları okullara döndüler
To Top