Middle
რა ხდება, თუ Kubernetes-ში liveness-ტესტი ვერ ჩაივლის?
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-ტესტი ვერ ჩაითვლება წარმატებულად, სერვისი არ გამოაგზავნის ტრეფიკს ამ 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 # გაუქმების მცდელობების რაოდენობა გადატვირთვამდე