Почему kubernetes сообщает «сбой проверки готовности» и «сбой проверки готовности» - PullRequest
0 голосов
/ 07 октября 2019

У меня есть рабочее развертывание моего приложения в Kubernetes.

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  ...
  template:
    ...
    spec:
      containers:
      - name: my-app
        image: my-image
        ...
        readinessProbe:
          httpGet:
            port: 3000
            path: /
        livenessProbe:
          httpGet:
            port: 3000
            path: /

Когда я применяю свое развертывание, я вижу, что оно работает правильно, и приложение отвечает на мои запросы.

$ kubectl describe pod -l app=my-app

...
Events:
  Type    Reason     Age   From                                  Message
  ----    ------     ----  ----                                  -------
  Normal  Scheduled  4m7s  default-scheduler                     Successfully assigned XXX
  Normal  Pulled     4m5s  kubelet, pool-standard-4gb-2cpu-b9vc  Container image "my-app" already present on machine
  Normal  Created    4m5s  kubelet, pool-standard-4gb-2cpu-b9vc  Created container my-app
  Normal  Started    4m5s  kubelet, pool-standard-4gb-2cpu-b9vc  Started container my-app

Приложение имеет дефект и вылетает при определенных обстоятельствах. Я «вызываю» такое условие и затем вижу следующее в событиях pod:

$ kubectl describe pod -l app=my-app

...
Events:
  Type     Reason     Age               From                                  Message
  ----     ------     ----              ----                                  -------
  Normal   Scheduled  6m45s             default-scheduler                     Successfully assigned XXX
  Normal   Pulled     6m43s             kubelet, pool-standard-4gb-2cpu-b9vc  Container image "my-app" already present on machine
  Normal   Created    6m43s             kubelet, pool-standard-4gb-2cpu-b9vc  Created container my-app
  Normal   Started    6m43s             kubelet, pool-standard-4gb-2cpu-b9vc  Started container my-app
  Warning  Unhealthy  9s                kubelet, pool-standard-4gb-2cpu-b9vc  Readiness probe failed: Get http://10.244.2.14:3000/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
  Warning  Unhealthy  4s (x3 over 14s)  kubelet, pool-standard-4gb-2cpu-b9vc  Liveness probe failed: Get http://10.244.2.14:3000/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
  Normal   Killing    4s                kubelet, pool-standard-4gb-2cpu-b9vc  Container crawler failed liveness probe, will be restarted

Ожидается, что сбой датчика жизнеспособности и контейнер перезапущен. Но почему я вижу Readiness probe failed событие?

Ответы [ 4 ]

1 голос
/ 08 октября 2019

Как пишет @suren в комментарии, проверка готовности все еще выполняется после запуска контейнера. Таким образом, если определены датчики как живучести, так и готовности (а также fx они одинаковы), то и тест готовности, и тест живучести могут потерпеть неудачу.

Вот аналогичный вопрос с ясным подробным ответом .

1 голос
/ 07 октября 2019

Датчик готовности используется для определения того, готов ли контейнер для обслуживания запросов. Ваш контейнер может быть запущен, но не проходит зонд. Если проверка не пройдена, ни один сервис не будет перенаправлен в этот контейнер.

По умолчанию период проверки готовности составляет 10 секунд.

Подробнее можно прочитать здесь: https://docs.openshift.com/container-platform/3.9/dev_guide/application_health.html

0 голосов
/ 07 октября 2019

, пожалуйста, предоставьте функцию / метод реализации в бэкэнде, вы можете создать / health с именем uri и написать здесь логику жизнеспособности, и готовность тоже может быть вашим выбором.

/ health uri, должно быть связано среализация функции, которая может возвращать 200 кодов состояния, если все идет хорошо, иначе это может быть сделано для сбоя

0 голосов
/ 07 октября 2019

Вы настроили одну и ту же проверку на готовность и датчик живучести - поэтому, если проверка живучести не удалась, можно предположить, что и готовность тоже не удалась.

...