Нашите pods докладват, че са здрави, но не могат да обслужват трафик. Как така?

Проверката за здраве:

livenessProbe:
                                    httpGet:
                                    path: /health
                                    port: 8080

Handler-ът:

@GetMapping("/health")
                                    public String health() {
                                    return "OK";  // Винаги връща OK
                                    }

Проблемът:

  • Приложението стартира, връща "OK"
  • Връзката с базата данни пропада
  • Кешът е недостъпен
  • Външен API timeout
  • Но проверка за здраве: "OK" ✅

По-добрият подход:

@GetMapping("/health/ready")
                                    public ResponseEntity<HealthStatus> readiness() {
                                    boolean dbOk = checkDatabase();
                                    boolean cacheOk = checkCache();
                                    if (dbOk && cacheOk) {
                                    return ResponseEntity.ok(status);
                                    }
                                    return ResponseEntity.status(503).body(status);
                                    }

Урок: Проверка за здраве, която не проверява здравето, е по-лоша от никаква проверка.


← Назад към Научени Уроци