Grundlagen von Cloud und Containern

In einer Webanwendung unter Kubernetes wurde die Prüfung der Liveness-Probe so erweitert, dass sie auch prüft, ob sich die Anwendung mit der Datenbank verbinden kann, von der sie abhängt. Welches Problem kann diese Einstellung am ehesten verursachen?

  1. AFällt die Datenbank aus, werden die Pods automatisch auf den Node verschoben, auf dem die Datenbank läuft, was die übrigen Anwendungen auf diesem Node verlangsamt
  2. BSchon ein kurzer Ausfall der Datenbank lässt die Container aller Pods wiederholt neu starten, was die Erholung verzögert, auch nachdem die Datenbank wieder verfügbar ist
  3. CSchlägt die Liveness-Probe fehl, wird der Pod nur aus den Verteilungszielen des Service genommen, daher entsteht kein besonderes Problem
Antwort und Erläuterung anzeigen

Antwort: B. Schon ein kurzer Ausfall der Datenbank lässt die Container aller Pods wiederholt neu starten, was die Erholung verzögert, auch nachdem die Datenbank wieder verfügbar ist

Eine Liveness-Probe dient dazu, einen Container, der selbst nicht mehr antwortet (etwa durch einen Deadlock), durch einen Neustart wiederherzustellen. Prüft sie auch eine Abhängigkeit, schlagen bei einem Ausfall der Datenbank die Liveness-Probes aller Pods fehl, und die Container werden immer wieder neu gestartet, obwohl ein Neustart nichts behebt. Während der Neustarts werden keine Anfragen bearbeitet, und die Wartezeit bis zum nächsten Neustart kann mit jeder Wiederholung wachsen, sodass sich die Erholung auch nach der Rückkehr der Datenbank verzögert. Eine Liveness-Probe sollte nur prüfen, ob der Prozess selbst antworten kann; der Zustand von Abhängigkeiten wird bei Bedarf mit Readiness-Probes oder in der Fehlerbehandlung der Anwendung berücksichtigt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Cloud und Containern

  1. Ein HorizontalPodAutoscaler in Kubernetes hat als Ziel eine CPU-Auslastung der Pods von 70 % und einen Bereich von 1 bis 10 Pods. Derzeit beträgt die mittlere CPU-Auslastung von 5 Pods 30 %. Wie viele Pods werden benötigt, wenn die benötigte Zahl als ⌈aktuelle Zahl × aktuelle Auslastung ÷ Zielauslastung⌉ berechnet wird (⌈ ⌉ bedeutet Aufrunden)?
  2. In einem Deployment, dessen Pod-Container die obigen Einstellungen haben, laufen vier Pods, von denen jeder 400m (0,4 Kerne) CPU nutzt. Die Ziel-CPU-Auslastung des HorizontalPodAutoscalers ist 60 %, und die benötigte Zahl der Pods wird als ⌈aktuelle Zahl × aktuelle Auslastung ÷ Zielauslastung⌉ berechnet. Wie viele Pods werden benötigt?
  3. Welche Beschreibung der für einen Container gesetzten Ressourcen-Requests und -Limits in Kubernetes ist richtig?
  4. Ein Node hat zuteilbare Ressourcen von 4 CPU-Kernen und 8 GiB Arbeitsspeicher. Der Container jedes Pods hat als Requests 500m CPU und 1,5 GiB Arbeitsspeicher und als Limits 1 CPU-Kern und 2 GiB Arbeitsspeicher. Es gibt keine anderen Pods und keine Systemreservierungen. Wie viele Pods können höchstens auf diesem Node platziert werden?
  5. Es wird ein verwalteter Datenbankdienst in der Cloud genutzt (ein Dienst, bei dem der Anbieter die Datenbanksoftware betreibt). Was bleibt nach dem Modell der geteilten Verantwortung im Allgemeinen in der Verantwortung des Nutzers?