Kubernetes, Google tarafından geliştirilmiş ve açık kaynaklı hale getirilmiş bir konteyner orkestrasyon sistemidir.

 Kubernetes, Google tarafından geliştirilmiş ve açık kaynaklı hale getirilmiş bir konteyner orkestrasyon sistemidir. 2014 yılında piyasaya sürülen Kubernetes'in fikri, Google'ın içindeki bir proje olan Borg'dan ilham almıştır. Borg, Google'ın kendi veri merkezlerindeki uygulamaları yönetmek için kullandığı iç sistemdi.



Kubernetes projesinin arkasındaki temel kişilerden bazıları şunlardır:


  • Joe Beda: Kubernetes'in ilk kodunu yazan kişilerden biridir.
  • Brendan Burns: Projenin başlatılmasına ve geliştirilmesine önemli katkılarda bulunan bir mühendis.
  • Craig McLuckie: Kubernetes'i tanıtmak ve açık kaynaklı hale getirilmesini sağlamak için çalışan kişilerden biri.


Bu ekip, Kubernetes'in mimarisini geliştirerek Google’ın Borg projesinden öğrendikleri dersleri yeni bir sistemde uygulamaya karar verdi. Kubernetes, konteyner tabanlı uygulamaların otomatik dağıtımı, ölçeklendirilmesi ve yönetimi için geliştirildi ve Google’ın bu alandaki deneyimlerinin bir ürünü olarak doğdu.


Kubernetes'in ilk versiyonu (v1.0), 21 Temmuz 2015 tarihinde piyasaya sürüldü ve temel konteyner orkestrasyonu özelliklerini içeriyordu. Bu versiyon, konteyner tabanlı uygulamaların dağıtımı, ölçeklendirilmesi ve yönetimi için birçok önemli yetenek sağlıyordu. İlk versiyonun yapabildikleri şunlardı:


1. Konteyner Yönetimi:

  • Podlar: Kubernetes'in temel dağıtım birimi olan "pod" kavramı, bir veya birden fazla konteyneri bir arada çalıştırmak için kullanılıyordu. Bir pod, genellikle aynı görevi üstlenen bir grup konteynerden oluşuyordu.
  • Docker Desteği: İlk versiyonda Docker konteynerlerini yönetme yeteneği bulunuyordu, çünkü Docker o dönemde en yaygın kullanılan konteyner platformuydu.


2. Otomatik Konteyner Dağıtımı:

  • Kubernetes, belirli bir yapılandırmaya göre podların otomatik olarak dağıtılmasını sağlıyordu. Belirli bir sayıda pod çalıştırılmasını sağlamak için ReplicationController kullanılıyordu. Bu, belirli bir pod’un her zaman belirtilen sayıda çalışmasını sağlamak için kullanılıyordu.


3. Konteyner Sağlık Kontrolleri (Health Checks):

  • Kubernetes, konteynerlerin sağlığını izlemek için liveness ve readiness probes ile temel sağlık kontrollerini yapabiliyordu. Eğer bir pod arızalı hale gelirse, Kubernetes bunu otomatik olarak yeniden başlatabiliyordu.


4. Otomatik Yük Dengeleme:

  • Service kaynakları, pod’lar arasında gelen ağ trafiğini dengelemek için yük dengeleyici görevi görüyordu. Kubernetes, bir servis IP’si aracılığıyla pod’lar arasındaki trafiği dengeliyordu.


5. Ölçeklendirme:

  • Kubernetes, iş yüklerine göre pod’ların sayısını otomatik olarak artırıp azaltabiliyordu. Bu, horizontal scaling olarak bilinen yatay ölçeklendirme yeteneğiydi ve iş yükü arttığında daha fazla pod ekleyerek uygulamayı ölçekleyebiliyordu.


6. Namespace Desteği:

  • Kubernetes, kaynakları birbirinden izole etmek için namespace desteği sunuyordu. Bu, farklı uygulamalar veya ekipler için aynı küme üzerinde kaynakları yönetmenin kolay bir yoluydu.


7. Etiketleme (Labeling):

  • Kubernetes, pod’ları veya diğer kaynakları etiketleme yeteneği sağlıyordu. Bu etiketler, belirli bir pod grubunu hedeflemek ve yönetmek için kullanılıyordu.


8. Temel Depolama Yönetimi:

  • İlk versiyon, kalıcı veriler için temel depolama çözümlerini destekliyordu. Kullanıcılar, yerel disk, AWS EBS, GCE Persistent Disk gibi çözümleri kullanarak depolama alanlarını pod’larla entegre edebiliyordu.


