KUBERNETES VS DOCKER



Kubernetes Nedir?

Kubernetes, container tabanlı iş yüklerinin çalıştırılmasını ve yönetilmesini sağlayan bir orkestrasyon aracıdır. Açık kaynaklı bir konteyner düzenleme çözümü olan Kubernetes, Google tarafından GO dilinde geliştirilmiştir ve daha sonra Cloud Native Computing Foundation çatısı altına girmiştir.  

Kubernetes’in en çok dikkat çeken avantajlarından biri ise geliştiricilerin, uygulamalarının iyi çalışmasının yollarını bulmaya ve bunları uygulamaya harcayacakları zamandan ve emekten tasarruf etmelerini sağlamasıdır. Geliştiriciler de tasarruf ettikleri bu kaynakları, uygulamaları için yararlı ek özellikler oluşturmaya odaklanmaya harcayabilirler.

Kubernetes ölçekleme ve yüksek erişilebilirlik sunar, bu nedenle de çok tercih edilmektedir. 

Docker Nedir?

Docker, konteynerleştirme işletim sistemi seviyesinde bir açık kaynaklı sanallaştırma platformudur ve yazılım geliştiriciler ve sistemciler için geliştirilmiştir. Docker isimli bu yazılım platformunu kullanarak, uygulamalarınızı hızlı bir şekilde derleyebilir, test edebilir ve dağıtabilirsiniz. Docker, sanal makinelere bir alternatiftir. 

Fakat Docker’ın sanal makinelerden temel bir farkı vardır. - Sanal makineler hakkında daha detaylı bilgiye ihtiyaç duyuyorsanız mutlaka bu blog yazımızı okuyun: Sanallaştırma ve Sanal Makineler Hakkında Her Şey - Sanal makineler tarafından oluşturulan işletim sistemleri tamamen sanaldır. Docker’ın farkı, uygulamaların üzerinde çalıştıkları sistemle aynı Linux çekirdeğini kullanmalarını sağlamasıdır. Sanal makinelere kıyasla daha az yer kaplamasının ve daha yüksek performans göstermesinin de nedeni budur.

Ancak, “Kubernetes vs. Docker” da biraz yanıltıcı bir ifadedir. Bu iki kavrama daha yakından bakıldığında, bu kelimeler birçok insanın düşündüğü gibi iki kavram değildir, çünkü Docker ve Kubernetes doğrudan rakip değildir. Docker bir containerization platformudur ve Kubernetes ise, Docker gibi container platformları için bir container düzenleyicisidir. Kubernetes, Docker tarafından oluşturulmuş ve dağıtılmış durumdaki uygulamaları orkestre eder ve yönetir. 

Bu yazı, Kubernetes ve Docker ile ilgili bazı yaygın karışıklıkları gidermeyi ve “Docker vs. Kubernetes” hakkında konuşurken insanların gerçekten ne anlama geldiğini açıklamayı amaçlıyor.

Konteynerlerin Yükselişi ve Docker

İlk olarak container'ları keşfetmeden Docker hakkında konuşmak mümkün değildir. Containerlar uygulama geliştirmede kritik bir sorunu çözer. Yazılımcılar kod yazarken kendi alıştıkları geliştirilebilir ortamları üzerinde çalışıyorlar. Sorunların ortaya çıması ise bu kodu çalıştırdıklarında başlar. Kendi aygıtlarında mükemmel çalışan kodlar üretime geçildiğinde çalışmaz. Bunun birçok nedeni vardır; farklı işletim sistemi, farklı bağımlılıklar, farklı kütüphaneler.

Containerlar, bu kritik taşınabilirlik sorununu, kodu üzerinde çalıştığı temel altyapıdan ayırmanıza olanak tanır. Geliştiriciler, düzgün çalışması için gereken tüm bin dosyaları ve kütüphaneler de dahil olmak üzere uygulamalarını küçük bir kapsayıcı görüntüsünde paketleyebilirler. Kodun işleyişinde container, bir konteynerleştirme platformu olan herhangi bir bilgisayarda çalıştırılabilir.

Containerlar taşınabilir ve ölçeklendirilebilirlerdir.

KUBERNETES VS DOCKER


Docker Hub Nedir?


Docker Hub, konteyner imajlarının yüklenmesini ve ekiplerle paylaşılmasını sağlaması için Docker tarafından sunulan bir hizmettir. Dünyanın en büyük konteyner imaj deposu olan Docker Hub'ın önemli özelliklerinin arasında depolar (repositories), takımlar ve organizasyonlar, resmi imajlar, yayıncı imajlar (publisher images) ve Webhooks vardır. 

Containerların Avantajları

