Konuyu Açan
#0
Kubernetes Düğüm Yapısı ve Rolleri
Kubernetes kümesi, uygulamaları barındıran bir dizi makineden, yani düğümlerden oluşur. Her düğümün kendine özgü bir rolü ve sorumluluğu bulunur. Bir Kubernetes kümesinde genellikle iki ana düğüm türü vardır: kontrol düzlemi (master) düğümleri ve işçi (worker) düğümleri. Kontrol düzlemi düğümü, kümenin genel durumunu yönetir, iş yüklerini planlar ve küme genelinde tutarlılığı sağlar. Aksine, işçi düğümleri ise gerçek uygulamalarımızı barındıran pod'ları çalıştırır. Her işçi düğümünde, pod'ları yöneten, konteyner çalışma zamanı ile etkileşime giren ve düğüm sağlığını kontrol düzlemine bildiren bileşenler bulunur. Bu ayrım, kümenin hem ölçeklenebilirliğini hem de dayanıklılığını artırır.
Kubelet: Düğümlerin Temel Denetleyicisi
Kubelet, her bir Kubernetes işçi düğümünde çalışan temel bir ajandır. Bu ajanın ana görevi, kontrol düzleminden gelen pod tanımlamalarını (PodSpec) alıp, bu pod'ları düğüm üzerinde çalışır duruma getirmektir. Kubelet, bir pod'un konteynerlerini çalıştırmak için konteyner çalışma zamanıyla (örneğin Docker veya containerd) iletişim kurar. Ek olarak, Kubelet sadece pod'ları başlatmakla kalmaz, aynı zamanda onların sağlıklı bir şekilde çalıştığından da emin olur. Örneğin, bir konteyner beklenmedik bir şekilde çökerse, Kubelet onu otomatik olarak yeniden başlatır. Bununla birlikte, Kubelet düğümün kaynak kullanımı, durumu ve sağlığı hakkında düzenli olarak kontrol düzlemine rapor verir, böylece küme yöneticileri düğümlerin performansını izleyebilirler.
Düğüm Sağlığı ve Durum İzleme
Kubernetes ortamında düğüm sağlığının sürekli izlenmesi, kümenin genel stabilitesi ve uygulama performansının devamlılığı için kritik öneme sahiptir. Kontrol düzlemi, her Kubelet'ten düzenli olarak kalp atışı (heartbeat) mesajları alır. Bu mesajlar, düğümün çalışır durumda olduğunu ve temel servislerinin erişilebilir olduğunu gösterir. Eğer bir düğüm belirli bir süre boyunca kalp atışı göndermeyi durdurursa, Kubernetes bu düğümü "hazır değil" (NotReady) olarak işaretler ve üzerindeki pod'ları başka sağlıklı düğümlere yeniden planlar. Ayrıca, Kubelet, düğümün disk alanı, bellek ve CPU gibi kaynaklarının kullanımını izleyerek bunları kontrol düzlemine bildirir. Sonuç olarak, bu detaylı izleme mekanizması, olası sorunları erken tespit etmeyi ve sistem kesintilerini minimize etmeyi sağlar.
Düğüm Ekleme ve Kaldırma Süreçleri
Kubernetes kümesine yeni bir düğüm eklemek veya mevcut bir düğümü kaldırmak, kümenin dinamik yapısı için önemli yönetim süreçleridir. Yeni bir düğüm eklerken, öncelikle işletim sistemi kurulumu yapılır ve Kubelet, konteyner çalışma zamanı gibi temel bileşenler yapılandırılır. Daha sonra, düğüm kontrol düzlemine bağlanmak için gerekli kimlik doğrulama adımlarını tamamlar. Başka bir deyişle, düğüm, `kubeadm join` gibi araçlarla kümeye dahil edilir. Bir düğümü kümeden kaldırmak ise dikkatli bir yaklaşım gerektirir. Önce düğümün üzerindeki tüm pod'lar güvenli bir şekilde boşaltılmalı (drain) ve başka düğümlere taşınmalıdır. Bu işlem, uygulamaların kesintisiz çalışmaya devam etmesini sağlar. Sonuç olarak, boşaltılan düğüm kümeden çıkarılır ve fiziksel veya sanal olarak devreden çıkarılabilir.
Düğüm Güvenliği ve Yetkilendirme
Kubernetes düğüm güvenliği, tüm kümenin genel güvenlik duruşu için hayati bir bileşendir. Her düğüm, güvenlik açıklarının en aza indirilmesi için sıkı bir şekilde yapılandırılmalıdır. Bu, işletim sistemi yamalarını düzenli olarak uygulamayı, gereksiz servisleri kapatmayı ve güvenlik duvarlarını yapılandırmayı içerir. Ek olarak, Kubelet'in kontrol düzlemiyle iletişim kurarken kullandığı kimlik doğrulama ve yetkilendirme mekanizmaları kritik öneme sahiptir. Düğüm kimlikleri genellikle TLS sertifikaları aracılığıyla doğrulanır. Bununla birlikte, Kubelet'in API sunucusuna erişim yetkileri Role-Based Access Control (RBAC) ile sınırlıdır. Bu sınırlama, Kubelet'in yalnızca belirli eylemleri gerçekleştirmesine izin vererek olası güvenlik ihlallerini önler. Bu nedenle, güvenlik politikalarının titizlikle uygulanması, yetkisiz erişimi engeller.
Düğüm Kaynak Yönetimi ve Optimizasyonu
Düğüm kaynak yönetimi, Kubernetes kümesinin verimli ve istikrarlı çalışmasını sağlamanın temelidir. Her düğümde bulunan CPU, bellek, disk ve ağ gibi kaynaklar, pod'ların ihtiyaçlarını karşılamak üzere dikkatlice tahsis edilmelidir. Kubernetes, `requests` (istekler) ve `limits` (limitler) mekanizmasıyla pod'ların talep ettiği ve kullanabileceği maksimum kaynakları belirlemeyi sağlar. Bu tanımlamalar sayesinde, planlayıcı pod'ları uygun düğümlere atarken düğüm kaynaklarını göz önünde bulundurur. Başka bir deyişle, kaynakların doğru bir şekilde tanımlanması, düğümlerin aşırı yüklenmesini önler ve uygulamalar arasında adil bir kaynak dağılımı sağlar. Ayrıca, kaynak kullanımının sürekli izlenmesi ve optimizasyon stratejileri, örneğin gereksiz kaynak tüketen pod'ları tespit etmek, düğümlerin performansını artırır ve maliyetleri düşürür.
Otomatik Ölçeklendirme ve Düğüm Havuzları
Otomatik ölçeklendirme, Kubernetes'in en güçlü özelliklerinden biridir ve uygulama talebindeki değişikliklere dinamik olarak yanıt vermeyi sağlar. Küme Otomatik Ölçeklendiricisi (Cluster Autoscaler), pod'lar için yeterli kaynak olmadığında yeni düğümleri otomatik olarak ekler veya düğümlerin boşta kaldığı durumlarda fazlalıkları azaltır. Bu, operasyonel maliyetleri optimize eder ve performansı artırır. Düğüm havuzları, farklı özelliklere (örneğin CPU türleri, GPU'lar) sahip düğüm grupları oluşturarak kaynak yönetimini daha da esnek hale getirir. Örneğin, yoğun hesaplama gerektiren iş yükleri için ayrı bir GPU düğüm havuzu oluşturulabilir. Bu yapı, iş yüklerinin doğru kaynaklarla eşleşmesini sağlar ve küme yönetimini basitleştirir. Bu nedenle, düğüm havuzları ve otomatik ölçeklendirme, modern bulut yerel uygulamalar için vazgeçilmezdir.