9. Açık Kaynak Ekosistemi:

  • Kubernetes’in açık kaynak olarak yayınlanması, geliştiricilerin katkıda bulunmasını sağladı ve geniş bir topluluk etrafında hızla büyümesine yol açtı.


10. Temel Planlama (Scheduling):

  • Kubernetes, pod'ları kümedeki uygun düğümlere (nodes) dağıtmak için planlama yeteneğine sahipti. Bu, düğümlerin mevcut kaynaklarını göz önünde bulundurarak iş yüklerini dengeli bir şekilde dağıtıyordu.


Bu özellikler, Kubernetes'in konteyner orkestrasyonunu daha otomatik ve ölçeklenebilir hale getirmesini sağladı ve onu hızlı bir şekilde popüler bir platform yaptı. İlk versiyon, işletmelerin konteyner tabanlı uygulamaları kolayca dağıtmasına, yönetmesine ve ölçeklendirmesine olanak tanıyan güçlü bir temel sundu.


Günümüzde Kubernetes, konteyner orkestrasyonunun çok ötesine geçen kapsamlı bir platform haline geldi. Modern Kubernetes, uygulama dağıtımı, ölçeklenmesi, yönetimi ve güvenliği için çok çeşitli özellikler sunarak mikroservis tabanlı mimarilerde ve bulut ortamlarında yaygın olarak kullanılıyor. İşte Kubernetes'in günümüzde yapabildikleri:


1. Kapsamlı Konteyner Orkestrasyonu

  • Pod Yönetimi: Kubernetes hala podlar temelinde konteynerleri yönetiyor, ancak bu süreç çok daha esnek ve güçlü hale geldi. DaemonSets, StatefulSets ve Jobs gibi ek özellikler, çeşitli iş yükü türlerine uygun dağıtımların yapılmasını sağlıyor.
  • Çoklu Konteyner Runtimeleri: Kubernetes sadece Docker değil, containerd ve CRI-O gibi diğer konteyner çalışma zamanlarını da destekliyor.


2. Otomatik Yük Dengeleme ve Yönlendirme

  • Service Mesh: Kubernetes, Istio veya Linkerd gibi servis mesh çözümleriyle entegre edilerek mikroservisler arasında güvenli iletişim, servis keşfi ve gelişmiş yük dengeleme sağlıyor.
  • Ingress Kontrol: Günümüzde Kubernetes, dış dünyadan iç trafiği yönlendirmek için gelişmiş Ingress nesneleri sunuyor. Bu, çeşitli yönlendirme ve SSL gibi güvenlik özelliklerini içeriyor.


