Middle
Šta se dešava ako liveness-proba u Kubernetes-u ne uspe?
sobes.tech АИ
Одговор од АИ
Ако pod не прође liveness-пробу, Kubernetes ће извршити акцију која је наведена у manifest-у pod-а. По подразумевану вредност, то је поновно покретање контејнера.
Могуће акције у случају неуспеха liveness-пробе:
- Поново покрени: Поново покретање контејнера унутар pod-а. Ово је подразумевана акција.
- Ништа: Kubernetes неће предузети никакве радње у случају неуспеха liveness-пробе. Контејнер ће остати у тренутном стању (
RunningилиCrashing). - Изврши команду: Извршавање одређене команде унутар контејнера. Ако команда заврши са ненултим кодом повратка, liveness-проба се сматра неуспешном.
Сценарио са подразумеваном акцијом (Поново покрени):
- kubelet на чвору редовно проверава контејнер помоћу liveness-пробе.
- Услов liveness-пробе није испуњен (нпр. HTTP сервер не одговара, команда се завршава грешком).
- kubelet региструје неуспех пробе.
- Након одређеног броја неуспешних покушаја (конфигурисаних параметрима
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSeconds), kubelet одређује да је контејнер неисправан. - kubelet шаље сигнал
SIGKILLнеисправном контејнеру. - Контејнер се завршава.
- kubelet поново покреће контејнер у истом pod-у.
- Процес liveness-пробе се наставља.
Важно је разликовати liveness-пробу од readiness-пробе. Readiness-проба одређује да ли је контејнер спреман да прихвати саобраћај. Неуспех readiness-пробе доводи до тога да Service не усмерава саобраћај на овај примерак pod-а, али контејнер се не поново покреће. Неуспех liveness-пробе указује на неисправност и захтева поновно покретање.
# Пример liveness-пробе у spec.containers
containers:
- name: my-container
image: my-image:latest
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15 # Задршка пре прве проверке
periodSeconds: 20 # Интервал између проверa
timeoutSeconds: 5 # Време чекања на одговор
failureThreshold: 3 # Број неуспешних покушаја пре поновног покретања