Kubernetes konteynerleştirilmiş uygulamaların dağıtımını, ölçeklendirilmesini, ağ yönetimini ve yönetimini otomatikleştirmek için açık kaynaklı bir platformdur. Makine kümeleri arasında iş yüklerini çalıştırmak için tutarlı bir kontrol katmanı sağlar ve ekiplerin uygulamalarının istenen durumunu tanımlamasına izin verir.
Kubernetes genellikle bulut yerel ortamlarda yaygın olarak kullanılır, ancak her konteynerleştirilmiş uygulama için bir gereklilik değildir. Değeri, yönetilen iş yüklerinin ölçeğine, operasyonel ihtiyaçlara, ekip yeteneklerine ve karmaşıklığına bağlıdır.
Kubernetes Nedir?
Kubernetes, genellikle K8s olarak kısaltılır, Google tarafından geliştirilen ve şu anda Cloud Native Computing Foundation altında açık kaynaklı bir proje olarak sürdürülen bir konteyner orkestrasyon platformudur. Bir küme genelinde konteynerleri koordine eder ve zamanlama, hizmet keşfi, ölçeklendirme, yapılandırma ve iş yükü kurtarma mekanizmaları sağlar.
Bireysel sunuculara ne yapacaklarını manuel olarak söylemek yerine, yöneticiler uygulamanın istenen durumunu tanımlar.
Kubernetes Nasıl Çalışır
- Bir ekip, Kubernetes kaynaklarında uygulama gereksinimlerini tanımlar.
- Kubernetes kontrol düzlemi istenen durumu depolar ve işler.
- Zamanlayıcı, iş yükleri için uygun çalışan düğümleri seçer.
- Çalışan düğümlerdeki Kubelet ajanları, atanan iş yüklerinin çalıştığından emin olur.
- Kontrolörler kaynakları izler ve gerçek durum istenen durumdan farklı olduğunda yanıt verir.
- Ağ bileşenleri, hizmetlerin kümenin içinde veya dışında erişilebilir olmasını sağlar.
Bu deklaratif model, Kubernetes’in merkezi fikirlerinden biridir. Bir konteyner başarısız olursa veya bir iş yükünün ek replikalara ihtiyacı olursa, Kubernetes yapılandırmasına göre düzeltici eylem alabilir.
Kubernetes Temel Bileşenleri
Küme
Kubernetes kümesi, iş yüklerinin çalıştığı genel ortamdır. Kontrol düzlemini ve bir veya daha fazla çalışan düğümü içerir.
Kontrol Düzlemi
Kontrol düzlemi, kümenin istenen durumunu yönetir ve ana orkestrasyon işlevlerini koordine eder. Ana bileşenler, API sunucusu, zamanlayıcı, kontrolör yöneticisi ve küme durumu depolama alanını içerir.
Düğümler
Çalışan düğümler, uygulama iş yüklerinin çalıştığı hesaplama kaynaklarını sağlar. Her düğüm, kontrol düzlemiyle iletişim kuran ve konteynerleri yöneten bileşenlere sahiptir.
Podlar
Bir Pod, Kubernetes’in temel dağıtım birimidir. Ağ ve depolama kaynaklarını paylaşan bir veya daha fazla yakından ilişkili konteyner içerebilir.
Hizmetler
Bir Kubernetes Servisi, bir grup Pod’a ulaşmanın kararlı bir yolunu sağlar. Bu soyutlama, bireysel Pod’lar değiştirilse bile uygulamaların iletişim kurmasına yardımcı olur.
Dağıtımlar
Bir Dağıtım, kopyalanan uygulama Pod’larını yönetir ve birçok yaygın durumdan bağımsız iş yükleri için kontrollü güncellemeleri ve geri alma işlemlerini destekler.
Kubernetes vs. Docker
| Alan | Kubernetes | Docker |
|---|---|---|
| Ana rol | Kapsayıcı orkestrasyonu ve yük yönetimi | Kapsayıcı geliştirme ve çalışma aracıları |
| Zamanlama | Küme düğümleri arasında yükleri zamanlar | Docker kendisi tam bir küme orkestratörü değildir |
| Ölçeklendirme | Yük ölçeklendirme mekanizmalarını destekler | Çevreleyen platforma bağlıdır |
| Hizmet keşfi | Küme ağı ve hizmet soyutlamaları sağlar | Temelde kapsayıcılar ve görüntüler üzerine odaklanır |
| Tipik kapsam | Birden fazla düğüm uygulama ortamları | Kapsayıcı oluşturma ve yürütme iş akışları |
Docker ve Kubernetes doğrudan birbirinin yerini almaz. Geliştiriciler, görüntüleri oluşturmak ve paketlemek için Docker uyumlu araçlar kullanabilir ve yükleri orkestrasyon etmek için Kubernetes'i kullanabilir, ancak Kubernetes birden fazla kapsayıcı çalışma zamanı ve görüntü iş akışını destekler.
Anahtar Kubernetes Özellikleri
- Açıklayıcı yapılandırma: Takımlar, yüklerin ve kaynakların istenen durumunu tanımlar.
- Zamanlama: Kubernetes, kaynak ve zamanlama kurallarına göre yükleri mevcut düğümlere yerleştirir.
- Kendini iyileştirme: Kontrolörler, başarısız Pods'ları değiştirebilir ve istenen kopyaları sürdürebilir.
- Hizmet keşfi: Hizmetler, yükler için sabit ağ uç noktaları sağlar.
- Ölçekleme: Yüklemeler manuel olarak veya desteklenen otomatik ölçekleme mekanizmaları aracılığıyla ölçeklenebilir.
- Aşamalı güncellemeler: Dağıtımlar, uygulama sürümlerini kademeli olarak değiştirebilir.
- Konfigürasyon yönetimi: ConfigMap'ler ve Sırlar, uygulama yapılandırması ve hassas değerler için mekanizmalar sağlar.
Neden Kuruluşlar Kubernetes Kullanır
Kubernetes, ekiplerin kapsayıcı uygulamaları nasıl dağıttığını ve çalıştırdığını standart hale getirebilir. Ortak bir platform, planlama, ağ, gözlem, güvenlik ve dağıtım otomasyonu için paylaşılan kalıplar sunabilir.
Ayrıca, birden fazla kopyaya, sık dağıtımlara veya farklı düğümler arasında yükleme yerleştirmesine ihtiyaç duyan uygulamaları da destekleyebilir. Ancak, bu avantajlar, Kubernetes ortamını çalıştırmanın ve güvenliğinin operasyonel karmaşıklığı ile tartılmalıdır.
Kubernetes ve Bulut Bilişim
Başlıca bulut sağlayıcıları, yönetilen Kubernetes hizmetleri sunmaktadır. Yönetilen kontrol düzlemleri bazı altyapı sorumluluklarını azaltabilir, ancak ekiplerin yine de yüklemeleri, ağ, kimlik, güvenlik, depolama, maliyetler ve küme operasyonlarını anlaması gerekir.
Kubernetes ayrıca özel altyapıda veya hibrit ortamlarda çalışabilir. Taşınabilirlik mümkündür, ancak uygulamalar hala sağlayıcıya özgü hizmetler ve altyapıya bağımlılıklar geliştirebilir.
Kubernetes Ağı
Kubernetes ağı, Pod'ların ve Hizmetlerin bir küme içinde iletişim kurmasına olanak tanır. Platformun ağ modeli, Bir Kontrol Ağı Arayüzü uygulamasına dayanır ve ağ politikaları ve diğer ağ bileşenleri ile genişletilebilir.
Dış trafik için, ekipler platform ve ağ yığınına bağlı olarak Ingress veya daha yeni Gateway API tabanlı yaklaşımlar gibi mekanizmaları kullanabilirler. Ağ politikaları, hangi yüklemelerin iletişim kurmasına izin verileceğini kısıtlayabilir.
Kubernetes Depolama
Konteynerler genellikle değiştirilebilir olarak kabul edilir, bu nedenle sürekli verilere ihtiyaç duyan uygulamalar açık bir depolama tasarımı gerektirir. Kubernetes, sürekli depolama talep etmek için KalıcıHacimler ve KalıcıHacimTalepleri gibi soyutlamalar sağlar.
Depolama davranışı, temel altyapıya ve depolama sürücüsüne bağlıdır. Ekipler, sürekli depolamanın otomatik olarak korunduğunu varsaymak yerine yedekleme, kurtarma, performans ve arıza senaryolarını test etmelidir.
Kubernetes Güvenliği
Kubernetes güvenliği, küme, yüklemeler, kimlikler, görüntüler, ağ yolları, sırlar ve temel altyapıyı içerir. Güvenli bir yapılandırma, en az ayrıcalık ilkesini uygulamalı ve gereksiz erişimi azaltmalıdır.
- Uygun izinlerle rol tabanlı erişim kontrolü kullanın.
- Kubernetes API erişimini koruyun.
- Konteyner görüntüleri ve bağımlılıkları için zafiyet taraması yapın.
- Güvenilir görüntü kaynakları ve kontrollü kayıt defterleri kullanın.
- Sırları koruyun ve kimlik bilgilerini kaynak kodunda ifşa etmekten kaçının.
- Uygun yerlerde ağ politikalarını uygulayın.
- Kubernetes ve düğüm bileşenlerini güncel tutun.
- Küme ve yük aktivitesini izleyin.
Kubernetes İzlenebilirliği
Kubernetes ortamını izlemek, hem altyapı hem de uygulama davranışı üzerine görünürlük gerektirir. Ekipler genellikle metrikler, loglar ve dağıtılmış izler toplar.
Kullanışlı sinyaller arasında düğüm kaynak kullanımı, Pod yeniden başlatmaları, dağıtım sağlığı, API sunucusu aktivitesi, uygulama gecikmesi, hata oranları ve kaynak doygunluğu yer alır. Standardize edilmiş gözlemlenebilirlik, dağıtılmış arızaların incelenmesini kolaylaştırabilir.
Kubernetes ile Nasıl Başlanır
- Orkestrasyonu benimsemeden önce konteyner temellerini öğrenin.
- Küçük bir uygulama imajı oluşturun ve yerel olarak çalıştırın.
- Pods, Deployments, Services, ConfigMaps ve Secrets'i öğrenin.
- Uygulamayı bir geliştirme kümesine dağıtın.
- Kaynak talepleri ve sınırlamaları yapılandırın.
- Sağlık kontrolleri ve temel gözlemlenebilirlik ekleyin.
- Erişim kontrolleri ve güvenlik politikaları uygulayın.
- Üretim öncesinde dağıtım otomasyonu ve test başarısızlık senaryoları gerçekleştirin.
Uzman İpuçları
- İş yükü gereksinimlerini karşılayan en basit küme mimarisiyle başlayın.
- Elde edilen davranışa göre CPU ve bellek talepleri ile sınırlamaları tanımlayın.
- Hazırlık ve canlılık testlerini dikkatli kullanın.
- Manifestleri sürüm kontrolünde tutun ve deklaratif yönetimi tercih edin.
- Teslimat hattında güvenlik ve imaj taramasını otomatikleştirin.
- İş yükleri ölçeklendiğinde küme maliyetlerini izleyin.
- Küme, ad alanları, iş yükleri ve kritik hizmetler için sahipliği belgeleyin.
Yaygın Kubernetes Hataları
- Gereksinimleri karşılayacak daha basit bir barındırma platformu varken Kubernetes'i benimsemek.
- Kaynak talepleri ve sınırlamaları olmadan iş yüklerini çalıştırmak.
- Hizmetleri uygun erişim kontrolleri olmadan halka açmak.
- Kalıcı depolama yedeklemesi ve kurtarmayı göz ardı etmek.
- Aşırı yönetim izinleri kullanmak.
- Failing to monitor Pod failures and resource saturation.
- Assuming managed Kubernetes removes all operational responsibility.
Sıkça Sorulan Sorular
Kubernetes basit terimlerle nedir?
Kubernetes is a platform that automates the deployment, scaling, networking, and management of containerized applications across a cluster of machines.
Kubernetes neden K8s olarak adlandırılıyor?
K8s is a common abbreviation for Kubernetes. The number 8 represents the eight letters between the first and last letters of the word.
Kubernetes bir konteyner midir?
No. Kubernetes is an orchestration platform. It manages containerized workloads rather than being a container itself.
Kubernetes Docker ile aynı mı?
No. Docker provides container development and runtime tooling, while Kubernetes coordinates containerized workloads across clusters.
Tüm uygulamaların Kubernetes'e ihtiyacı var mı?
No. Small applications and straightforward workloads may be better served by simpler deployment platforms. Kubernetes becomes more relevant when orchestration capabilities justify its complexity.
Kubernetes Pod'u nedir?
A Pod is the basic deployable unit in Kubernetes and can contain one or more containers that share networking and storage resources.
Kubernetes uygulamaları otomatik olarak ölçeklendirebilir mi?
Yes. Kubernetes supports several scaling mechanisms, including workload replicas and autoscaling features, when configured appropriately.
Kubernetes güvenli mi?
Kubernetes provides security mechanisms such as RBAC and network policies, but secure operation depends on correct configuration, maintenance, workload security, and monitoring.
Sonuç
Kubernetes provides a powerful framework for deploying and operating containerized applications. Its declarative model, scheduling, service discovery, scaling, and self-healing capabilities can help organizations manage complex workloads consistently.
However, Kubernetes also adds significant operational complexity. Teams should adopt it when its orchestration capabilities solve real requirements and should invest in security, observability, automation, and cost management from the beginning.
Want to continue exploring modern infrastructure? Next in this technology series is Container Orchestration, where we examine the broader concepts behind managing containers at scale.