Kubernetes - Docker

Birlikte daha iyi çalışan kapsayıcı teknolojileri sayesinde uygulamaları daha hızlı bir şekilde derleyin, teslim edin ve ölçeklendirin.

Kubernetes - Docker sorusu

Kubernetes ile Docker söz konusu olduğunda genellikle şu soru sorulur: Kubernetes'i mi yoksa Docker'ı mı kullanmalıyım? Bu elmayla elmalı turtayı karşılaştırmak gibidir ve genellikle birinden birini seçmeniz gerektiği gibi yaygın bir yanlış anlama söz konusudur.

Kubernetes ile Docker arasındaki farkı anlamak için asıl sorulması gereken, ikisinin de birlikte kullanılmasının gerekip gerekmediğidir. Aslında aralarında seçim yapmanıza gerek yoktur. Kubernetes ve Docker kapsayıcılı uygulama derleme, teslim etme ve ölçeklendirme aşamasında iyi çalışan tamamen farklı teknolojilerdir.

Docker ve kapsayıcı kullanımının yaygınlaşması

Docker, uygulamaların dağıtımını bulutta veya şirket içi ortamda çalışabilen taşınabilir ve kendi kendine yeten kapsayıcılar şeklinde otomatikleştirmeyi sağlayan bir açık kaynak teknolojisi ve kapsayıcı dosya biçimidir. Aynı ada sahip olan Docker, Inc. ise açık kaynak Docker teknolojisinin Microsoft gibi bulut sağlayıcılarında Linux ve Windows üzerinde çalışmasını sağlayan şirketlerden biridir.

Ortamları yalıtma fikrinin yeni bir yaklaşım olmamasına ve farklı kapsayıcılı hale getirme yazılımları mevcut olmasına rağmen Docker son yıllarda varsayılan kapsayıcı biçimi olarak kullanılmaya başlanmıştır. Docker'da bir çalışma zamanı ortamı olan Docker Engine bulunur. Bu ortam, herhangi bir geliştirme makinesinde kapsayıcı oluşturup çalıştırmanızı ve ardından kapsayıcı görüntülerini Docker Hub veya Azure Container Registry gibi bir kapsayıcı kayıt defteri ile depolamanızı veya paylaşmanızı sağlar.

Uygulamalar büyüyerek farklı sunuculara dağıtılmış birden çok kapsayıcıya yayılır hale geldiğinde bunları çalıştırmak daha da karmaşıklaşır. Docker, kapsayıcılı uygulamaların paketlenip dağıtılması için açık bir standart sağlar ancak bu durum kısa sürede karmaşık bir hal alabilir. Çok sayıda kapsayıcı nasıl koordine edilir ve zamanlanır? Uygulamanızdaki farklı kapsayıcılar nasıl iletişim kurabilir? Çok sayıda kapsayıcı örneğini nasıl ölçeklendirebilirsiniz? Kubernetes bu aşamada yardımcı olabilir.

Kubernetes ve kapsayıcı düzenleme

Kubernetes, kapsayıcıların çalışma şeklini ve yerini denetlemeye yönelik bir API sunan açık kaynak düzenleme yazılımıdır. Docker kapsayıcılarını ve iş yüklerini çalıştırmanızı sağlayan bu yazılım, farklı sunuculara dağıtılmış birden fazla kapsayıcıyı ölçeklendirme sırasında karşılaşabileceğiniz sorunların bazılarını çözmenize yardımcı olur.

Kubernetes bir sanal makine kümesini düzenlemenizi, kapsayıcıları kullanılabilir işlem kaynaklarına ve her bir kapsayıcının kaynak gereksinimlerine bağlı olarak bu sanal makinelerde çalışacak şekilde zamanlamanızı sağlar. Kapsayıcılar, Kubernetes için temel işlem birimi olan podlar halinde gruplandırılır. Bu kapsayıcı ve podları istediğiniz şekilde ölçeklendirip bunların yaşam döngüsünü yöneterek uygulamalarınızı çalışır halde tutabilirsiniz.

Kubernetes ile Docker arasındaki fark nedir?

