Kubernetes Öğreniyorum — Hafta 1: Temel Kavramsal Model
DevOps yolculuğumda Kubernetes öğrenirken tuttuğum notlar. Bölüm 1: Pod, Deployment, Service.
DevOps hedefime giderken Kubernetes'i ciddi olarak öğrenmeye karar verdim. Bu, birkaç hafta sürecek serinin ilk yazısı. Burada kavramsal modeli, en temel objeleri ve ilk hatalarımı not alıyorum.
Neden Kubernetes?
Container'ları manuel olarak birden fazla makinede çalıştırmak çabuk kaotik olur. K8s şunları çözer:
- Self-healing: Container ölürse yeniden başlat
- Horizontal scaling: Trafik artarsa replica say
- Rolling updates: Sıfır downtime deployment
- Service discovery: Container IP'si değişse bile sabit isim
4 temel obje
1. Pod
En küçük birim. Genellikle 1 container içerir (ama birden fazla da olabilir). Kısa ömürlüdür, IP'si değişebilir.
2. Deployment
Pod'ların "declarative" tanımı. "Şu imajdan 3 replica istiyorum" dediğinizde K8s bunu sağlar. Yeni versiyon çıkınca rolling update yapar.
3. Service
Pod'lara sabit bir iç IP + DNS ismi verir. 3 tipi var: ClusterIP (default, sadece iç), NodePort (dışarı aç), LoadBalancer (cloud provider).
4. Namespace
Cluster'ı mantıksal olarak böler. dev, staging, prod ayrı namespace'lerde yaşar.
İlk hatalarım
- YAML indentation'ı yanlış yazdım → 45 dakika "ImagePullBackOff" hatası araştırdım. Nedeni:
- name: nginx'in alt satırı 2 space değil, 1 space'ti. - Service'i NodePort yaptım ama sadece test amaçlıydı, gerçekte LoadBalancer veya Ingress gerekiyor.
- Resource limit koymadım → Bir pod tüm node RAM'ini yedi.
Hafta 1 öğrenme listesi
✅ kubectl get pods -A ne yapıyor?
✅ YAML'da Deployment yazabiliyorum
✅ Service'in pod'lara nasıl yönlendirdiğini anladım
✅ Port-forward, logs, exec komutlarını biliyorum
🔲 ConfigMap ve Secret ayrımı (Hafta 2)
🔲 PersistentVolume / PVC (Hafta 2)
🔲 StatefulSet ne zaman gerekli? (Hafta 3)
Bu seriyi, CKA sertifikası alana kadar devam ettirmeyi planlıyorum. Bir sonraki yazı: state yönetimi ve kalıcı veri.