Yazılım

Docker & Kubernetes

Konteyner Nedir?

Üzerinde çalıştığı altyapıdan soyutlamak için bağımlılıkları ile konteyner paket uygulama yazılımlarıdır. Artık kapsayıcılar, temel olarak, uygulamaların gerçekten çalıştıkları ortamdan soyutlanabilecekleri mantıksal bir paketleme mekanizması sunuyor. Şimdi, bu ayrıştırma, kapsayıcı tabanlı uygulamaların, hedef ortamın özel bir veri merkezi, genel bulut hatta bir geliştiricinin kişisel dizüstü bilgisayarı olmasına bakılmaksızın kolayca ve tutarlı bir şekilde devreye alınmasına olanak tanır.

Kubernetes Nedir?

Kubernetes, Google platformunda (GO Dili) geliştirilmiş bir konteyner yönetim sistemidir. Çeşitli fiziksel, sanal ve bulut ortamlarında kapsayıcı bir uygulamayı yönetmenize yardımcı olur. Google Kubernetes, karmaşık uygulamaları bile tutarlı bir şekilde sunmak için son derece esnek bir araçtır. Uygulamalar, 100 ila 1000 ayrı hizmetten oluşan kümelerde çalışır.

Kubernetes’in Temel Özelliği

Aşağıdaki gibi muazzam miktarda özelliğe sahiptir.

Her yerde çalışır: Açık kaynaklı bir araçtır ve iş yükünüzü istediğiniz yere taşımanıza izin veren şirket içi, Genel ve hibrit bulut altyapısından yararlanma özgürlüğü verir.

Otomasyon: Örneğin, Kubernetes başlatılacak konteynerin servis edilebilir bir ana bilgisayarı ile sizin yerinize kontrol edecek.

Etkileşim: Kubernetes, aynı anda daha fazla kümeyi yönetebilir. & Yalnızca yatay değil, dikey ölçeklemeye de izin verir.

Ek hizmetler: Konteyner yönetiminin yanı sıra ek özellikler sağlar, Kubernetes güvenlik ağı ve depolama hizmetleri sunar.

Kendi kendini izleme: Düğümlerin ve kapsayıcının sağlığını sürekli olarak kontrol ettiği için size kendi kendini izleme olanağı da sağlar.

Kubernet’lerin Avantajları

Otomatik kapsayıcı zamanlaması: Kubernet’ler, kaynak kullanımını artırmak için bir kapsayıcıyı bir düğümden diğerine yeniden planlayabilir. Bu, aynı sayıda makineden daha fazla iş çıkararak paradan tasarruf edeceğiniz anlamına gelir.

Hizmet keşfi: Birbiriyle iletişim kurması gereken bir grup hizmetiniz olduğunda, önce birbirlerini bulabilmeleri çok önemlidir. Bu özellikle doğrudur, çünkü konteynerler otomatik olarak planlanır ve potansiyel olarak hareket ettirilebilir. Neyse ki Kubernetes, konteynerlerin birbirleriyle iletişim kurmasını kolaylaştırıyor.

Kendi Kendini İyileştirme: Kubernetes, kapsayıcıları otomatik olarak izler ve çökmeleri veya olmaması gerektiği halde sonlandırılmaları durumunda bunları yeniden planlar. Kubernet’ler, üzerinde yaşadıkları düğümün arızalanması durumunda kapsayıcıları da yeniden planlayacak.

Sürekli Yükseltmeler: Neyse ki Kubernetes, sürekli güncellemeler gerçekleştirme yeteneğine sahiptir. Burası, çalışan uygulama tarafından sağlanan hizmeti kesintiye uğratmadan eski kapların aynı kapların yeni bir sürümünden makul bir şekilde değiştirildiği yerdir.

Kubernet’lerin Dezavantajları

Dik öğrenme eğrisi: Kubernetes, en deneyimli geliştiriciler ve DevOps mühendisleri için bile öğrenmesi kolay bir platform değildir.