Kubernetes ile Docker sık sık karşılaştırılsa da Kubernetes ile Docker Swarm'u karşılaştırmak daha doğru olacaktır. Docker Swarm, Docker'ın Docker kapsayıcılarıyla oluşturulan kümelere yönelik bir düzenleme teknolojisidir. Docker ekosistemiyle sıkı bir şekilde tümleştirilmiş olan bu teknoloji kendi API'sini kullanır.

Kubernetes ile Docker arasındaki temel fark Kubernetes'in küme üzerinde, Docker'ın ise tek bir düğüm üzerinde çalışacak şekilde tasarlanmış olmasıdır. Kubernetes, Docker Swarm'dan daha geniş kapsamlıdır ve üretim ortamındaki düğümleri uygun ölçekte ve verimli bir şekilde koordine etmesi amaçlanmaktadır. Kubernetes ekosistemindeki bir veya daha fazla kapsayıcıyı içerebilen zamanlama birimleri olan podlar, yüksek erişilebilirlik sağlamak için farklı düğümlere dağıtılır.

Kubernetes ve Docker: Birlikte daha iyi

Kapsayıcılar, bir kez kod yazdıktan sonra bunu her yerde çalıştırma imkanı sunuyor olsa da Kubernetes, tüm kapsayıcı kaynaklarınızı tek bir kontrol düzleminden düzenleme ve yönetme potansiyeline sahiptir. Kapsayıcılarınızı çalıştıran tüm Kubernetes düğümlerinde ağ iletişimi, yük dengeleme, güvenlik ve ölçeklendirme konusunda destek olur. Kubernetes ayrıca kapsayıcı kaynaklarınızı izinlere, hazırlık ortamlarına ve daha fazlasına göre gruplamanızı sağlayan ad alanı gibi yalıtım mekanizmalarına sahiptir. Bu yapılar, BT çalışanlarının geliştiricilere self servis kaynak erişimi sunmasını ve geliştiricilerin de uygulamanın tamamını geliştirme ortamında taklit etmelerine gerek kalmadan en karmaşık mikro hizmetler mimarisinde dahi ortak çalışmasını kolaylaştırır. DevOps uygulamalarını kapsayıcılar ve Kubernetes ile bir arada kullanmak bulutta yerel uygulamaların hızlı teslim edilmesini ve ölçeklenebilir bir şekilde yönetilmesini sağlayan bir mikro hizmetler mimarisi temelini oluşturur.

Kısacası Kubernetes ile Docker'ı şu amaçlar için birlikte kullanabilirsiniz:

  • Altyapınızı daha sağlam, uygulamanızı da daha yüksek kullanılabilir hale getirin. Düğümlerin bazıları çevrimdışı olsa dahi uygulamanız çevrimiçi kalır.
  • Uygulamanızı daha fazla ölçeklenebilir hale getirin. Uygulamanız daha fazla yükle karşılaşırsa ve daha iyi bir kullanıcı deneyimi sunmak için ölçeği genişletmeniz gerekirse kolayca daha fazla kapsayıcı çalıştırabilir veya Kubernetes kümenize daha fazla düğüm ekleyebilirsiniz.

Kubernetes ve Docker birlikte çalışır. Docker, kapsayıcılı uygulamaların paketlenip dağıtılması için açık bir standart sağlar. Docker’ı kullanarak kapsayıcı oluşturup çalıştırabilir, kapsayıcı görüntülerini depolayıp paylaşabilirsiniz. Kubernetes kümesinde Docker derlemesi çalıştırmak oldukça kolaydır ancak Kubernetes tek başına eksiksiz bir çözüm değildir. Kubernetes'i üretim ortamına uygun olacak şekilde iyileştirmek için güvenlik, idare, kimlik ve erişim yönetimine yönelik ek araç ve hizmetlerin yanı sıra sürekli tümleştirme/sürekli dağıtım (CI/CD) iş akışlarını ve diğer DevOps uygulamalarını kullanmanız gerekir.

Üretim ortamında Kubernetes ve Docker çözüm mimarileri

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. Genel Bakış
  2. Akış

