Использование 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