Kubernetes-Gesundheitscheck

Eine Einführung in Gesundheitschecks mit Kubernetes für .

Übersicht

Ein Health Check fragt den Status der laufenden Manager ab. Ein Health-Check-Befehl wird während des Starts eines Containers verwendet. Wenn der Container „gesund“ ist, gibt der Health-Check 0 zurück. Mit "gesunden" Containern kann man direkt interagieren, ohne dass es zu einer Wartezeit kommt. Ein Health-Check kann am Ende eines Dockerfiles wie folgt hinzugefügt werden:
HEALTHCHECK --interval=5s --timeout=5s --start-period=10s --retries=20 CMD "${BIN_DIR}
WCCILpmon" -config ${OAPROJ}config/config -status || exit 1

Sie finden ein Beispiel für eine Gesundheitsprüfung für WinCC OA, die in Docker (oder Kubernetes) ausgeführt wird. Die Dateien befinden sich in wincc_oa_path/data/containerization/examples/kubernetes/healthProbes.

Wie funktioniert der Gesundheitscheck mit WinCC OA

Um Kubernetes in die Lage zu versetzen, den Gesundheitsstatus von WinCC OA-Komponenten/Containern zu überwachen, können Sie das mitgelieferte Skript verwenden:

liveness.sh

Kubernetes führt liveness.sh direkt innerhalb des Containers aus, um einen Liveness-Test durchzuführen.

Der Test wird intern durch Ausführen des folgenden Befehls im Verzeichnis $OAINST/bin/ durchgeführt:
WCCILpmon -config $OAPROJ/config/config -command MGRLIST:STATI -log +stdout  

Bitte stellen Sie sicher, dass die Umgebungsvariablen $OAINST und $OAPROJ_NAME in Ihren Containern gesetzt sind, oder passen Sie das Skript Ihren speziellen Bedürfnissen an. Die folgende Logik wird verwendet, um den Gesundheitszustand des WinCC OA zur Laufzeit zu bewerten:

Abbildung 1. Logik zur Bewertung des Gesundheitszustands

Standby- und Startup-Tests können deaktiviert werden (oder entsprechend Ihren eigenen Anforderungen implementiert werden). Die Startup-Tests sind nicht erforderlich, da keine inkonsistenten Startzeiten der WinCC OA-Laufzeit erwartet werden. Nachfolgend finden Sie ein Konfigurationsbeispiel:

Abbildung 2. Konfigurationsbeispiel
Anmerkung: Für größere Projekte reichen die Werte möglicherweise nicht aus und sollten an Ihre Bedürfnisse angepasst werden. Beachten Sie beim Anpassen der Werte, dass Kubernetes die Werte in der folgenden Reihenfolge verwendet:
  • Warten auf initialDelaySeconds
  • Bereitschaftsprüfung durchführen und timeoutSeconds auf ein Timeout warten
  • Wenn die Anzahl der fortgesetzten Erfolge größer als successThreshold ist, Erfolg zurückgeben

    Oder

    Wenn die Anzahl der fortgesetzten Fehlschläge größer ist als failureThreshold, wird failure zurückgegeben

    andernfalls wird periodSeconds gewartet und eine neue Bereitschaftsprüfung gestartet.