EMZETT.
Giriş yap

Kubernetes nesneleri: Pod, Deployment, Service ve ConfigMap

Kısaca: Kubernetes’te istenen durumu nesnelerle tarif edersiniz: pod’lar konteynerleri çalıştırır, deployment’lar onları ayakta tutar, service’ler ulaşılabilir kılar ve ConfigMap’ler/Secret’lar yapılandırma sağlar.

Biraz daha ayrıntılı: Kubernetes (K8s), konteynerleri birçok makine üzerinde yöneten bir sistemdir. YAML dosyalarında neyin çalışması gerektiğini tarif edersiniz; Kubernetes gerçek durumun istenen durumla eşleşmesini sağlar (çökmede yeniden başlatma, dağıtım, ölçekleme).

Ayrıntılı

En önemli nesneler

  • Pod: en küçük birim; ağı ve depolamayı paylaşan bir veya daha fazla konteyner. Pod’lar kısa ömürlüdür.
  • Deployment: bir uygulamanın pod’larını yönetir: kopya sayısı, kademeli güncellemeler (rolling updates) (yeni sürüm adım adım), geri alma.
  • Service: bir pod grubu için kararlı adres ve yük dengeleme (ClusterIP dahili, NodePort/LoadBalancer harici).
  • Ingress: dışarıdan HTTP yönlendirmesi (alan adları, yollar, TLS).
  • ConfigMap: yapılandırma değerleri; Secret: hassas değerler (Base64 kodlu, harici şifrelemeyle daha iyi).
  • Namespace: mantıksal ayrım (dev, prod).
  • PersistentVolume/Claim: kalıcı depolama. Durumlu uygulamalar için StatefulSet (veritabanları), görevler için Job/CronJob.

Bir örnek

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels: { app: web }
  template:
    metadata:
      labels: { app: web }
    spec:
      containers:
        - name: web
          image: my-app:1.2.0
          ports: [{ containerPort: 3000 }]
          readinessProbe:
            httpGet: { path: /health, port: 3000 }
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector: { app: web }
  ports: [{ port: 80, targetPort: 3000 }]

kubectl apply -f file.yaml, kubectl get pods, kubectl logs pod, kubectl describe pod, kubectl rollout undo deployment/web.

Önemli kavramlar

Etiketler ve seçiciler (labels and selectors) nesneleri bağlar. Probe’lar (liveness/readiness) sağlığı denetler. Kaynak sınırları (CPU, bellek) bir uygulamanın her şeyi kullanmasını önler. Otomatik ölçekleme (HPA) kopyaları yüke uyarlar. Zorunlu yerine bildirimsel: YAML dosyası doğruluk kaynağıdır, ideal olarak Git’te (GitOps).

Başlarken ve değerlendirme

Öğrenmek için: yerelde minikube, kind, k3s veya Docker Desktop. Üretimde yönetilen hizmetler kullanılır (GKE, EKS, AKS). K8s güçlüdür ama karmaşıktır; küçük projeler için Docker Compose veya bir platform (Vercel, Fly.io) çoğunlukla yeter. Önce konteynerleri ve ağ oluşturmayı öğrenin.

Ayrıca bak: Kubernetes temelleri, Docker Compose