Делятся на:
- предстартовые
- постстартовые
Могут выполнять:
- HTTP GET
- Команду внутри контейнера
Постстартовый
Выполняется сразу после запуска контейнера и используется для выполнения дополнительных команд при запуске приложения, если мы не можем или не хотим влиять на приложение.
Пока обработчик не завершится, контейнер будет в состоянии Waiting с причиной ContainterCreating, а статус пода будет Pending.
Если обработчик не выполнится или вернёт не нулевой код завершения, то контейнер будет уничтожен.
apiVersion: v1 kind: Pod metadata: name: pod-with-poststart-hook spec: containers: - image: luksa/kubia name: kubia ports: - containerPort: 8080 protocol: TCP lifecycle: postStart: httpGet: port: 9090 path: postStart
Тут мы получим ошибку
Warning FailedPostStartHook 41m (x3 over 42m) kubelet, minikube Exec lifecycle hook ([sh -c echo 'hook will fail with exit code 15'; sleep 5 ; exit 15]) for Container "kubia" in Pod "pod-with-poststart-hook_default(4214a4bb-6c06-11e9-808e-0800272505f7)" failed - error: command 'sh -c echo 'hook will fail with exit code 15'; sleep 5 ; exit 15' exited with 15: , message: "hook will fail with exit code 15\n"
Предостановочный обработчик
Прежде чем контейнер будет завершён, выполнится обрааботчик и будет отправлен sigterm процессу
apiVersion: v1 kind: Pod metadata: name: pod-with-prestop-hook spec: containers: - image: luksa/kubia name: kubia ports: - containerPort: 8080 protocol: TCP lifecycle: preStop: httpGet: port: 8080 path: shutdown
Результат предостановочного обработчика не имеет значения, он будет завершен в любом случае
0 Comment