Kurun ve yapılandırın: Kubernetes birden çok no’dan oluşur. Kümeyi başlatmak için ayrı ayrı yapılandırılması ve kurulması gereken bileşenler. Kubernetes’i manuel olarak kurarsanız, bir sertifika yetkilisi oluşturmayı ve sertifikayı yayınlamayı içeren güvenliği de yapılandırmanız gerekir.

Yüksek kullanılabilirlik yok: Kubernetes, hataya dayanıklı bir küme oluşturmak için varsayılan olarak yüksek kullanılabilirlik modu sağlamaz, ETCD kümeniz için HA’yı manuel olarak yapılandırmanız gerekir.

Uyumluluk sorunları: Bazen kapsayıcılarınız olduğunda Docker’ı topluluklarla kullanmanız gerekebilir. Ancak o zamanlar topluluklar, mevcut Docker CLI ve oluşturma araçlarıyla uyumlu değildi. Ve vatansız bir yere göç etmeniz gerektiğinde, göç sırasında daha fazla çaba gerektirir. 

Docker Nedir?

Docker, uygulamanızı kolayca oluşturabileceğiniz, yazılımınızı konteynerize etmek için kullanılan bir platformdur, uygulamanız için gerekli bağımlılıkları içeren paketi konteynere daha da ekleyin, bu konteynerler diğer makinelerde çalışmak üzere kolayca gönderilir. Docker, geliştiricilerin, kapsayıcı adı verilen hafif, sanal bir makine oluşturabileceğiniz görüntüler adı verilen şablonlar oluşturmasına izin vererek DevOps metodolojisini basitleştiriyor.

Docker, yazılım endüstrilerine altyapıyı otomatikleştirme, uygulamayı izole etme, tutarlılığı sürdürme ve kaynak kullanımını iyileştirme yetenekleri vererek işleri kolaylaştırıyor.

Docker’ın Temel Özelliği

Kolay yapılandırma: Bu, Docker’ı çok çeşitli ortamlarda kullanabildiğiniz için kodunuzu daha az zaman ve çabayla kolayca dağıtabileceğiniz Docker’ın temel özelliklerinden biridir. Altyapı gereksinimi, sistemin daha kolay ve daha hızlı yapılandırılmasına yardımcı olan uygulamanın ortamıyla artık bağlantılı değildir.

Swarm’ı kullanabilirsiniz: Docker konteynerleri için bir kümeleme ve zamanlama aracıdır, SO swarm, Docker API’sini bir ön uç olarak kullandı ve bu, denetleyiciye çeşitli araçlar kullanmamıza yardımcı oldu, ayrıca Docker ana bilgisayarı için kümeleri tek bir sanal olarak kontrol etmemize yardımcı oldu. Ana bilgisayar, takılabilir arka bükülmeleri etkinleştirmek için kullanılan, kendi kendini organize eden bir motor grubudur.

Güvenliği yönetir: Docker, sürünün kendisindeki sırları kaydetmemize izin verir. Ardından, hizmetlere belirli sırlara erişim izni vermeyi seçin. Gizli inceleme, gizlice oluşturma gibi motora bazı önemli komutlar içerir.

Hizmetler: Hizmet, bir kümenin içindeki bir kapsayıcının durumunu belirtmemizi sağlayan görevler listesidir. Her görev, çalışması gereken bir kapsayıcı örneğini temsil eder ve Swan bunları düğümler arasında zamanlar.

Daha Fazla Üretkenlik: Docker, teknik yapılandırmayı kolaylaştırarak ve uygulamaların hızlı dağıtımını sağlayarak üretkenliği artırdığına şüphe yok, Docker yalnızca uygulamanın yalıtılmış bir ortamda yürütülmesine yardımcı olmakla kalmaz, aynı zamanda kaynakları da azaltır.

Docker Avantajları

Yalnızca bir kez uygulama oluşturun: Bir kapsayıcı içindeki bir uygulama, Docker’ın kurulu olduğu bir sistemde çalışabilir. Bu nedenle, farklı platformlarda birden çok kez uygulama oluşturmaya ve yapılandırmaya gerek yoktur.

