Использование python manage.py migrate --check в kubernetes readinessProbe никогда не приводит к успеху

У меня есть развертывание django на кластере kubernetes, и в readinessProbe я выполняю команду python manage.py migrate --check. Я вижу, что возвращаемое значение этой команды равно 0, но pod так и не становится готовым.

Фрагмент моего развертывания:

      containers:                                                                             
        - name: myapp                                                                      
          ...
          imagePullPolicy: Always                                                             
          readinessProbe:                                                                     
            exec:                                                                             
              command: ["python", "manage.py", "migrate", "--check"]                          
            initialDelaySeconds: 15                                                           
            periodSeconds: 5  

Когда я описываю капсулу, которая еще не готова:

Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  66s                default-scheduler  Successfully assigned ...  Normal   Pulled     66s                kubelet            Successfully pulled image ...
  Normal   Created    66s                kubelet            Created container ...
  Normal   Started    66s                kubelet            Started container ...
  Warning  Unhealthy  5s (x10 over 50s)  kubelet            Readiness probe failed:

Я вижу, что migrate --check возвращает 0, выполняя в контейнере, который все еще находится в состоянии неготовности и запущен

python manage.py migrate
echo $?
0

Есть ли что-то неправильное в моей команде exec, переданной как readinessProbe?

Решением проблемы является увеличение параметра timeoutSeconds, который по умолчанию установлен на 1 секунду:

  • timeoutSeconds: Количество секунд, после которого зонд отключается. По умолчанию 1 секунда. Минимальное значение - 1.
  • .

После увеличения параметра timeoutSeconds приложение способно пройти зонд готовности.

Пример фрагмента развертывания с параметром timeoutSeconds, установленным на 5:

      containers:                                                                             
        - name: myapp                                                                      
          ...
          imagePullPolicy: Always                                                             
          readinessProbe:                                                                     
            exec:                                                                             
              command: ["python", "manage.py", "migrate", "--check"]                          
            initialDelaySeconds: 15                                                           
            periodSeconds: 5
            timeoutSeconds: 5
Вернуться на верх