CodeBlanks Logo Icon CodeBlanks

Self-healing

Pod silindiğinde ReplicaSet'in yeniden oluşturmasını öğrenirsin.

Self-healing

ReplicaSet denetleyicisi sürekli bir uzlaştırma döngüsü çalıştırır: gerçek pod sayısını gözlemler, istenenle karşılaştırır, farkı kapatır. Pod silinirse, node çökerse ya da pod tahliye edilirse (evicted) eksik pod yeniden oluşturulur:

$ kubectl delete pod web-7c5b9f6d8-abcde
$ kubectl get events --field-selector involvedObject.kind=ReplicaSet | tail -2
Normal  SuccessfulDelete  replicaset/web-7c5b9f6d8  Deleted pod: web-7c5b9f6d8-abcde
Normal  SuccessfulCreate  replicaset/web-7c5b9f6d8  Created pod: web-7c5b9f6d8-mnopq

Container yeniden başlatma

İki seviye onarım vardır. Container çökerse kubelet aynı pod içinde container'ı yeniden başlatır (restartPolicy: Always), RESTARTS sayacı artar. Pod'un kendisi yok olursa ReplicaSet yeni bir pod oluşturur. Bir önceki çöken container'ın log'u --previous ile görülür:

$ kubectl get pod api-5d8f7c9b4-qrstu
NAME                  READY   STATUS    RESTARTS      AGE
api-5d8f7c9b4-qrstu   1/1     Running   3 (2m ago)    20m
$ kubectl logs api-5d8f7c9b4-qrstu --previous

Uygulama Onarımı gözle

Üç komut yaz: web-7c5b9f6d8-abcde pod'unu sil; app=web etiketli pod'ları listele; api-5d8f7c9b4-qrstu pod'unun önceki container log'unu göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl delete pod web-7c5b9f6d8-abcde
kubectl get pods -l app=web
kubectl logs api-5d8f7c9b4-qrstu --previous

Beklenen çıktı

pod "web-7c5b9f6d8-abcde" deleted
NAME                  READY   STATUS    RESTARTS   AGE
web-7c5b9f6d8-fghij   1/1     Running   0          2h
web-7c5b9f6d8-mnopq   1/1     Running   0          4s
panic: runtime error: invalid memory address

Soru ve cevaplar

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

1 Kendini onarma neyi kapsamaz?

  • Silinen pod'u
  • Çöken node'daki pod'u
  • Tahliye edilen pod'u
  • Uygulamadaki bir hatayı; yeni pod da aynı hatayla çöker Doğru cevap

Açıklama: Sürekli çöken pod CrashLoopBackOff durumuna düşer.

2 Önceki (çöken) container'ın log'unu göster.

Soru
kubectl logs api-5d8f7c9b4-qrstu ____
Cevap
kubectl logs api-5d8f7c9b4-qrstu --previous

Açıklama: --previous (-p) bir önceki container örneğinin log'udur.

3 Eşleştir.

Kavram Anlamı
kubelet Container'ı yeniden başlatır
ReplicaSet Pod'u yeniden oluşturur
RESTARTS Container yeniden başlama sayısı
--previous Çökenin log'u

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