Daha fazla uyku ve daha az endişe: Docker ile uygulamanızı bir konteyner içinde test eder ve bir konteyner içinde gönderirsiniz. Bu, test ettiğiniz ortamın, uygulamanın üretimde çalışacağı ortamla aynı olduğu anlamına gelir.

Taşınabilirlik: Docker konteynerleri herhangi bir platformda çalışabilir. Herhangi bir yerel sistemde, Amazon EC2, Google Cloud, Virtual Box vb. üzerinde çalışabilir.

Sürüm kontrolü: Git gibi, Docker’ın yerleşik bir sürüm kontrol sistemi vardır. Docker kapsayıcıları, GIT depoları gibi çalışarak, Docker görüntülerinizde değişiklik yapmanıza ve bunları sürüm kontrolünden geçirmenize olanak tanır.

Docker Dezavantajları

Eksik özellik: Eksik özelliklere sahiptir. Konteynerin kendi kendine kaydı, ana bilgisayardan konteynere dosyaların kendi kendini denetlemesi ve çok daha fazlası gibi devam etmekte olan tonlarca özellik vardır.

Kapsayıcıdaki veriler: Kapsayıcı bundan sonra çöktüğünde bir yedekleme ve kurtarma stratejisine ihtiyaç duyar, ancak bunun için birkaç çözümümüz vardır, bunlar otomatik değildir veya henüz çok ölçeklenebilir değildir.

Grafiksel uygulama: Docker, grafik arayüz gerektirmeyen sunucu uygulamalarını dağıtmak için bir çözüm olarak tasarlanmıştır, kapsayıcı içinde GUI uygulamalarını çalıştırmak için kullanabileceğiniz x11 video iletme gibi bazı yaratıcı stratejiler vardır.

Avantajı azdır: Genel olarak, yalnızca ayrı bir mikro hizmetler kümesi olarak çalışmak üzere tasarlanmış uygulamalar kaplardan en iyi şekilde yararlanır, aksi takdirde Docker’ın tek gerçek yararı, kolay bir paket machinima sağlayarak uygulama teslimini basitleştirebilmesidir.

Docker veya Kubernetes : Sizin için hangisi doğru?

Docker, Kubernetes ile karşılaştırıldığında daha az kurulum ve yapılandırma gerektirir. Örneğin, uygulamanızı YAML dosyalarını kullanarak dağıtabilir, kümedeki kapsayıcılar arasında uygun durumu, yük dengesini otomatik olarak sağlayabilir, hizmetleriniz için güvenlik ve erişim kontrolü sağlayabilirsiniz. Yük ağır değilse, Kubernetes yerine Docker Swarm’ı seçmek akıllıca bir seçenektir.

Kubernetes’in ilk kurulumu daha zordur, ancak birçok işlevi vardır. Ağ girişini ve gözlemlenebilirliği kubernet’lerle yönetebiliriz. Bulut platformlarının çoğu, Kubernet’leri EKS, AKS ve GKS gibi hizmetler olarak sunarak Kubernet’lerin otomatik ölçeklendirme, yük dengeleme vb. işlevlerden yararlanmasına olanak tanır. Kubernetes’te dağıtılan bölmeler ve kapsayıcılar, bir ad alanı kullanılarak ayrılabilir. Yüksek güvenlik ve mükemmel kullanılabilirlik istiyorsanız, Kubernetes harika bir seçenektir.

Kubernetes’i Docker ile Kullanma

Kubernetes, Docker ile kullanıldığında bir konteyner düzenleme aracı olarak hizmet verecek ve Docker, Kubernetes’te konteynerleri yürütmek için gereken görüntüleri oluşturmamıza yardımcı olacaktır. Kümedeki doğru düğüme yönelik tüm kapsayıcı dağıtımları, ölçekleme ve zamanlama Kubernet’ler tarafından gerçekleştirilebilir.