Program
Bulut bilişimin yükselişinden haberdarsanız, Kubernetes’i mutlaka duymuşsunuzdur. Modern uygulama geliştirmede, farklı altyapı kurulumlarını yönetmek için öğrenilmesi gereken kilit bir araçtır.
Bu giriş yazısında, Kubernetes ve bileşenlerine genel bir bakış sunacak ve yerelde uygulamaya yönelik kapsamlı bir eğitim paylaşacağız. Bu eğitimi uygulamalı bir öğrenme deneyimiyle desteklemek isterseniz Kubernetes’e Giriş kursumuza göz atın.
Kubernetes nedir?
Kubernetes, konteynerleştirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynaklı bir konteyner orkestrasyon platformudur. İlk olarak Google tarafından geliştirilen Kubernetes, ölçekli şekilde konteyner çalıştırmanın fiili standardı haline gelmiştir.
Tek tek konteynerleri yönetmenin karmaşıklığını soyutlar ve geliştiricilerin uygulamalarını oluşturmaya ve dağıtmaya odaklanmasına olanak tanır.
Neden Kubernetes kullanmalı?
Kubernetes kullanmanın bazı temel faydaları şunlardır:
- Konteyner orkestrasyonu: Konteynerlerin küme genelinde dağıtımını ve zamanlanmasını otomatikleştirir.
- Ölçeklenebilirlik ve kendi kendini iyileştirme: Yatay ölçekleme (konteyner çoğaltma) ve dikey ölçeklemeyi (kaynak tahsisini ayarlama) kendi kendini iyileştirme yetenekleriyle kolaylaştırır.
- Yüksek erişilebilirlik: Bazı düğümler arızalansa bile konteynerlerin (dolayısıyla servislerinizin) çalışır durumda kalmasını sağlar.
- Taşınabilirlik: Altyapıyı soyutlar, böylece hem şirket içi ortamlarda hem de farklı bulut sağlayıcılarında çalıştırmayı kolaylaştırır.
- Verimli kaynak kullanımı: Kaynak kullanımına göre konteynerleri yeniden boyutlandırır, tahsisi optimize eder ve maliyetleri düşürür.
Kubernetes, şu gibi çeşitli uygulamalarda kullanışlıdır:
- DevOps: Konteynerleştirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştirir.
- Mikroservisler: Büyük monolitik uygulamaları daha küçük, yönetilebilir servislere ayırarak çevikliği ve ölçeklenebilirliği artırır.
- Büyük veri: Karmaşık büyük veri sistemlerinin konteynerler ile dağıtımını ve yönetimini basitleştirir.
- Uç bilişim: Veriyi üretildiği yere daha yakın işleyip analiz etmek için Kubernetes’i uç cihazlarda çalıştırmaya olanak tanır; gecikmeyi azaltır ve performansı artırır.
- Sürekli teslim: Jenkins ve GitLab gibi araçlarla entegre olarak otomatik sürekli teslim hatları sunar.
- Makine öğrenimi: makine öğrenimi modellerini eğitmek ve dağıtmak için, büyük veri kümelerini ve karmaşık hesaplamaları yöneten ölçeklenebilir bir platform sağlar.
Kubernetes’te Temel Kavramlar
Kubernetes’in nasıl çalıştığını anlamak için temel kavramlarını iyi bilmeniz gerekir.
Bunlar 4 ana kavramı içerir:
- Kümeler (Clusters)
- Pod’lar
- Ad alanları (Namespaces)
- Operatörler
Aşağıda bunları daha ayrıntılı inceleyeceğiz.
Kümeler (Clusters)
Kubernetes kümeleri, Kubernetes yazılımını çalıştıran bireysel makineler olan düğümlerden oluşur. Küme, uygulamaları ve servisleri yönetmek için kontrol düzlemi olarak görev yapar.
Tipik bir kurulumda kümede bir ana düğüm (master) ve birden çok işçi düğüm bulunur. Ana düğüm, küme içindeki tüm faaliyetleri koordine ederken, işçi düğümler konteynerleri çalıştırma ve yönetmeden sorumludur.
Pod’lar
Pod’lar, Kubernetes’teki en küçük dağıtım birimidir. Bir veya daha fazla konteyneri, paylaşılan depolama kaynaklarını ve ağ ayarlarını barındırabilirler.
Her pod’un kendine özgü bir IP adresi vardır ve aynı kümedeki diğer pod’larla bu adres üzerinden iletişim kurabilir. Bu, bir uygulamanın farklı bileşenleri arasında verimli iletişim sağlar.
Pod’lar tek konteynerli veya çok konteynerli olabilir ve her birinin kendine özgü kullanım alanı vardır.
- Tek konteynerli pod’lar: İçinde tek bir konteynerin çalıştığı en yaygın pod türüdür. Yalnızca bir konteyner gerektiren basit uygulamalar veya mikroservisler için uygundur.
- Çok konteynerli pod’lar: Birden fazla konteyner birlikte konumlandırılır ve birlikte çalışır. Farklı konteynerlerin birbirleriyle iletişim kurması ve kaynakları paylaşması gereken karmaşık uygulamalar için faydalıdır.
Ad alanları (Namespaces)
Ad alanları, tek bir küme içinde kaynakları mantıksal olarak bölümlendirmenin bir yolunu sağlar. Bu, kaynakların daha iyi organize edilmesini ve yönetilmesini, ayrıca daha sıkı güvenlik kontrollerini mümkün kılar.
Ad alanları ayrıca geliştirme, hazırlık ve üretim gibi farklı ortamları yönetmek için de kullanılabilir. Bu sayede kaynaklar yalıtılır ve diğer ortamlarda yapılan değişikliklerden etkilenmez.
Kümenizdeki ad alanlarını görüntülemek için şu komutu kullanabilirsiniz:
kubectl get namespaces
Ad alanları arasında geçiş yapmak için aşağıdakini kullanın
kubectl config set-context --current --namespace <namespace name>
Operatörler
Operatörler, Kubernetes kaynaklarının yönetimini otomatikleştirmeye yardımcı olan yazılım uzantılarıdır. Karmaşık görevleri daha verimli ve otomatik olarak yönetmek için özel denetleyiciler ve API uzantıları kullanırlar.
Bazı popüler operatörler şunlardır:
- İzleme için Prometheus
- etcd kümelerini yönetmek için etcd operatörü
Operatörler kullanmak, kümenizdeki uygulamaların ve kaynakların yönetimini büyük ölçüde basitleştirebilir. Görevleri otomatikleştirme ve gelişmiş özellikler sunma yetenekleriyle, Kubernetes kullanıcıları arasında giderek daha popüler hale gelmektedirler.
Kubernetes’in Çekirdek Bileşenleri
Çoğu Kubernetes ortamında bir dizi çekirdek bileşen bulunur.

