Kubernetes dağıtım stratejisi
Uygulamanız için en uygun Kubernetes kullanıma sunma stratejisini bulun.
Kubernetes dağıtım seçeneklerinizi öğrenin
Hedefiniz ister pazara çıkma süresini kısaltmak, isterse kesinti süresi olmayan dayanıklı dağıtımlar oluşturmak, uygulama ve özellikleri daha hızlı veya daha sık yayınlamak ya da daha fazla esneklik sağlamak olsun, doğru Kubernetes dağıtım stratejisini seçmek, dayanıklı uygulama ve altyapı sunma konusunda kritik öneme sahiptir. Her Kubernetes dağıtımının hedeflerinize ve ihtiyaçlarınıza göre belirli avantajları vardır.
Kubernetes dağıtımlarının çalışma biçimi
Bir Kubernetes dağıtım stratejisini uygulamaya geçirmeden önce Kubernetes dağıtımının aşamalarını ve bunların bir arada nasıl çalıştığını anlamanız gerekir.
Kubernetes dağıtımının bileşenleri
YAML dosyası
Kubernetes kümenizin istenen durumudur. Pod yapılandırma bilgilerinin yer aldığı bu dosya, Kubernetes dağıtımınızın temelidir.
Podlar
Uygulamanızın veya iş akışınızın çalışması için gerekli olan kapsayıcıları, paylaşılan kaynakları ve ortamı kapsar.
ReplicaSet
Tam olarak aynı yapılandırmaya sahip olan pod kümeleri, ReplicaSet olarak adlandırılır. Bu sayede bir Kubernetes dağıtımı için YAML dosyasında belirtilen türde ve sayıda podların her zaman çalışması sağlanır. Podlardan birinde hata oluşması durumunda yeni bir pod oluşturulur.
Kube-controller-manager
Kümenin geçerli durumunu YAML ile belirtilen istenen durumla eşleşecek şekilde değiştirir. Bunun için yeni Podlar ve ReplicaSet'ler oluşturur veya mevcut olanları güncelleştirir ya da kaldırır.
Kube-scheduler
Podlarınızın ve ReplicaSet''lerinizin çalışan düğümlerine nasıl dağıtılacağını ve trafiğin bu düğümlere nasıl yönlendirileceğini belirler.
Kullanıma sunma
Kümenin yapılandırmasını değiştirerek mevcut durumdan istenen duruma geçirme işlemidir ve çoğu durumda kesinti süresi yaşanmadan tamamlanır.
Kubernetes kullanıma sunma yöntemleri nasıl çalışır?
- Kümenin istenen durum yapılandırmasını belirten bir YAML dosyası oluşturun.
- YAML dosyasını Kubernetes komut satırı arabirimi olan kubectl üzerinden kümeye uygulayın.
- Kubectl, isteği kube-apiserver'a gönderir, o da isteğin kimlik doğrulaması ve yetkilendirme süreçlerini tamamladıktan sonra değişikliği veritabanına kaydetme gibi işlemleri gerçekleştirir.
- kube-controller-manager sistemi sürekli izleyerek yeni istek olup olmadığını belirler ve sistem durumunu istenen duruma getirmek için çalışır. Bunun için ReplicaSet, dağıtım ve pod oluşturur.
- Tüm denetleyiciler çalıştırıldıktan sonra kube-scheduler, henüz bir düğümde çalışacak şekilde zamanlanmadıklarından "bekleme" durumunda olan podlar olduğunu tespit eder. Zamanlayıcı, podlar için uygun düğümleri bulur ve ardından her bir düğümdeki kubelet ile iletişim kurarak denetimi devralmasını ve dağıtımı başlatmasını sağlar.
Kubernetes dağıtımı kullanım örnekleri
Oluşturma
Tamamen yeni Kubernetes podlarını ve ReplicaSet'lerini kullanıma sunun.
Güncelleştirme
Yeni bir istenen durum bildirin ve yeni podlar ile ReplicaSet'leri denetimli bir şekilde kullanıma sunun.
Geri alma
Mevcut durumun kararlı olmadığı Kubernetes dağıtımlarını önceki bir duruma geri döndürün.
Ölçeklendirme
Kubernetes içindeki podları ve ReplicaSet'leri değiştirmeden sayısını artırmanızı sağlar.
Kubernetes dağıtım stratejileri
Senaryonuza uygun Kubernetes dağıtım stratejisini belirlemek için değerlendirmeniz gereken birkaç nokta vardır. Bunlar kabul edilebilecek kesinti süresi (varsa), dağıtım ortamınız, yeni bir sürümün veya platformun kararlılığı konusunda ne kadar rahat olduğunuz, test etme ihtiyacınız, test sonucunda öğrenmeyi bekledikleriniz, kaynak maliyeti ve kullanılabilirliği ile işletme hedefleridir. Kuruluşların üretim ortamında sık kullandığı dört dağıtım stratejisi aşağıda listelenmiştir.
Kademeli artış
Kubernetes’in varsayılan kullanıma sunma yöntemi, kademeli artış veya sıralı dağıtımdır. Bu dağıtım, kesinti süresi yaşanmaması için podları teker teker ve yavaş bir şekilde değiştirir. Yeni podlar hazır olmadan eski podların ölçeği azaltılmaz. Dağıtımınızda sorun yaşanması halinde kümenin tamamını çevrimdışı hale getirmeden Kubernetes dağıtımını duraklatabilir veya iptal edebilirsiniz.
Mavi/yeşil
Mavi/yeşil dağıtımında uygulamanın veya iş akışının güncel sürümü (yeşil) çalışmaya devam ederken yeni bir sürümü (mavi) yayına alınır. Bu sayede mavi sürümü üretim ortamında test edebilir, kullanıcılara ise kararlı olan yeşil sürümü sunmaya devam edebilirsiniz. Testleri tamamlanan mavi sürüm, kademeli olarak yeşil sürümün yerini alır.
Kısıtlı dağıtım
Kubernetes dağıtımınızın yeni sürümünü yalnızca sınırlı bir kullanıcı grubuna sunarak test etmelerini sağlayabilirsiniz. Yeni sürümün bir ReplicaSet örneği ile güncel sürümü belirli bir süre boyunca birlikte çalıştırdıktan ve yeni sürümde hata olmadığından emin olduktan sonra yeni sürümün ölçeğini artırabilir, eski sürümü kaldırabilirsiniz.
A/B testi
Kubernetes kısıtlı dağıtım stratejisinde olduğu gibi A/B testinde de belirli bir müşteri grubu hedeflenir. Ancak A/B testi dağıtımında, bir sürümün kararlılığını belirlemekten daha fazlası yapılır. Sürümün işletme hedeflerine ulaşma açısından ne kadar verimli olduğu test edilir. Yeni sürüm tanımlama bilgileri, coğrafi konum, işletim sistemi ve cihaz türüne göre kullanıcılara dağıtılır ve genellikle güncel sürümler birlikte çalıştırılır. Testleri geçen yeni sürümün ölçeği kademeli olarak artırılır.
Kubernetes dağıtım araçları
Bu Kubernetes dağıtım stratejilerini yürütmek için komut satırını veya YAML dosyalarını kullanabilirsiniz ancak kümelerinizde ve dağıtımlarınızda daha fazla denetim sahibi olmak için bu Kubernetes dağıtım araçlarından ve hizmetlerinden faydalanabilirsiniz.
Azure DevOps
Kubernetes dağıtımlarını otomatikleştirmeye yönelik tam kapsamlı bir uygulama tedarik zinciri. Hızdan ve güvenlikten ödün vermeden uygun ölçekte kod dağıtımı yapın.
Helm
Açık kaynak paketleme aracıdır. Oluşturma, sürüm değiştirme, paylaşma ve yayımlama seçenekleri sunan grafikleri kullanarak Kubernetes uygulamalarınızı yükleyin, yükseltin ve yönetin.
Azure Kubernetes Service (AKS)
Yüksek oranda kullanılabilir, güvenli ve tam olarak yönetilen Kubernetes hizmeti. Bulutta kapsayıcılı uygulamalar dağıtın ve yönetin.