Kubernetes-Probes: – Startup, Liveness, Readiness
Kubernetes stellt Probes (Gesundheitsprüfungen) bereit, um den Zustand der Pods zu überwachen und darauf zu reagieren, um sicherzustellen, dass nur fehlerfreie Pods Datenverkehr verarbeiten. Kubelet ist die verantwortliche Komponente für die Durchführung der Gesundheitsprüfungen und aktualisiert den API-Server mit den relevanten Informationen.
Drei Arten von Sonden
- Start-up
- Lebendigkeit
- Bereitschaft
Startup-Probes erkennen, wann die Arbeitslast eines Containers gestartet wurde und der Container einsatzbereit ist. Kubernetes verlässt sich auf diese Informationen, wenn es bestimmt, ob ein Container von Liveness- und Readiness-Prüfungen angegriffen werden kann.
- Startprüfungen teilen Kubernetes mit, ob Ihre App (die in einem Container im Pod ausgeführt wird) ordnungsgemäß gestartet wurde.
- Gibt an, ob die Anwendung im Container gestartet wird.
- Der Start-Probe hat gegenüber den beiden anderen Probe-Typen eine höhere Priorität. Bis der Start-Probe erfolgreich ist, sind alle anderen Probes deaktiviert.
- Startprüfungen sind in Situationen nützlich, in denen der Start Ihrer App lange dauern kann oder gelegentlich beim Start fehlschlagen kann.
- Anstatt ein langes Aktivitätsintervall festzulegen, können Sie eine separate Konfiguration für die Prüfung des Containers beim Start konfigurieren und so eine längere Zeitspanne zulassen, als es das Aktivitätsintervall zulässt
startupProbe:
httpGet:
path: /
port: 5000
failureThreshold: 5
periodSeconds: 3
Eine Liveness-Prüfung erkennt, ob der Container ordnungsgemäß ausgeführt wird, und beendet den Container, wenn der Fehlerschwellenwert erreicht wurde. Abhängig von der Neustartrichtlinie des Containers startet Kubernetes in den meisten Fällen den ausgefallenen Container automatisch neu. Möglicherweise möchten wir einen Liveness-Test für einen Container verwenden, der ausfallen kann, ohne dass eine Wiederherstellung möglich ist.
Beispiel einer Lebendigkeitssonde:
livenessProbe:
httpGet:
path: /
port: 5000
initialDelaySeconds: 3
periodSeconds: 3
Eine Bereitschaftsprüfung prüft, ob der Container auf neue Anfragen reagieren kann. Im Gegensatz zu einer Lebendigkeitsprüfung wird der Container bei einer Bereitschaftsprüfung nicht zerstört. Kubernetes verbirgt einfach den Pod des Containers vor den entsprechenden Diensten, sodass kein Datenverkehr dorthin umgeleitet wird. Beispielsweise könnte ein Webdienst, der gelegentlich große, teure Jobs ausführt, langsamer werden, daher möchten wir, dass unsere Bereitschaftsprüfung prüft, ob ein solcher Vorgang ausgeführt wird.
Beispiel einer Bereitschaftsprüfung:
readinessProbe:
httpGet:
path: /
port: 5000
initialDelaySeconds: 3
periodSeconds: 3
Kubelet kann den Zustand eines Pods auf drei Arten überprüfen. Jede Sonde muss genau einen dieser Mechanismen definieren:
HTTP:
- Wir definieren eine Portnummer zusammen mit der URL. Kubernetes pingt diesen Pfad und wenn es eine HTTP-Antwort im Bereich 200 oder 300 erhält, markiert es die App als fehlerfrei. Andernfalls wird es als ungesund markiert.
- HTTP-Probes sind der häufigste Typ benutzerdefinierter Probes.
- Auch wenn Ihre App kein HTTP-Server ist, können Sie in Ihrer App einen einfachen HTTP-Server erstellen, der auf die Liveness-Prüfung reagiert.
- Kubernetes versucht, eine TCP-Verbindung auf dem angegebenen Port aufzubauen. Wenn eine Verbindung hergestellt werden kann, gilt der Container als fehlerfrei; Wenn dies nicht möglich ist, gilt es als ungesund.
- TCP-Probes sind praktisch, wenn Sie ein Szenario haben, in dem HTTP-Probes oder Befehls-Probes nicht gut funktionieren.
- Beispielsweise ist ein gRPC- oder FTP-Dienst ein Hauptkandidat für diese Art von Untersuchung.
- Kubernetes führt einen Befehl innerhalb des Containers aus. Wenn der Befehl mit dem Exit-Code 0 zurückkehrt, wird der Container als fehlerfrei markiert. Andernfalls wird es als ungesund markiert.
- Diese Art von Probe ist nützlich, wenn Sie keinen HTTP-Server ausführen können oder wollen, aber einen Befehl ausführen können, der prüfen kann, ob Ihre App fehlerfrei ist.
apiVersion: apps/v1
kind: Deployment
metadata:
name: liveness-probe
labels:
app: liveness-probe
spec:
replicas: 1
selector:
matchLabels:
app: liveness-probe
template:
metadata:
labels:
app: liveness-probe
spec:
containers:
- name: backend
image: demo:latest
ports:
- containerPort: 5000
imagePullPolicy: Never
readinessProbe:
httpGet:
path: /
port: 5000
initialDelaySeconds: 3
periodSeconds: 3
livenessProbe:
httpGet:
path: /
port: 5000
initialDelaySeconds: 3
periodSeconds: 3
startupProbe:
httpGet:
path: /
port: 5000
failureThreshold: 5
periodSeconds: 3
---
apiVersion: v1
kind: Service
metadata:
name: liveness-svc
spec:
selector:
app: liveness-probe
ports:
- port: 8080
targetPort: 5000
type: LoadBalancer
Kubernetes bietet Probes (Gesundheitsprüfungen) , um den Zustand von Pods (Containern) zu überwachen und darauf zu reagieren und um sicherzustellen, dass nur fehlerfreie Pods Datenverkehr verarbeiten . Mit Hilfe von Probes können wir steuern, wann ein Pod als gestartet, betriebsbereit oder aktiv für den Datenverkehr gelten soll.
Repo-Link:-

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































