Увеличить порог запуска для контейнера k8s в v1.12
Следуя приведенной здесь документации, я мог бы установить порог для запуска контейнера следующим образом:
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
К сожалению, похоже startupProbe.failureThreshold
не совместим с нашей текущей версией k8s (1.12.1):
unknown field "startupProbe" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false
Есть ли обходной путь для этого? Я хотел бы дать контейнеру шанс на запуск ~40+ минут.
3 ответа
Да, startupProbe
был представлен в версии 1.16, поэтому вы не можете использовать его с Kubernetes 1.12.
Я предполагаю, что вы определяете livenessProbe
- поэтому самый простой способ обойти проблему - удалить livenessProbe
. Большинству приложений он не понадобится (некоторым даже не понадобитсяreadinessProbe
). См. Также эту отличную статью: Зонды живучести опасны.
Я знаю, что это не ответ на этот вопрос, но может быть полезно ...
"startupProbes" поставляется с k8s 1.16+.
Если вы подаете в суд на helm, вы можете окружить свой блок startupProbes следующим образом:
{{- if (semverCompare ">=1.16-0" .Capabilities.KubeVersion.GitVersion) }}
startupProbe:
httpGet:
path: /healthz
port: liveness-port
failureThreshold: 30
periodSeconds: 10
{{- end }}
Если у вас есть зонд, вы можете указать initialDelaySeconds
и сделайте для него какое-нибудь большое значение, достаточное для запуска вашего контейнера.
Если вам вообще не нужны зонды, то вы можете просто позволить ему выполнить команду, которая никогда не завершится ошибкой, например whoami
Возьмите то, что вам нужно, из приведенного ниже примера:
readinessProbe:
exec:
command:
- whoami
initialDelaySeconds: 2400
periodSeconds: 5
Вы можете сделать такую же конфигурацию для livenessProbe
если он вам нужен.