📦 Temel Kubernetes Kavramları
Temel Kubernetes Kavramları: kubectl apply → Pod Running — Cluster Yolculuğu "▶ kubectl apply" butonuna bas: YAML dosyasının kubectl'den API Server'a, etcd'ye, Scheduler'a ve Nod
kubectl apply → Pod Running — Cluster Yolculuğu
"▶ kubectl apply" butonuna bas: YAML dosyasının kubectl'den API Server'a, etcd'ye, Scheduler'a ve Node'a uzanan yolculuğunu adım adım izle. Java'daki deploy pipeline analojisi sağda.
Pod — En Küçük Birim
Pod, nakliye container'ının ta kendisidir (fiziksel kutu, Docker kavramı değil) — Docker container ise içine paketlenen yüktür. Genellikle bir Pod tek bir container'ı sarar, ama ağ ve depolama paylaşması gereken birden fazla container'ı da barındırabilir — aynı kutuda yolculuk eden bir ana uygulama ve bir loglama sidecar gibi. Peki Kubernetes neden Docker container'larını doğrudan zamanlamak yerine onları ekstra bir katmana (Pod) sarıyor? Çünkü bazı şeylerin gerçekten birlikte zamanlanması, ağa bağlanması ve ölçeklenmesi gerekir tek bir atomik birim olarak — logları gönderen bir sidecar'ın, logladığı uygulamadan farklı bir node'da olmasının hiçbir anlamı yoktur. Bu, bir Java servisinin sıkı sıkıya bağlı yardımcı thread'lerini ayrı, bağımsız zamanlanan servisler olarak deploy etmek yerine tek bir process içinde bir araya getirmesiyle aynı mantıktır. QA açısından önemli bir tuzak: AYNI Pod İÇİNDEKİ container'lar localhost networking'i paylaşır, yani "her container'ın erişilebilir olması için kendi service'i gerekir" varsayan bir test, gereksiz Service nesneleri yazar — ayrıca bir Pod restart'ı, sadece çöken container'ı değil, içindeki TÜM container'ları birlikte öldürür.
Tasarım gereği geçici
Label ve Selector'lar
Micro Lab: Kubernetes YAML manifest repair
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Bu Minimal YAML Uygulanınca Cluster'da Tam Olarak Ne Olur?
apiVersion + kind tanımlar
API Server bu iki alana bakarak isteği HANGİ controller'a yönlendireceğini belirler — burada basitçe "Pod".
labels gelecekteki keşfi sağlar
`app: my-app` etiketi şu an hiçbir şey yapmaz ama bir Service'in bu pod'u BULMASININ TEK yoludur.
image çekilir ve çalıştırılır