Genel Bakış

Yatay ölçeklendirmeyi, kendi kendine onarımı, yük dengelemeyi ve gizli dizi yönetimini düzenlemek için AKS’yi kullanın.

Akış

  1. 1 Değişiklikleri GitHub’a işlemek için Visual Studio gibi bir IDE kullanın.
  2. 2 GitHub Azure DevOps’da yeni bir derleme tetikler
  3. 3 Azure DevOps mikro hizmetleri kapsayıcı olarak paketler ve Azure Container Registry’e gönderir
  4. 4 Kapsayıcılar AKS kümesine dağıtılır
  5. 5 Kaynaklara erişimin güvenliğini sağlamak üzere Azure Active Directory kullanılır
  6. 6 Kullanıcılar hizmetlere uygulamalar ve web siteleri üzerinden erişir
  7. 7 Yöneticiler uygulamalara ayrı bir yönetici portalı üzerinden erişir
  8. 8 Mikro hizmetler, bilgi depolamak ve almak için veritabanlarını kullanır
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. Genel Bakış
  2. Akış

Genel Bakış

DevOps ve Kubernetes birlikte daha iyi. Azure üzerinde Kubernetes ile güvenli DevOps birlikte kullanıldığında, hız ve güvenlik dengesini sağlayabilir ve ölçeğe göre, daha hızlı bir şekilde kod dağıtabilirsiniz. CI/CD ile dinamik ilke denetimleri kullanarak gelişim sürecinin çevresine koruyucu bariyer koyun ve sabit izleme ile geri bildirim döngüsünü hızlandırın. Azure Pipelines ile hızla dağıtım yaparken Azure İlkesi ile kritik ilkelerin uygulandığından da emin olun. Azure, derleme ve yayınlama işlem hattınız için gerçek zamanlı gözlemlenebilirlik sağlar. Ayrıca uyumluluk denetimini uygulamanıza ve yeniden yapılandırmanıza da olanak tanır.

Akış

  1. 1 Bir uygulamanın farklı parçalarını aynı Kubernetes kümesinde birlikte, hızla yineleyin, test edin ve bunların hatalarını ayıklayın
  2. 2 Kod, GitHub deposuyla birleştirilir ve bundan sonra otomatikleştirilmiş derlemeler ve testler Azure Pipelines tarafından çalıştırılır
  3. 3 Kapsayıcı görüntüsü Azure Container Registry’ye kaydedilir
  4. 4 Kubernetes kümeleri Terraform gibi araçlar kullanılarak sağlanır; Terraform tarafından yüklenen Helm grafikleri, uygulama kaynaklarının ve yapılandırmanın istenen durumunu tanımlar
  5. 5 İşleçler, AKS kümesine gerçekleştirilecek dağıtımları yönetmek için belirli ilkeleri zorunlu kılar
  6. 6 Yayın işlem hattı, her kod değişikliğiyle birlikte otomatik olarak önceden tanımlanmış dağıtım stratejisini yürütür
  7. 7 Azure İlkesi kullanılarak ilke uygulama ve denetim CI/CD işlem hattına eklenir
  8. 8 Azure İzleyici kullanılarak, uygulama telemetrisi, kapsayıcı durumu izleme ve gerçek zamanlı günlük analizi özellikleri elde edilir
  9. 9 Sorunları çözmek için kullanılan içgörüler bir sonraki sprint planlarına aktarılır

Azure ile Kubernetes’in güçlü yanlarını temel alıp bunları geliştirin

Azure Kubernetes Service (AKS) ile kapsayıcılı uygulamalarınızı dağıtmak ve yönetmek oldukça kolaydır. AKS sunucusuz Kubernetes, tümleşik CI/CD deneyimi, kurumsal sınıf güvenlik ve idare olanağı sunar. Uygulamaları hızla derlemek, teslim etmek ve güvenle ölçeklendirmek için dağıtım ve operasyon ekiplerinizi tek bir platformda birleştirin.

Kubernetes ve Docker'ı kullanmaya başlama