3. Otomatik Ölçeklendirme

  • Horizontal Pod Autoscaling (HPA): İş yüküne göre pod sayısını otomatik olarak artırıp azaltabiliyor. Artık CPU veya bellek kullanımına ek olarak, uygulama seviyesinde özel metriklere göre de ölçeklenme sağlanabiliyor.
  • Vertical Pod Autoscaling (VPA): Pod’ların CPU ve bellek gibi kaynak ihtiyaçlarını otomatik olarak ayarlayarak daha dinamik bir ölçeklendirme sağlıyor.
  • Cluster Autoscaling: Küme içindeki düğümlerin (node'ların) sayısını, iş yüküne bağlı olarak otomatik olarak artırıp azaltabiliyor.


4. Kalıcı Depolama ve Veri Yönetimi

  • Kubernetes, Persistent Volume (PV) ve Persistent Volume Claim (PVC) kavramlarıyla gelişmiş kalıcı depolama çözümleri sunuyor. Günümüzde çok çeşitli bulut tabanlı ve yerel depolama seçeneklerini destekliyor (AWS, Azure, GCP, NFS, vs.).
  • StorageClass ve Dynamic Provisioning ile Kubernetes, talebe dayalı olarak depolama alanlarını otomatik olarak sağlıyor.


5. Güvenlik ve Erişim Yönetimi

  • Role-Based Access Control (RBAC): Farklı kullanıcı ve servislerin Kubernetes kaynaklarına erişimini kontrol etmek için ince ayarlı erişim yönetimi sunuyor.
  • Pod Security Policies: Pod'ların hangi güvenlik koşulları altında çalışabileceğini belirlemek için politikalar uygulanabiliyor. Bu, güvenlik açıklarına karşı daha sıkı bir koruma sağlıyor.
  • Network Policies: Kubernetes, pod'lar arasındaki ve dış dünyaya olan trafiği kontrol eden ağ politikaları uygulayabiliyor, bu da mikroservislerin güvenli bir şekilde izole edilmesine olanak tanıyor.


6. Gelişmiş Ağ Yönetimi

  • Kubernetes, CNI (Container Network Interface) üzerinden farklı ağ çözümleri (Flannel, Calico, Weave, vb.) ile entegrasyon sağlıyor. Bu sayede küme içindeki iletişim daha esnek ve güvenli bir hale geliyor.
  • Multi-cluster Kubernetes: Kubernetes günümüzde birden fazla kümenin yönetimini destekleyebiliyor, bu sayede coğrafi olarak dağıtık sistemlerin yönetimi ve ölçeklenmesi daha kolay hale geliyor.


7. Durum Bilgisi Gerektiren (Stateful) Uygulamaların Yönetimi

  • StatefulSets: Kubernetes artık durum bilgisi gerektiren (veritabanları, cache sistemleri vb.) uygulamaları yönetmek için StatefulSets kullanıyor. Bu, veritabanı replikaları gibi belirli iş yükleri için uygun şekilde pod’ların dağıtılmasını ve ölçeklenmesini sağlıyor.


8. CI/CD Entegrasyonu ve Uygulama Yönetimi

  • Helm: Kubernetes için bir paket yöneticisi olan Helm, uygulamaların yönetimi, dağıtımı ve sürüm takibi için standart bir yapı sunuyor. Uygulama grafikleri (charts) aracılığıyla Kubernetes üzerinde hızlı ve tekrarlanabilir uygulama dağıtımları yapılıyor.
  • GitOps: Git tabanlı sürekli dağıtım süreçlerini destekleyen ArgoCD gibi araçlar ile Kubernetes üzerinde uygulama yönetimi otomatikleştirilebiliyor.


9. Kubernetes Operator'ları

  • Operators: Kubernetes, Operators ile karmaşık uygulamaların yönetimini otomatize edebiliyor. Operator'lar, belirli bir uygulamanın yaşam döngüsünü yönetmek için özel kontrol döngüleri sağlayarak, uygulamanın kendi kendine iyileşme ve ölçeklenme gibi yetenekler kazanmasını sağlıyor.


10. Gözlemlenebilirlik ve İzleme

  • Kubernetes, Prometheus, Grafana, Elasticsearch ve Fluentd gibi izleme ve loglama araçlarıyla entegre olarak, küme ve uygulama performansını izlemeyi mümkün kılıyor.
  • Kubernetes Dashboard ve Lens gibi görsel araçlarla Kubernetes kümelerinin ve iş yüklerinin durumu görselleştirilebiliyor.


11. FaaS (Function-as-a-Service) ve Serverless Desteği

  • Kubernetes, Knative gibi serverless çözümlerle entegre olarak, iş yüklerini ihtiyaç duyulduğunda çalıştırma ve yalnızca talep olduğunda ölçekleme yetenekleri sunuyor. Bu, serverless mimarilerin Kubernetes üzerinde kullanılmasına olanak tanıyor.


12. Edge Computing Desteği

  • Kubernetes, bulut dışında Edge Computing ortamlarında da yaygın olarak kullanılmaya başlandı. Düşük kaynaklara sahip uç cihazlarda, merkezi bir küme ile uyumlu çalışan Kubernetes kümeleri oluşturulabiliyor.


13. Multi-cloud ve Hybrid-cloud Yetkinlikleri

  • Kubernetes, birden fazla bulut sağlayıcısı arasında iş yüklerini dağıtmayı destekliyor. Bu, farklı bulut platformları arasında geçiş yapılmasını ve uygulamaların hibrit bulut ortamlarında yönetilmesini kolaylaştırıyor.


14. Güncelleme ve Geri Alma Yeteneği

  • Kubernetes, uygulamaları güncellerken rolling updates ve canary deployments gibi stratejilerle iş yüklerini kesintisiz bir şekilde güncelleyebiliyor.
  • Geri alma (rollback) desteği sayesinde başarısız güncellemeler kolayca önceki sürüme geri döndürülebiliyor.


15. Kapsamlı API ve Eklenti Desteği

  • Kubernetes'in genişletilebilir API'si ve Custom Resource Definitions (CRD) desteği ile, kullanıcılar Kubernetes'i ihtiyaçlarına göre genişletebiliyor ve özelleştirebiliyor.


Sonuç:

Günümüzde Kubernetes, büyük ölçekli dağıtık sistemlerden küçük uygulamalara kadar her türlü konteyner tabanlı iş yükünü yönetebilen kapsamlı ve güçlü bir platformdur. Ayrıca, geniş ekosistemi ve eklenti desteği sayesinde Kubernetes, modern yazılım geliştirme ve dağıtım süreçlerinin merkezinde yer almaktadır.

Please Select Embedded Mode To Show The Comment System.*

Daha yeni Daha eski

نموذج الاتصال