Middle
Kubernetes'te liveness-тест өтпөсө эмне болот?
sobes.tech AI
AIден жооп
Эгер pod liveness-сынактары өтпөсө, Kubernetes manifest'те көрсөтүлгөн аракетти жасайт. Адатта, бул контейнерди кайра жүктөө:
Liveness-сынактарынын иштебеген учурларында мүмкүн болгон аракеттер:
- Кайра жүктөө: pod ичиндеги контейнерди кайра жүктөө. Бул негизги аракет катары колдонулат.
- Эч нерсе кылбоо: Kubernetes liveness-сынактарынын иштебеген учурларында эч кандай аракет кылбайт. Контейнер азыркы абалында калат (
RunningжеCrashing). - Команда иштетүү: Контейнер ичинде белгилүү бир команда иштетүү. Эгер команда нөл эмес кайтаруу коду менен аяктагыс, liveness-сынактарынын иштебеген деп эсептелет.
Негизги аракет менен сценарий (Кайра жүктөө):
- kubelet узелде liveness-сынактарын текшерет.
- Liveness-сынактарынын шарты аткарылбай калат (мисалы, HTTP-сервер жооп бербейт, команда ката менен аяктайт).
- kubelet иштен чыккандыгын каттайт.
- Кээ бир неудачалардан кийин (
failureThreshold,initialDelaySeconds,periodSeconds,timeoutSecondsпараметрлери менен конфигурацияланган): - 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 # Текшерүүлөрдүн аралыгы
timeoutSeconds: 5 # Жооп күтүүнүн убактысы
failureThreshold: 3 # Кайра жүктөөгө чейин неудачалар саны