froquiz-logoFroquiz
  • Anasayfa
  • Quizler
  • Blog
  • Hakkımızda
Froquiz

Yazılım mühendisleri için en kapsamlı quiz platformu. 5000+ soru ile kendinizi test edin ve kariyerinizi geliştirin.

LinkedIn

Platform

  • Quizlere Başla
  • Konular
  • Blog
  • Profilim
  • Giriş Yap

Hakkında

  • Biz Kimiz?
  • İletişim

Yasal

  • Gizlilik Politikası
  • Kullanım Koşulları

© 2026 Froquiz. Tüm hakları saklıdır.Teknoloji tutkuyla yapıldı
Blog/Kubernetes Nedir? Container Orkestrasyon'u Sıfırdan Anlamak

Kubernetes Nedir? Container Orkestrasyon'u Sıfırdan Anlamak

Docker'ı öğrendiniz, container çalıştırıyorsunuz. Peki ya 100 container? Hangisi çöktü, hangisi yeniden başlatılmalı, nasıl ölçeklendirilmeli? Kubernetes tam olarak bu soruları çözüyor.

Yusuf SeyitoğluYusuf Seyitoğlu|
6 Mart 20266 Mar
|
1 görüntülenme
|
11 dk okuma

Kubernetes Nedir? Container Orkestrasyon'u Sıfırdan Anlamak

Docker'ı öğrendiniz. Container çalıştırıyorsunuz. Uygulama ayağa kalkıyor, her yerde aynı çalışıyor. Mükemmel.

Şimdi production'a alacaksınız. Tek bir container yetmez — yüksek trafik için birden fazla instance gerekiyor. Bir container çökünce otomatik yeniden başlatılmalı. Trafik arttığında yeni instance'lar eklenmeli. Yeni versiyon deploy edilirken eski versiyon hâlâ çalışmalı. Tüm bu container'ların sağlığı izlenmeli.

Bunu elle yapmak mümkün değil. Kubernetes bu problemi çözüyor.

Kubernetes Nedir?

Kubernetes (K8s), container'ların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynak bir orkestrasyon platformudur. Google tarafından geliştirildi, 2014'te açık kaynak yapıldı. Bugün cloud-native yazılımın fiili standardıdır.

Kubernetes'in temel vaadi şudur: siz uygulamanın ne olmasını istediğinizi tanımlarsınız, Kubernetes bunu nasıl gerçekleştireceğini halleder.

# "Her zaman 3 instance çalışsın" — Kubernetes halleder replicas: 3

Bir instance çökerse Kubernetes yenisini başlatır. Bir node (sunucu) kapanırsa container'ları başka node'lara taşır. Trafik arttığında yeni instance ekler.

Temel Kavramlar

Pod: Kubernetes'in en küçük deploy edilebilir birimidir. Bir veya birden fazla container içerir. Aynı pod'daki container'lar aynı ağı ve depolama alanını paylaşır.

apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: app image: my-app:v1.0 ports: - containerPort: 3000 env: - name: NODE_ENV value: production

Node: Pod'ların çalıştığı fiziksel veya sanal sunucu. Kubernetes bir cluster'daki node'ları yönetir — hangi pod'un hangi node'da çalışacağına karar verir (scheduling).

Cluster: Birden fazla node'dan oluşan Kubernetes ortamı. Bir control plane (master node) cluster'ı yönetir, worker node'lar iş yükünü çalıştırır.

Cluster:
┌─────────────────────────────────────────┐
│  Control Plane                          │
│  (API Server, Scheduler, etcd)          │
├────────────┬────────────┬───────────────┤
│  Node 1    │  Node 2    │  Node 3       │
│  Pod A     │  Pod A     │  Pod B        │
│  Pod B     │  Pod C     │  Pod C        │
└────────────┴────────────┴───────────────┘

Deployment: Pod'ları Yönetmek

Pod'ları direkt oluşturmak yerine genellikle Deployment kullanılır. Deployment, kaç pod çalışması gerektiğini, hangi image'ın kullanılacağını ve güncelleme stratejisini tanımlar.

apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 # 3 pod her zaman ayakta olsun selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v1.0 resources: requests: memory: "128Mi" cpu: "250m" limits: memory: "256Mi" cpu: "500m" readinessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 5 periodSeconds: 10

readinessProbe kritik: Kubernetes pod'un gerçekten hazır olup olmadığını bunu kullanarak anlıyor. Probe başarısız olursa o pod'a trafik gönderilmiyor.

Rolling update: Yeni image deploy edildiğinde Kubernetes eski pod'ları birer birer kapatır, yeni pod'ları birer birer başlatır. Hiç downtime olmadan versiyon güncellenir.

# Yeni versiyon deploy et kubectl set image deployment/my-app app=my-app:v2.0 # Durumu izle kubectl rollout status deployment/my-app # Sorun olursa geri al kubectl rollout undo deployment/my-app

Service: Pod'lara Ulaşmak

Pod'ların IP adresleri sürekli değişir — yeniden başladığında yeni IP alır. Service, pod'lar önüne sabit bir endpoint koyar.

apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app # bu label'a sahip pod'lara yönlendir ports: - port: 80 targetPort: 3000 type: ClusterIP # sadece cluster içinden erişilebilir

Service türleri: ClusterIP (cluster içi), NodePort (her node'da belirli port), LoadBalancer (cloud provider'dan external IP alır).

Ingress: Dış Dünyaya Açılmak

LoadBalancer her servis için ayrı external IP alır — pahalı. Ingress, tek bir external endpoint üzerinden birden fazla servise yönlendirme yapar.

apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: rules: - host: api.example.com http: paths: - path: /users pathType: Prefix backend: service: name: user-service port: number: 80 - path: /orders pathType: Prefix backend: service: name: order-service port: number: 80

api.example.com/users → user-service, api.example.com/orders → order-service. Tek IP, birden fazla servis.

ConfigMap ve Secret: Konfigürasyon Yönetimi

# ConfigMap: hassas olmayan konfigürasyon apiVersion: v1 kind: ConfigMap metadata: name: app-config data: DATABASE_HOST: postgres-service LOG_LEVEL: info MAX_CONNECTIONS: "100" --- # Secret: hassas bilgiler (base64 encoded) apiVersion: v1 kind: Secret metadata: name: app-secrets type: Opaque data: DATABASE_PASSWORD: cGFzc3dvcmQxMjM= # base64 JWT_SECRET: c2VjcmV0a2V5MTIz # base64

Pod'da kullanımı:

spec: containers: - name: app envFrom: - configMapRef: name: app-config - secretRef: name: app-secrets

HorizontalPodAutoscaler: Otomatik Ölçeklendirme

apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: my-app-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70

CPU kullanımı %70'i geçince Kubernetes otomatik yeni pod ekler. Düşünce otomatik azaltır. Siz bir şey yapmadan.

Kubernetes Ne Zaman Gerekli?

Kubernetes güçlü ama maliyetli — öğrenme eğrisi, operasyonel karmaşıklık, kaynak gereksinimi.

Henüz Kubernetes gerekmez: Tek sunucuda çalışan küçük uygulama, 5 kişiden az ekip, basit deployment ihtiyaçları.

Kubernetes değerlendirin: Birden fazla servis bağımsız ölçeklenmeli, yüksek availability gerekli, ekip CI/CD olgunluğuna ulaştı, cloud-native altyapı kuruluyor.

Docker'ı anlamadan Kubernetes'e geçmek karanlıkta yürümektir. Ama Docker'ı anladıktan sonra Kubernetes, production'da container yönetiminin kaçınılmaz bir sonraki adımıdır.

Yazar Hakkında

Yusuf Seyitoğlu

Yusuf Seyitoğlu

View Profile →

Diğer Yazılar

  • TypeScript Nedir? JavaScript Geliştiricisinin Tip Sistemine Gerçek Giriş

    6 Mar

  • CI/CD Pipeline Nedir? Kod Yazmaktan Production'a Giden Otomatik Yol

    6 Mar

  • Message Queue Nedir? Kafka ve RabbitMQ ile Asenkron Mimari

    6 Mar

← Tüm Bloglar