Kubernetes Nedir? Konteyner Orkestrasyonuna Giriş
Kubernetes (K8s), konteyner haline getirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynaklı bir orkestrasyon sistemidir. 'Arzu edilen durum' modeli, kendi kendini iyileştirme ve bildirimsel YAML yapılandırmasıyla modern bulut yazılımının fiili standardı haline geldi.
Kubernetes (sıklıkla K8s olarak kısaltılır), konteyner haline getirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynaklı bir sistemdir. Google'ın kendi iç altyapısında yıllarca edindiği deneyimden doğmuş, 2014'te açık kaynak olarak yayınlanmış ve bugün Cloud Native Computing Foundation (CNCF) tarafından yönetiliyor. Modern bulut yazılımının fiili standardı haline geldi.
Kubernetes'i anlamak için önce çözdüğü sorunu anlamak gerekir: Docker gibi araçlarla uygulamaları konteynerlere koymak kolaydır, ama onlarca sunucuda çalışan yüzlerce konteyneri elle yönetmek — hangisi nerede çalışacak, biri çökerse ne olacak, trafik arttığında nasıl büyüyecek — insan gücüyle sürdürülemez. Kubernetes tam olarak bu yönetim katmanını otomatikleştirir.
Temel fikir: Arzu edilen durum
Kubernetes'in çalışma mantığının merkezinde arzu edilen durum (desired state) kavramı vardır. Siz sisteme adım adım "şunu yap, sonra bunu yap" demezsiniz; bunun yerine "istediğim son durum budur" dersiniz — örneğin "bu uygulamanın her zaman 3 kopyası çalışsın". Kubernetes mevcut durumu sürekli izler ve arzu edilen durumdan sapma olduğunda (bir kopya çökerse, bir sunucu kapanırsa) otomatik olarak durumu geri getirir. Bu "kendi kendini iyileştiren" (self-healing) davranış, Kubernetes'in en güçlü yanıdır.
Temel kavramlar
Kubernetes dünyasında birkaç temel yapı taşı sürekli karşınıza çıkar:
- Pod: Kubernetes'in çalıştırdığı en küçük birim. Bir pod, bir ya da birkaç konteyneri birlikte barındırır. Uygulamanız doğrudan değil, bir pod içinde çalışır.
- Node: Pod'ların üzerinde çalıştığı makine (fiziksel ya da sanal sunucu). Bir Kubernetes kümesi (cluster) birçok node'dan oluşur.
- Deployment: Bir uygulamanın kaç kopyasının çalışacağını ve nasıl güncelleneceğini tanımlayan yapı. Yeni sürüme geçerken kademeli güncelleme (rolling update) ve sorun çıkarsa geri alma (rollback) buradan yönetilir.
- Service: Sürekli değişen (oluşan, ölen) pod'lara sabit bir ağ adresi üzerinden erişim sağlar; ayrıca gelen trafiği kopyalar arasında dağıtır.
- Control Plane: Kümenin "beyni". Tüm kararları veren, arzu edilen durumu gerçek durumla karşılaştırıp düzelten yönetim bileşenlerinin bütünü.
Bildirimsel yapılandırma ve YAML
Kubernetes bildirimsel (declarative) bir araçtır: Ne istediğinizi genellikle YAML biçimindeki dosyalarda tanımlarsınız ve kubectl komut satırı aracıyla kümeye uygularsınız. Bu dosyalar sürüm kontrolüne (Git) konabildiği için, tüm altyapının durumu kod gibi izlenebilir, gözden geçirilebilir ve tekrar oluşturulabilir hale gelir. Bu yaklaşım "altyapıyı kod olarak yönetme" (Infrastructure as Code) felsefesinin çekirdeğidir.
Kubernetes ne zaman gereklidir, ne zaman değildir?
Kubernetes güçlüdür ama aynı oranda karmaşıktır. Tek bir sunucuda çalışan küçük bir uygulama için Kubernetes kurmak, çoğu zaman çözdüğünden fazla sorun yaratır. Gerçek değeri şu durumlarda ortaya çıkar:
- Çok sayıda birbirine bağlı servisten (mikroservis) oluşan sistemler.
- Değişken ve öngörülemeyen trafik altında otomatik ölçeklenmesi gereken uygulamalar.
- Yüksek erişilebilirlik ve kesintisiz güncelleme gerektiren üretim ortamları.
- Birden fazla sunucu ya da bulut sağlayıcı arasında taşınabilirlik ihtiyacı.
Daha küçük ihtiyaçlar için yönetilen platformlar ya da daha basit konteyner çalıştırma servisleri genellikle daha doğru seçimdir.
Nereden başlamalı?
Öğrenmeye başlamak için yerel makinede küçük bir küme çalıştırmanıza imkân veren Minikube ya da kind araçları idealdir. Önce Docker ve konteyner kavramlarını, ardından pod–deployment–service üçlüsünü ve kubectl ile bildirimsel YAML dosyalarını uygulamak sağlam bir temel kurar. Kubernetes'in resmi belgeleri, kavramları ve uygulamalı eğitimleri (interaktif senaryolar dahil) kapsamlı biçimde sunar ve en güvenilir başlangıç kaynağıdır.
Benzer İçerikler
CI/CD Nedir? Sürekli Entegrasyon ve Sürekli Teslim
CI/CD, kodun yazımından yayına kadar olan süreci otomatikleştiren uygulamalar bütünüdür. Continuous Integration sık birleştirme ve otomatik testle hataları erken yakalar; Continuous Delivery/Deployment yayını güvenli bir rutine dönüştürür. Merkezinde derleme-test-dağıtım aşamalarından oluşan pipeline vardır.
27 Eki 20262 kaynakOPS2 DKMikroservis Mimarisi Nedir? Monolitten Dağıtık Sistemlere
Mikroservis mimarisi, bir uygulamayı bağımsız çalışan küçük servislere bölen bir tasarım yaklaşımıdır. Her servis tek bir işten sorumludur, ayrı dağıtılır ve API ile haberleşir. Monolite göre esneklik ve ölçeklenme kazandırır ama dağıtık sistem karmaşıklığı getirir; çoğu proje monolit olarak başlamalıdır.
27 Eki 20262 kaynakOPS2 DKLinux Nedir? Çekirdek, Dağıtım ve Temel Kavramlar
Linux, sunucuların, bulut altyapısının ve Android'in temelinde çalışan açık kaynaklı işletim sistemi çekirdeğidir. 'Linux' çoğunlukla çekirdeği bir paket yöneticisi ve araçlarla birleştiren dağıtımları (Ubuntu, Debian, Fedora) ifade eder. Komut satırı, dosya sistemi hiyerarşisi ve izinler temel kavramlardır.
27 Eki 20262 kaynak