Middle
Ի՞նչ է տեղի ունենում, եթե liveness-պարամետրը չհաջողվի Kubernetes-ում:
sobes.tech AI
Պատասխան AI-ից
Եթե pod-ը չի անցնում liveness-փորձը, Kubernetes-ը կիրականացնի manifest-ում նշված գործողությունը pod-ի համար: Դեպքում, դա սովորաբար կոնտեյների վերագործարկումն է:
Լավագույն գործողությունները 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 # Ձախողումների քանակը վերագործարկումից առաջ