Ответ
За перезапуск упавшего пода на конкретном узле отвечает kubelet. Он работает как агент на каждой ноде и непрерывно сравнивает фактическое состояние подов с желаемым, описанным в PodSpec.
Если контейнер в поде завершается с ошибкой, kubelet перезапускает его в соответствии с политикой restartPolicy, указанной в манифесте пода. Для подов, управляемых контроллерами (например, Deployment или StatefulSet), сам контроллер отвечает за поддержание желаемого количества реплик. Если под на узле полностью выходит из строя, контроллер создаст новый под на другом доступном узле.
Пример политики перезапуска в манифесте:
apiVersion: v1
kind: Pod
metadata:
name: my-app-pod
spec:
containers:
- name: nginx
image: nginx:stable
restartPolicy: Always # Возможные значения: Always, OnFailure, Never
На практике в продакшене редко работают с "голыми" подами (Pod). Используют контроллеры, такие как Deployment, которые обеспечивают самовосстановление и высокую доступность приложения.