CodeBlanks Logo Icon CodeBlanks

Meydan okuma - Orta seviye projesi

Deployment, Service ve ConfigMap'i birleştiren bir proje kurarsın.

Meydan okuma: orta seviye projesi

Son meydan okumada bozuk bir dağıtımı onaracaksın. magaza namespace'indeki api pod'ları CrashLoopBackOff'ta ve web servisi boş yanıt veriyor. Adımlar:

  1. Belirtileri topla (get, describe).
  2. Çöken container'ın log'unu oku.
  3. Eksik ayarı ekle ve deployment'ı yeniden başlat.
  4. Servis selector'ını pod etiketleriyle karşılaştır ve düzelt.
$ kubectl logs -n magaza deploy/api --previous
Error: DB_HOST tanımlı değil
$ kubectl get svc web -n magaza -o jsonpath='{.spec.selector}'
{"app":"web-on"}       # pod'larda app=web var

Uygulama Teşhis

Üç komut yaz: magaza namespace'indeki pod'ları listele; magaza'da deploy/api'nin önceki container log'unu göster; magaza'daki web servisinin selector'ını jsonpath='{.spec.selector}' ile yazdır.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl get pods -n magaza
kubectl logs deploy/api -n magaza --previous
kubectl get svc web -n magaza -o jsonpath='{.spec.selector}'

Beklenen çıktı

NAME                   READY   STATUS             RESTARTS      AGE
api-7f8c9d6b5-abcde    0/1     CrashLoopBackOff   5 (40s ago)   6m
web-6d7e8f9a0-fghij    1/1     Running            0             6m
Error: DB_HOST tanımlı değil
{"app":"web-on"}

Uygulama Onarım

Üç komut yaz: magaza'daki api-ayar ConfigMap'ine {"data":{"DB_HOST":"db"}} yamasını uygula; magaza'da api deployment'ını yeniden başlat; magaza'daki web servisinin selector'ını {"spec":{"selector":{"app":"web"}}} yamasıyla düzelt.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl patch configmap api-ayar -n magaza -p '{"data":{"DB_HOST":"db"}}'
kubectl rollout restart deployment/api -n magaza
kubectl patch svc web -n magaza -p '{"spec":{"selector":{"app":"web"}}}'

Beklenen çıktı

configmap/api-ayar patched
deployment.apps/api restarted
service/web patched

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Servis selector'ı app=web-on, pod'lar app=web ise neden "boş yanıt" alınır?

  • Selector hiçbir pod'la eşleşmez; servisin uç noktası yoktur Doğru cevap
  • Pod'lar çöküyordur
  • NodePort kapalıdır
  • DNS bozuktur

Açıklama: EndpointSlice boş görünür.

2 Servisin selector'ını düzelt.

Soru
kubectl ____ svc web -n magaza -p '{"spec":{"selector":{"app":"web"}}}'
Cevap
kubectl patch svc web -n magaza -p '{"spec":{"selector":{"app":"web"}}}'

Açıklama: patch nesnenin bir alanını değiştirir.

3 Eşleştir.

Kavram Anlamı
CrashLoopBackOff logs --previous
boş yanıt Selector ve EndpointSlice
eksik ayar ConfigMap'e ekle
rollout restart Yeni ayarı uygula

Orta seviye bölümündeki tüm dersler