Meydan okuma - Orta seviye projesi
- Docker & Kubernetes kursu
- Orta seviye
- Ders 82/82
- 6 dk
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:
- Belirtileri topla (
get,describe). - Çöken container'ın log'unu oku.
- Eksik ayarı ekle ve deployment'ı yeniden başlat.
- 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 varUygulama 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
# buraya yazÖrnek çözüm
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
# buraya yazÖrnek çözüm
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.
kubectl ____ svc web -n magaza -p '{"spec":{"selector":{"app":"web"}}}'
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 |