İçeriğe geç
BilgiKütüphanesi
DevOps

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.

İlk yayın: 2 dk okuma2 kaynak

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