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