← Blog'a Dön
DEVOPS

Kubernetes Nedir? Container Orkestrasyonu Başlangıç Rehberi

F. Çağrı Bilgehan1 Şubat 202612 dk okuma
kubernetescontainerdockercloud native

Kubernetes Nedir? Container Orkestrasyonu Başlangıç Rehberi

Docker ile container oluşturdunuz, harika. Ama 50 container'ınız olduğunda bunları kim yönetecek? Hangisi çöktü, hangisine ekstra kaynak lazım? İşte Kubernetes (K8s), bu kaosa düzen getiren orkestra şefidir.

Kubernetes Tanımı

Kubernetes, Google tarafından geliştirilmiş ve açık kaynak olarak sunulmuş bir container orkestrasyon platformudur. Containerize edilmiş uygulamaları otomatik olarak dağıtır, ölçekler ve yönetir.

Temel Kavramlar

Pod

Kubernetes'in en küçük dağıtım birimi. Bir veya daha fazla container'ı barındırır:

apiVersion: v1
kind: Pod
metadata:
  name: bilgeone-api
spec:
  containers:
    - name: api
      image: bilgeone/api:v1.2
      ports:
        - containerPort: 3000

Node

Pod'ların çalıştığı fiziksel veya sanal makine. İki türü var:

  • Master Node — Cluster'ı yönetir (API Server, Scheduler, Controller)
  • Worker Node — Pod'ları çalıştırır

Service

Pod'lara sabit bir ağ adresi sağlar. Pod'lar gelip gidebilir, Service her zaman aynı adreste:

apiVersion: v1
kind: Service
metadata:
  name: bilgeone-api-service
spec:
  selector:
    app: bilgeone-api
  ports:
    - port: 80
      targetPort: 3000
  type: LoadBalancer

Deployment

Pod'ların istenilen durumunu tanımlar. Kubernetes, gerçek durumu bu tanıma eşitlemeye çalışır:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bilgeone-api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: bilgeone-api
  template:
    metadata:
      labels:
        app: bilgeone-api
    spec:
      containers:
        - name: api
          image: bilgeone/api:v1.2

Bu tanım "her zaman 3 adet bilgeone-api Pod'u çalıştır" der. Biri çökerse, K8s otomatik yenisini başlatır.

Namespace

Cluster içinde mantıksal izolasyon:

production namespace:  bilgeone-api, bilgeone-web
staging namespace:     bilgeone-api-staging
development namespace: bilgeone-api-dev

Kubernetes Mimarisi

┌─────────────────────────────────┐
│          MASTER NODE            │
│  ┌──────────┐ ┌──────────┐     │
│  │API Server│ │Scheduler │     │
│  └──────────┘ └──────────┘     │
│  ┌──────────┐ ┌──────────┐     │
│  │Controller│ │  etcd    │     │
│  │Manager   │ │(key-val) │     │
│  └──────────┘ └──────────┘     │
└─────────────────────────────────┘
         ↕          ↕
┌──────────┐  ┌──────────┐
│Worker    │  │Worker    │
│Node 1    │  │Node 2    │
│┌──┐ ┌──┐│  │┌──┐ ┌──┐ │
││P1│ │P2││  ││P3│ │P4│ │
│└──┘ └──┘│  │└──┘ └──┘ │
└──────────┘  └──────────┘

Kubernetes Ne Zaman Kullanılmalı?

✅ Kullanın

  • 10+ mikroservis
  • Yüksek erişilebilirlik gereksinimi
  • Otomatik ölçekleme ihtiyacı
  • Multi-cloud veya hybrid cloud stratejisi
  • DevOps olgunluğu yüksek ekipler

❌ Kullanmayın

  • Küçük projeler (1-3 servis)
  • Basit web siteleri
  • DevOps deneyimi olmayan ekipler
  • Maliyet kısıtı yüksek projeler

Kubernetes Alternatifleri

| Çözüm | Avantaj | Ne Zaman? | |-------|---------|-----------| | Docker Compose | Basit, yerel geliştirme | Tek sunucu | | Google Cloud Run | Serverless, yönetim yok | Basit containerlar | | AWS ECS | AWS entegrasyonu | AWS ekosistemi | | Nomad | Hafif, K8s'ten basit | Orta ölçek |

Sonuç

Kubernetes güçlü ama karmaşıktır. Gerçekten ihtiyacınız olup olmadığını değerlendirin. Çoğu startup ve KOBİ için Cloud Run veya ECS gibi managed çözümler yeterlidir. Kubernetes'e geçiş, ekibinizin olgunluğuyla paralel olmalıdır.

Container orkestrasyonu ve Kubernetes'i interaktif olarak öğrenmek için LabLudus platformundaki DevOps kariyer yolunu takip edin.

İlgili Yazılar

Infrastructure as Code (IaC) Nedir? Terraform ve Altyapı Otomasyonu

Infrastructure as Code nedir? Terraform, Pulumi, CloudFormation ile altyapı otomasyonu, versiyon kontrolü ve tekrarlanabilir deployment rehberi.

What Is Infrastructure as Code? Terraform & Automation Guide

IaC explained: Terraform, Pulumi, CloudFormation for infrastructure automation, version control, and repeatable deployments.