Kaynak: Kubernetes
İşte bileşenlerin listesi ve yaptıkları:
- API Sunucusu: Bu bileşen tüm Kubernetes kaynakları için merkezi yönetim noktası olarak görev yapar. Kullanıcılardan ve diğer bileşenlerden gelen istekleri alır, ardından kümenin yönetimi için ilkeleri uygular.
- Denetleyici yöneticisi (Controller manager): Küme içindeki nesnelerde yapılan değişiklikleri sürekli izleyip uzlaştırarak kümenin istenen durumunu korumaktan sorumludur.
- etcd: Kubernetes için birincil veri deposu görevi gören dağıtık bir anahtar-değer deposudur. Tüm küme verilerini saklar ve veri tutarlılığını ve erişilebilirliğini sağlar.
- kubelet: Kümedeki her düğümde çalışan ve konteynerleri, belirtilen yapılandırmalarına uygun şekilde çalıştıklarından emin olarak yöneten aracıdır.
- Kube Proxy: Her düğümde çalışır ve ağ trafiğini doğru konteynere yönlendirmekten sorumludur.
Kubernetes Nasıl Çalışır
Belirttiğimiz gibi Kubernetes, konteynerleştirilmiş uygulamaların kümeler genelinde dağıtımını, ölçeklenmesini ve yönetimini otomatikleştirir. Manuel müdahale olmadan yüksek erişilebilirlik, verimli kaynak kullanımı ve kendi kendini iyileştirme sağlar.
Tek tek konteynerleri yönetmek yerine Kubernetes, onları Pod’lar halinde gruplar ve işçi düğümlere dağıtır; bu düğümler, sistemin istenen durumunu korumak için kontrol düzlemiyle iletişim kurar.
Kubernetes’in kısaca çalışma şekli şöyledir:
- Uygulama dağıtımını tanımlayın: İstenen durumu, kopya sayıları, kaynak limitleri ve ağ kuralları dahil olmak üzere bir YAML dosyasında belirtirsiniz.
- İş yüklerini zamanlayın: Zamanlayıcı, kaynak uygunluğuna göre Pod’ları işçi düğümlere atar.
- Küme durumunu yönetin: Denetleyici Yöneticisi, sistemin doğru sayıda Pod tuttuğundan emin olur ve arızalananları değiştirir.
- Ağ iletişimini yönetin: Kubernetes, Hizmetler (Services) ve Ingress denetleyicileri aracılığıyla servisler arası ve dış erişim iletişimini yönetir.
- Ölçekleyin ve kendi kendini iyileştirin: Kubernetes, talebe göre çalışan Pod sayısını ayarlar ve başarısız olan konteynerleri otomatik olarak yeniden başlatır.
Altyapı karmaşıklığını yöneterek Kubernetes, ekiplerin dağıtımları yönetmek yerine uygulama geliştirmeye odaklanmasını sağlar; bu da onu sektörler genelinde ölçeklenebilir ve dayanıklı iş yükleri için vazgeçilmez kılar.
Sık Kullanılan Terimler ve Kavramlar
Bilmeniz gereken bazı temel terimlere ve tanımlarına bakalım:
- YAML manifestleri: Uygulamanızın veya altyapınızın istenen durumunu tanımlayan yapılandırma dosyalarıdır. Kubernetes’te kaynak oluşturmak, güncellemek ve silmek için kullanılabilir.
- StatefulSet ve Deployment’lar: Pod yaşam döngüsünü yöneten iki tür denetleyicidir. Deployment’lar genellikle durumsuz uygulamalar için, StatefulSet’ler ise durumlu uygulamalar için kullanılır.
- Hizmetler (Services): Küme içinde uygulamanıza erişmek için sabit bir IP adresi ve DNS adı sağlar. Ayrıca farklı pod’lar arasında iletişimi mümkün kılar.
- ConfigMap’ler: Uygulamanızın erişebileceği anahtar-değer çiftlerinde yapılandırma verilerini saklamak için kullanılır.
- Secret’lar: ConfigMap’lere benzer şekilde, parola veya API anahtarları gibi hassas bilgileri saklamak için kullanılır.
Kubernetes’e Başlarken
Kubernetes ile çalışmak, özellikle çeşitli terimleri ve kavramları anlamak söz konusu olduğunda göz korkutucu görünebilir. Ancak bu temel terimleri sağlam şekilde kavradığınızda, platformda gezinmek çok daha kolay hale gelecektir.
Kubernetes ile birlikte kullanılan bazı araçlara bakarak başlayalım.
Yeni başlayanlar için araçlar
Kubernetes’e yeni başlayan biri olarak uygulamaları bulutta dağıtmak gözünüzde büyüyebilir. Bu nedenle, yerelde dağıtım yapmak için bazı yaygın araçlara yönelebilirsiniz.
En yaygın kullanılan 2 araç şunlardır:
1. Minikube
Minikube, tek bir ana makinede çalışabilen hafif bir Kubernetes uygulamasıdır. Genellikle dizüstü bilgisayarınızda veya iş istasyonunuzda bir sanal makinede (VM) tek düğümlü bir küme çalıştırır.
Neden kullanmalı:
- Kurması ve kaldırması kolaydır.
- Yerel geliştirme ve kavram kanıtı çalışmaları için idealdir.
- Tam teşekküllü bir kümeye kıyasla minimum kaynak kullanır.
Minikube Nasıl Kurulur (Windows Örneği):
# Windows Paket Yöneticisi ile kurun
winget install Kubernetes.minikube
Aşağıdaki kurulum mesajını görmelisiniz. İstendiğinde koşulları “Y” ile kabul edin.

