Kubernetes Mimarisi
Kubernetes iki ana katmandan oluşur: Control Plane ve Worker Node'lar. Control Plane, kümenin beyni olarak çalışır. etcd, tüm küme durumunu anahtar-değer biçiminde depolayan dağıtık veritabanıdır. API Server, dışarıdan kubectl veya diğer araçlardan gelen istekleri karşılar ve kimlik doğrulama/yetkilendirme kontrollerini uygular. Scheduler, yeni oluşturulan pod'ları kaynak müsaitliğine göre uygun node'lara yerleştirir. Controller Manager ise Deployment, ReplicaSet ve Node gibi kaynakların istenen durumunu sürdüren döngüsel kontrolcüleri çalıştırır. Worker Node'lar, gerçek uygulama iş yüklerini barındırır. Her node'da çalışan Kubelet, API Server ile iletişim kurarak o node üzerindeki pod'ların durumunu izler ve raporlar. Kube-proxy, ağ yönlendirme kurallarını günceller. Konteyner çalışma ortamı olarak containerd veya CRI-O kullanılır. Pod, Kubernetes'teki en küçük çalıştırılabilir birimdir. Genellikle tek bir konteyner içerir, ancak yan konteynerler (sidecar) ile birlikte de çalışabilir. Deployment, pod replikalarının sayısını ve güncelleme stratejisini tanımlar. Service, pod'ların önünde stabil bir ağ adresi sunar.
Yapay Zeka ve ML İş Yüklerinde Kullanım
Kubernetes, modern ML mühendisliğinde üç temel senaryoda öne çıkar: Model inference servisi: Eğitilmiş bir modeli REST veya gRPC API olarak sergilemek için inference pod'ları Deployment kaynağı ile yönetilir. Horizontal Pod Autoscaler, gelen istek sayısına göre pod replikalarını otomatik olarak ayarlar; bu mekanizma trafik artışlarında gecikme yaşanmadan ölçeklenmeyi mümkün kılar. GPU yönetimi: NVIDIA device plugin aracılığıyla Kubernetes, GPU kaynaklarını pod'lar arasında paylaştırır. Bir pod için `resources.limits.nvidia.com/gpu: 1` belirtildiğinde Scheduler yalnızca GPU'lu node'lara yerleştirir ve aynı GPU'yu birden fazla pod'un kullanmasını engeller. ML pipeline'ları: Kubeflow Pipelines, veri hazırlama, eğitim, değerlendirme ve dağıtım adımlarını Kubernetes üzerinde DAG (yönlü asiklik çizge) olarak düzenler. Her adım bağımsız bir konteyner olarak çalışır; başarısız adımlar yeniden denenir ve geçmiş çalışmalar izlenebilir.
Kubernetes ML Ekosistemi Araçları
- check_circle Kubeflow: Kubernetes üzerinde uçtan uca ML iş akışları oluşturmak için Google destekli açık kaynak platform; pipeline, notebook ve model sunumu bileşenlerini bir arada sunar.
- check_circle KServe: Kubernetes Native Serverless çerçevesi; TensorFlow, PyTorch ve scikit-learn modellerini standart bir API ile sunar, canary ve A/B test dağıtımlarını destekler.
- check_circle Seldon Core: Production ML modeli dağıtımı için açık kaynak çerçeve; outlier tespiti, drift izleme ve model açıklanabilirliği bileşenlerini Kubernetes üzerinde entegre eder.
- check_circle BentoML: ML modellerini OCI konteynerine paketleyip Kubernetes'e dağıtmayı kolaylaştıran framework; Bentofile ile bağımlılıkları ve servis mantığını tek pakette tanımlar.
- check_circle Helm: Kubernetes manifest'lerini paket olarak (chart) yöneten araç; karmaşık ML altyapısının (örn. tüm Kubeflow kurulumu) tek komutla kurulmasını ve güncellenmesini sağlar.
kubectl ve YAML Manifest'leri
Kubernetes kaynaklarını yönetmenin birincil yolu, `kubectl` komut satırı aracı ve YAML manifest dosyalarıdır. Bildirimsel (declarative) yaklaşımda istenen durum YAML'da tanımlanır, `kubectl apply -f deployment.yaml` ile uygulanır ve Kubernetes controller'ları gerçek durumu buna eşitler. ML deployment'ı için tipik bir YAML şablonu şunları içerir: konteyner imajı ve versiyonu, CPU/GPU/bellek kaynakları, ortam değişkenleri (model konfigürasyonu, API anahtarları Secret olarak), sağlık kontrolleri (liveness ve readiness probe), servis tipi (ClusterIP, NodePort veya LoadBalancer) ve otomatik ölçekleme politikası. GitOps yaklaşımında YAML manifest'leri Git deposunda versiyonlanır; Argo CD veya Flux gibi araçlar repo değişikliklerini otomatik olarak kümeye uygular. Bu yöntem, ML model güncellemelerinin kod gözden geçirme sürecinden geçmesini ve tam denetlenebilirliği mümkün kılar.
Sıkça Sorulan Sorular
- check_circle Kubernetes ile Docker arasındaki fark nedir?: Docker, tekil konteyner oluşturma ve çalıştırma aracıdır. Kubernetes ise birden fazla makinede çalışan onlarca veya yüzlerce konteyneri yöneten orkestrasyon platformudur. Kubernetes, container runtime olarak Docker'ın yanı sıra containerd ve CRI-O'yu da destekler.
- check_circle Kubernetes öğrenmek ne kadar sürer?: Temel kavramları (Pod, Deployment, Service) anlamak 1-2 hafta sürer. Production düzeyinde güvenlik, ağ politikaları, depolama ve GPU yapılandırması için birkaç ay pratik deneyim gerekir. Minikube veya kind araçları ile yerel ortamda başlamak önerilir.
- check_circle Kubernetes her ML projesine gerekli mi?: Küçük veya prototip projelerde gereksizdir; tek bir sunucuda Docker Compose yeterlidir. Kubernetes, birden fazla model endpoint'ini bağımsız ölçeklemeniz, GPU'ları paylaştırmanız veya onlarca mikroservisi yönetmeniz gerektiğinde değer üretir.
- check_circle Managed Kubernetes seçenekleri nelerdir?: AWS EKS, Google GKE ve Azure AKS, control plane yönetimini bulut sağlayıcısına devreden yönetilen Kubernetes hizmetleridir. Kendi altyapınızda kurulum için k3s, RKE2 veya kubeadm kullanılabilir.