Kubernetes ile Docker karşılaştırmasının anlaşılması yerel bulutta ve DevOps'ta en önemli konulardan biridir. Kubernetes ve Docker kesinlikle bir aynı konuya dahil olsalar da, gerçek şu ki kesinlikle birbirleriyle karşılaştırılmamalıdır. Aslında Kubernetes ve Docker birbirleriyle doğrudan rekabet içinde değildir. Bunun yerine, onları birbirlerini tamamlayabilecek ve birbirleriyle çalışabilecek iki teknoloji olarak ele alın.
Bu durumlardan hangileriyle karşılaşabileceğinizi nasıl bileceksiniz? Bu noktaya ulaşmak için önce Kubernetes ve Docker'ın örtüştüğü ve zıtlaştığı belirli alanları anlamak önemlidir.
Docker, uygulama yazılımı kapsayıcıları için açık kaynaklı bir platformdur. Bu konsept sizin için yeniyse, kapsayıcı gerekli kodun ve bağımlılıkların tümünü yürütülebilir bir formata yerleştiren bağımsız bir paketleme formatıdır. Gerçek dünyadan bir benzetme kullanmak gerekirse, bir kapsayıcı, masanın tüm parçaları, braketleri ve vidaları (ve tabii ki altıgen anahtar) içeren bir IKEA paketi gibidir. Ancak tüm parçaları içermesine ek olarak, kapsayıcıyı çalıştırdığınızda sizin için masayı da oluşturur.
Docker, genellikle hafif ve standartlaştırılmış formatı nedeniyle uygulama yazılımı geliştiricileri tarafından kullanılır. Bu özellikler, geliştiricilerin esneklik ve ölçeklenebilirlik ile oluşturma, test ve dağıtım işlemlerini gerçekleştirmesine olanak tanır.
Docker'ın BT endüstrisinde başka bir anlamı daha mevcuttur; Docker, Inc adında gerçek bir şirket vardır. Şirket, platform içinde çalışmak için araçlar geliştirir. Ad benzeşmesi söz konusu olduğunda bu farkın dikkate alınması önemlidir.
Docker tek bir kapsayıcıysa Kubernetes, birçok kapsayıcıyı aynı anda yönetmek için bir araçtır. Docker gibi (şirket değil platform), Kubernetes de açık kaynaklı bir platformdur, ancak 2.300'den fazla pay sahibi bulunan bir proje olarak Cloud Native Computing Foundation tarafından yönetilir. Kubernetes bulut için bir işletim sistemi gibi çalışır ve BT departmanlarının işleri uygun ölçekte ele alabilmeleri için sanal makinelerde ve bulutlardaki yönetimi basitleştirir.
Kubernetes neler yapabilir? Kubernetes, yerel bir sistemde bulunan her tür sistem yönetimine benzer şekilde ama bir kapsayıcı ölçeğinde çalışır. Tedarikler, güncellemeler, çizelgeler, silmeler ve genel durum izlemenin tümü Kubernetes'in erişimindedir. IKEA benzetmesine geri dönersek, bir konteyner tek bir masaysa, Kubernetes, IKEA deposundaki masaların, sandalyelerin ve diğer paketlenmiş mobilyaların sipariş edilmesini, dağıtılmasını ve kontrol edilmesini sağlayan tesis yöneticisi gibidir.
Docker ve Kubernetes ile ilgili herhangi bir tartışmada eksik olan kısım, kapsayıcı çalışma zamanlarının tanımıdır. Kapsayıcı çalışma zamanı nedir? Özetle, konteyneri çalıştıran motordur. IKEA benzetmesine geri dönersek, konteyner çalışma zamanları kutunun içindeki montaj talimatlarıdır. Bazı durumlarda, bu basittir ve yürütme yönetimi, düşük seviyeli kapsayıcı çalışma zamanı olarak bilinen şekilde gerçekleştirilir. Daha karmaşık durumlar için üst düzey kapsayıcı çalışma zamanları, API entegrasyonu, görüntü biçimleri ve görüntü yönetimi için yön sağlar. Bazı durumlarda, terim bundan biraz daha fazla fark olsa da, Docker ile birbirinin yerine kullanılabilir.
Kubernetes, Kapsayıcı Çalışma Zamanı Arayüzü (CRI) olarak bilinen bir API çalıştırır. Bu, paketi yürütmek için her bir kapsayıcı çalışma zamanı ile arayüz oluşturur. Tekrar, IKEA benzetmesini kullanırsak, Kubernetes'in CRI'si, paket (kapsayıcı) içindeki montaj talimatını (kapsayıcı çalışma zamanını) okuyan kişidir.
Docker dışında başka kapsayıcı çalışma zamanları vardır. Diğer ilki popüler çalıştırma zamanı şunlardır:
Containerd: Docker projesinin parçası olarak geliştirilmiştir. Ancak amaç Docker'ı daha esnek ve modüler hale getirmekti, bu nedenle geliştiriciler Containerd'ı kendi projesine ayırmayı seçtiler. Containerd, kayıtlardan görüntü çekme, görüntü yönetimi ve konteyner sürecini yürütmek için düşük seviyeli çalışma zamanlarıyla entegrasyon gibi üst düzey konteyner çalışma zamanı ihtiyaçlarını karşılar.
CRI-O: CRI-O, Docker'a alternatif başka bir açık kaynaklı kapsayıcı çalışma zamanıdır. Açık Kapsayıcı İnisiyatifi standardı ile uyumlu çalışma zamanları sağlamak için Kubernetes Kapsayıcı Çalışma Zamanı Arayüzünü (CRI) uygular.
Hem CRI-O hem de Containerd, CRI tarafından sağlanan spesifikasyonları kullanır, böylece Kubernetes ile tamamen uyumlu hale gelir.
"Docker - Kubernetes karşılaştırması" genellikle tartışılır ancak gerçek şu ki ikisi de birbiriyle doğrudan rekabet içinde değildir. Bu makale boyunca kullanılan IKEA benzetmesi, bunların nasıl ilişkili olduğunu ve modern BT yönetimini yürütmek için neden önemli olduğunu, ancak hiçbir şekilde rakip olmadıklarını gösterir. Bunun yerine buluta özel ekosistemin bir parçasıdırlar. Docker kapsayıcıları, Kubernetes'in yönetiminin bir parçasıdır ve Kubernetes'in avantajından yararlanarak Docker kapsayıcılarının hacmini kolayca ölçeklendirebilirsiniz.
Dolayısıyla soru "Docker'ı mı yoksa Kubernetes'i mi seçeyim?" değildir. Bunun yerine, BT yöneticilerinin göz önünde bulundurması gereken temel konu, yönetim ve operasyonlar açısından Kubernetes ve Docker'ı nasıl kullanacaklarıdır.
Kubernetes ve Docker birlikte çalışacak şekilde tasarlanmıştır. Kubernetes'in Docker dağıtımını yönetmek için kullanılması gerekli olmasa da birden fazla dağıtım örneğinin yönetilmesi gereken durumlarda bunlar etkili bir tandemdir. Bu, özellikle aynı uygulama yazılımının birden çok dağıtımının kullanıldığı ve ayrıca ölçeklendirmenin gerekli olduğu durumlar için geçerlidir. Kubernetes orkestrasyon sisteminin açık kaynaklı yapısı, birden çok sunucudaki karmaşıklıkları yöneten sürekli olarak desteklenen bir platform sağlar.
Yamaların ve güncellemelerin toplu olarak işlenmesi ve sorunların ölçekte izlenmesi gibi özellikler aracılığıyla Kubernetes'ten çok sayıda Docker paketi dağıtılabilir ve yönetilebilir ve bunların tümü isteğe bağlı talepleri işlerken yapılabilir. Kubernetes sayesinde BT departmanları şunları yapabilir:
Oracle Bulut Altyapısı, modern buluta özel uygulama yazılımlarını hızlandırmaya ve oluşturmaya yönelik çeşitli hizmetler sunar. Özellikle, Kubernetes Engine ve Container Registry (Docker görüntülerini yöneten ve analiz eden) yönetimi kolaylaştıran ve performansı artıran sağlam ve ücretsiz (dahil edilen) araçlardır. Kubernetes'e ücretsiz erişim için Oracle Bulut'u deneyerek kendiniz görün.
Mart 2020'de İtalya'daki Pompeii Arkeoloji Parkı'nın kapatılmasının ardından, yeniden açma planları, sosyal mesafeyi sağlamak için bir yönetim ve kontrol önlemi gerektiriyordu. Turistlerin, OCI Kubernetes Engine ve Oracle Container Registry dahil olmak üzere bulut tabanlı bir mobil çözümü hızlandırmak için seçilen bir dizi Oracle ürünü tarafından desteklenen yeni MyPompeii uygulamasına erişebilmeleri için planlar oluşturulmuştur.
Londra merkezli Snap Vision, alıcıların sevdikleri kıyafetleri keşfetmelerine yardımcı olmak için yapay zeka destekli görsel arama teknolojisi sağlıyor. COVID-19 ile birlikte mağaza içi alışveriş uzun süreli olarak yasaklandığından, Snap Vision'ın teknolojisi, dijital bir alışveriş deneyimi oluşturmaya yardımcı olmak için Birleşik Krallık perakendecilerine sunuldu. Ölçeklendirme önemli bir zorluktu, ancak Snap Vision, Kubernetes ile Oracle Bulut Altyapısı sayesinde yeni perakendeci ortamlarını düşük maliyetle barındırabildi.