Kubernetes обработчики жизненного цикла

Делятся на:

  •  предстартовые
  • постстартовые

Могут выполнять:

  • 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

Результат предостановочного обработчика не имеет значения, он будет завершен в любом случае

K8S

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.