⌨️ kubectl Komutları — Hızlı Referans

kubectl Komutları — Hızlı Referans: kubectl, cluster'ın uzaktan kumandasıdır — bir komut yazarsın ama onu gerçekten çalıştıran kubectl'in kendisi değil, API Server'dır.

kubectl, cluster'ın uzaktan kumandasıdır — bir komut yazarsın ama onu gerçekten çalıştıran kubectl'in kendisi değil, API Server'dır. İstisnasız her kubectl komutu API Server'dan geçer. Peki `kubectl get pods` gibi salt-okunur bir komutu bile neden node'larla doğrudan konuşmak yerine API Server üzerinden yönlendiriyoruz? Çünkü API Server, cluster'ın tek doğruluk kaynağı ve tek güvenlik kontrol noktasıdır — kubectl bunu atlayabilseydi, her client kendi authentication, authorization ve audit mantığını tekrar uygulamak zorunda kalırdı; bu, bir servisin başka bir servisin veritabanına API'sini atlayarak doğrudan bağlanmasıyla aynı riski taşır. Bu merkezileşme, tam olarak laptop'ından çalıştırdığın `kubectl logs ` komutunun, bir bulut veri merkezindeki binlerce kilometre uzaktaki bir node'da neler olduğunu sana gösterebilmesinin ve sızdırılmış bir kubeconfig dosyasının sızdırılmış bir root şifresi kadar tehlikeli olmasının sebebidir — çünkü o, tam olarak o tek kontrol noktasının anahtarıdır. QA açısından bunun günlük karşılığı şudur: bir test ortamındaki pod rastgele yeniden başladığında testlerin toplu hâlde kırılır ve sen kendi kodunda hata ararsın — oysa `kubectl describe pod` ve `kubectl logs --previous` sana çoğu zaman gerçek sebebi (OOMKilled, liveness probe hatası, image pull başarısız) tek satırda söyler. Flaky diye etiketlenen regression koşumlarının önemli bir kısmı testin değil, altındaki cluster'ın hikâyesidir; bu iki komut o hikâyeyi okumanın en kısa yoludur.

GET komutları — Cluster durumunu incele

kubectl get: Her Bayrak Aynı Anlık Görüntüyü Farklı Şekillendirir

get HİÇBİR ŞEYİ değiştirmez

`kubectl get pods` sadece etcd'deki mevcut durumun bir anlık görüntüsünü okur — salt okunur bir sorgudur.

-o wide ek sütun ekler

Aynı sorguya IP ve node bilgisini eklemek için ikinci bir komut GEREKMEZ, sadece format değişir.

-A namespace filtresini kaldırır

`-A`/`--all-namespaces` olmadan kubectl SESSİZCE sadece mevcut namespace'i gösterir — bu da §"eksik pod" hatasının bir başka kaynağıdır.

-w tek görüntüyü canlı akışa çevirir

`-w` bağlantıyı AÇIK tutar — durum her değiştiğinde yeni bir satır basılır, komut sonlanmaz.

-o yaml manifest formatında döner

Bu çıktı, bir dosyaya yazsan AYNEN bir manifest olarak kabul edilecek TAM object tanımıdır.

DESCRIBE — Detaylı bilgi ve event'ler