Taşınabilirlikle ilgili en büyük sorunu çözmenin yanı sıra, container ve container platformları geleneksel sanallaştırmaya göre birçok avantaj sağlar. Containerlar son derece az yer kaplar. Container sadece uygulamasına ve çalıştırılması gereken tüm bin dosyaları ve kitaplıkların tanımına ihtiyaç duyar. Konuk işletim sisteminin tam bir kopyasına sahip VM'lerin (Virtual Machine) aksine, container izolasyonu konuk işletim sistemine gerek kalmadan çekirdek düzeyinde yapılır. Buna ek olarak, kütüphaneler containerlar arasında olabilir, böylece bir sunucuda aynı kütüphanenin 10 kopyasına sahip olma ihtiyacını ortadan kaldırarak yerden tasarruf sağlar. Node ve ekspres çalışan 3 uygulamam varsa, 3 node ve ekspres örneğim olması gerekmez, bu uygulamalar bu bölmeleri ve kütüphaneleri paylaşabilir. Uygulamaların bağımsız ortamlarda kapsüllenmesine izin vermek, daha hızlı dağıtımlara, geliştirme ortamları arasında daha yakın eşlik ve sonsuz ölçeklenebilirliğe olanak tanır.

Bir konteyner genelde onlarca megabayt boyutundayken, kendi işletim sistemine sahip bir sanal makine genelde birkaç gigabayt boyuta sahiptir ve bu sayede sunucular sanal makinelerden çok daha fazla kapsayıcıyı barındırabilir. Bunun yanı sıra sanal makinelerin işletim sistemlerini başlatması ve sahip oldukları uygulamaları çalıştırması birkaç dakika sürerken, Konteyner uygulamalarının neredeyse anında başlatılması mümkündür. Bu özellik, kapsayıcıların ihtiyaç duyulduğu anda başlatılabileceği ve ömrünü tamamladığında kaybolarak ana bilgisayardaki kaynakları daha fazla kullanmayacağı anlamına gelir.

Containerların bir diğer faydası ise, konteynerleştirmenin daha fazla modülerliğe izin vermesi sayesinde karmaşık uygulamaların tamamını tek bir konteynerde çalıştırmak yerine, uygulamanın istenen sayıda birimlere ayrılabilmesidir. Bu biçimde oluşturulan uygulamaların yönetimi daha kolaydır çünkü her modül nispeten basittir ve tüm uygulamayı yeniden oluşturmaya gerek kalmadan modüller özelinde değişiklikler yapılabilir.

Evinizin konforunda online olarak veya kurumunuzda sınıf eğitimi olarak katılabileceğiniz eğitimlerimiz hakkında detaylı bilgi almak ve eğitimlere kaydolmak için bize ulaşın:
info@bilginc.com
+90 212 282 77 00

 




Eğitimlerle ilgili bilgi almak ve diğer tüm sorularınız için bize ulaşın!

Kubernetes, sahip olduğu yerleşik komutlar sayesinde uygulamaları dağıtmak, uygulamalarınızda değişiklikler yapmak, uygulamalarınızı değişen ihtiyaçlara uyacak şekilde yukarı ve aşağı ölçeklendirmek, uygulamalarınızı izlemek ve daha fazlasını yapmak için uygulamaları yönetmeyi kolaylaştırır. Kubernetes ve Docker farkı, Containers içeren uygulamaları çalıştırmak anlamındadır ancak tamamlayıcı teknolojilerdir. Docker, uygulamanızı çalıştırmak için ihtiyacınız olan her şeyi, ne zaman ve nerede isterseniz depolamanızı sağlarken onları yönetmenin yolu da Kubernetes’tir.
Kubernetes Pod, Kubernetes'teki en küçük yürütme birimidir. Bir pod, bir veya daha fazla uygulamayı kapsüller. Podlar doğaları gereği geçicidir, bir pod (veya üzerinde işlem yürüttüğü node) başarısız olursa, Kubernetes işlemlere devam etmek için otomatik olarak bu bölmenin yeni bir kopyasını oluşturabilir. Podlar, bir veya daha fazla container’ı (Docker containerları gibi) içerir.
Kubernetes Ingress (Kubernetes Girişi), uygulama katmanında yük dengeleme sağlamak ve HTTP ve HTTPS isteklerini belirli alanlarla (domainler) veya URL'lerle eşlemek için Kubernetes hizmetlerinin üzerine derlenir. Girişin nasıl uygulanacağına ilişkin ayrıntılar, kullandığınız Ingress Denetleyicisine bağlıdır. Giriş Denetleyicisi, Kubernetes Ingress kaynaklarını izlemekten ve istenen yük dengeleme davranışını uygulamak için bir veya daha fazla giriş yük dengeleyicisini yapılandırmaktan sorumludur.
Kubernetes Cluster (Kubernetes Kümesi), Container’a alınmış uygulamaları çalıştıran bir dizi nodedur. Sanal makinelerden daha hafif ve esnektirler ve bu şekilde Kubernetes Cluster, uygulamaların daha kolay geliştirilmesine, taşınmasına ve yönetilmesine olanak tanır.

İlgili Eğitimler

Son Blog Yazılarımız

Sitemizi kullanarak çerezlere (cookie) izin vermektesiniz. Detaylı bilgi için Çerez Politika'mızı inceleyebilirsiniz.