Ardından, minikube üzerinde basit bir küme başlatmak için şu start komutunu kullanın:
# Tek düğümlü bir küme başlatın
minikube start
Küme düğümünün başarıyla başladığını kontrol etmek için get komutunu çalıştırın:
# Kümenin çalıştığını doğrulayın
kubectl get nodes
Not: Yerel makinenizde kubectl API sunucusunun kurulu olması gerekir (çoğu durumda Minikube ile otomatik olarak kurulur).
2. Kind (Kubernetes in Docker)
Kind, Docker içinde Kubernetes anlamına gelir. Kubernetes kümesinde Docker konteynerlerini "düğüm" olarak kullanarak basit, konteyner tabanlı bir yerel küme ortamı sunar.
Neden kullanmalı:
- Birçok senaryoda Minikube’a kıyasla daha hızlı başlatma.
- CI/CD hatları için ideal olacak şekilde aynı anda birden fazla test kümesini kolayca ayağa kaldırma.
- Daha düşük ek yükü nedeniyle genellikle otomatik test ortamlarında kullanılır.
Kind Nasıl Kurulur (Windows Örneği):
# Windows Paket Yöneticisi ile Kind kurun
winget install Kubernetes.kind
Kurulduktan sonra, create cluster komutunu kullanarak basit bir küme oluşturabilir ve bir ad verebilirsiniz.
# Basit bir küme oluşturun
kind create cluster --name example-cluster
Kubernetes kind kümenizin başlayıp başlamadığını kontrol etmek için aşağıdaki get komutunu kullanın.
# Çalışan kümeleri kontrol edin
kind get clusters
Ayrıca kubectl arayüzü üzerinden küme ile etkileşime geçebilirsiniz:
# Kind kümenizle kubectl kullanarak etkileşime geçin
kubectl get nodes
Not: Docker’ın kurulu ve çalışır durumda olduğundan emin olun.
Bulut Sağlayıcıları (EKS, GKE, AKS)
Kubernetes’i bulutta çalıştırırken seçebileceğiniz bazı bulut sağlayıcıları şunlardır:
1. Amazon EKS (Elastic Kubernetes Service)
Amazon EKS, kendi kontrol düzleminizi veya işçi düğümlerinizi yönetmenize gerek kalmadan AWS üzerinde Kubernetes çalıştırmayı kolaylaştıran yönetilen bir hizmettir. Yük dengeleme, depolama, otomatik ölçekleme ve izleme gibi ek özellikler için diğer AWS servisleriyle entegre olur.
Bazı ek özellikler şunlardır:
- Diğer AWS servisleriyle (örn. IAM, CloudWatch, ECR) entegrasyonlar sunar.
- Ölçeklenebilirlik ve yüksek erişilebilirlik platforma yerleşiktir.
2. Google GKE (Google Kubernetes Engine)
Google GKE, Google Cloud Platform üzerinde Kubernetes çalıştırmak için tam yönetilen bir hizmettir. Otomatik ölçekleme, kendi kendini iyileştirme özellikleri ve diğer Google Cloud servisleriyle entegrasyon sunar.
Bazı ek özellikler şunlardır:
- Cloud Logging, Cloud Monitoring ve Container Registry gibi GCP servisleriyle derin entegrasyon.
- Küme altyapısını otomatik olarak yöneten autopilot modu sunar.
3. Azure AKS (Azure Kubernetes Service)
Azure AKS, Depolama, Ağ ve Yük Dengeleme gibi diğer Azure servisleriyle tamamen entegre sunucusuz Kubernetes kümeleri sağlar. Ayrıca Helm ve Prometheus gibi DevOps araçları için yerleşik destek sunar.
Bazı ek özellikler şunlardır:
- Azure Active Directory, Azure Monitor, Container Registry vb. ile entegre olur.
- Azure Container Instances kullanarak sunucusuz Kubernetes (Sanal Düğümler) sunar.
Kubernetes öğrenmek için kaynaklar
Kubernetes’i ilk kez öğrenmek göz korkutucu gelebilir, ancak başlamanıza yardımcı olacak pek çok kaynak mevcuttur.
Önerilen bazı kaynaklar şunlardır:
- DataCamp kursları ve kaynakları: Kubernetes’e Giriş kursumuz ve Konteynerleştirme eğitimi başlamak için harika yerler olabilir.
- Kubernetes başlangıç eğitimlerimiz: Size temelleri sunmak için hazırlanmıştır.
Kubernetes Dağıtım Örneği
Kubernetes’te uygulamaları çalıştırmak, bir küme kurmayı, konteynerleştirilmiş bir uygulamayı dağıtmayı, bunu bir servis olarak açığa çıkarmayı ve gerektiğinde ölçeklemeyi içeren yapılandırılmış bir iş akışını izler.
Bu süreci Kubernetes eğitimimizde ayrıntılı olarak ele aldık; ancak burada üst düzey bir özet yer alıyor:
Bir Kubernetes kümesi kurun
Test ve geliştirme için yerel bir küme oluşturmak üzere Minikube kullanın. Minikube’u kurun ve kümenizi şu komutla başlatın:
minikube start --driver=docker
kubectl get nodes
Bir uygulama dağıtın
Uygulamanızın istenen durumunu bir Deployment YAML dosyasında tanımlayın. Örneğin bir Nginx web sunucusu dağıtımı şöyle görünür:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello-container
image: nginx:latest
ports:
- containerPort: 80
Dağıtımı şu komutla uygulayın:
kubectl apply -f hello-deployment.yaml
Uygulamayı bir servis olarak açığa çıkarın
Uygulamayı erişilebilir kılmak için bir Service oluşturun:
kubectl expose deployment hello-deployment --type=NodePort --port=80 --name=hello-service
Dış URL’yi alın ve uygulamayı tarayıcınızda açın:
minikube service hello-service
Uygulamayı ölçekleyin ve izleyin
Kubernetes uygulamaları zahmetsizce ölçeklemenize olanak tanır. Kopya sayısını artırmak için:
kubectl scale deployment hello-deployment --replicas=3
Çalışan Pod’ları kontrol edin:
kubectl get pods
Hata ayıklama için günlükleri görüntüleyin:
kubectl logs -f <pod-name>
İleri düzey projeler için daha fazla keşif yapmanıza yönelik bazı örnekler:
- Konteynerlerde akış (streaming) işleri çalıştırın (örn. Kubernetes üzerinde Spark, Kubernetes üzerinde Kafka).
- Kalıcı Hacimler (Persistent Volumes) kullanarak AWS EBS, Azure Disks veya NFS gibi harici depolama çözümlerini bağlayın.
- Daha karmaşık uygulamalar dağıtın (örn. veritabanlı çok katmanlı mikroservisler).
- Ingress denetleyicileri, Servis Mesh’ler (örn. Istio), Helm chart’ları gibi ileri özellikleri keşfedin.
Sonuç
Kubernetes, konteynerleştirilmiş uygulamaları ölçekli şekilde dağıtmak ve yönetmek için güçlü bir platformdur; esnek ve güvenilir veri işleme ortamlarına ihtiyaç duyan veri mühendisleri için vazgeçilmezdir.
Kubernetes hakkında daha fazla bilgi edinmek isterseniz Kubernetes’e Giriş kursumuz tam size göre olacaktır.
Kubernetes SSS
Kubernetes ile Docker aynı şey midir?
Hayır, Kubernetes bir konteyner orkestrasyon aracıdır, Docker ise bir konteynerleştirme platformudur. Birlikte konteynerleri yönetmek ve dağıtmak için çalışırlar ancak farklı amaçlara hizmet ederler.
Kubernetes kullanmanın faydaları nelerdir?
Kubernetes, konteynerlerin daha kolay yönetilmesini ve dağıtılmasını sağlar, uygulamaların ölçeklenebilirliğini ve erişilebilirliğini artırır ve otomatik güncellemeler ile geri almaları destekler.
Kubernetes her tür ortamda kullanılabilir mi?
Evet, Kubernetes hem şirket içi hem de bulut ortamlarında kullanılabilir. Son derece esnektir ve çeşitli altyapı kurulumlarına uyum sağlayabilir.
Kubernetes kullanmayı öğrenmek zor mu?
Bir öğrenme eğrisi olsa da, DataCamp ve Kubernetes’in kendi başlangıç rehberleri gibi çevrimiçi birçok kaynak mevcuttur.
Kubernetes’in mimarisi nedir?
Kubernetes istemci-sunucu mimarisini izler; bir ana düğüm küme üzerinde kontrol sahibidir ve işçi düğümler uygulama iş yüklerini çalıştırır. Bu, tüm sistemin verimli şekilde iletişim kurmasını ve yönetilmesini sağlar.

Ben Austin, sağlık sektöründe veri bilimci ve veri analisti olarak yıllara dayanan deneyime sahip bir blogger ve teknoloji yazarıyım. Biyoloji geçmişiyle başladığım teknoloji yolculuğumda, şimdi teknoloji blogum aracılığıyla başkalarının da aynı geçişi yapmasına yardımcı oluyorum. Teknolojiye olan tutkum, onlarca SaaS şirketine yazılı katkılar sunmama, başkalarına ilham vermeme ve deneyimlerimi paylaşmama vesile oldu.
