Гарантийное оформление preStop в Куберне - PullRequest
0 голосов
/ 06 июня 2018

У меня задание выглядит следующим образом:

apiVersion: batch/v1
kind: Job
metadata:
  name: abcd-ca-installer-root
  namespace: abcd-sbenv-test
spec:
  backoffLimit: 2
  activeDeadlineSeconds: 30
  template:
    metadata:
      name: abcd-ca-installer-root
    spec:
      restartPolicy: Never
      activeDeadlineSeconds: 30
      containers:
      - name: abcd-ca-installer-root
        image: abc-dol-tools:5000/abcd-ca-installer:func-tst
        lifecycle:
         preStop:
          exec:
            command: ["/bin/sh", "/usr/local/yezdi/clean.sh"]
        imagePullPolicy: Always
        env:
...

в принципе, я хотел бы, чтобы clean.sh выполнялся после успешного выполнения этого задания.Я настроил preStop выше, но, похоже, он не выполняет clean.sh. Есть идеи, почему?или как я могу знать, если это даже пытается запустить.Я видел этот пост, но он не помог. другой связанный вопрос

Другая информация о версии, которую я использую:

# kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:55:54Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

docker --version
Docker version 17.12.1-ce, build 7390fc6

kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.2", GitCommit:"81753b10df112992bf51bbc2c2f85208aad78335", GitTreeState:"clean", BuildDate:"2018-04-27T09:10:24Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

1 Ответ

0 голосов
/ 07 июня 2018

Каждый контейнер имеет свой жизненный цикл.Вы можете управлять процессом завершения с помощью Lifecycle Hooks.

Я посмотрел предоставленную вами конфигурацию.PreStop работает не так, как вы ожидаете.

Хук PreStop вызывается непосредственно перед контейнером terminated, а не тогда, когда контейнер завершает жизненный цикл.Это блокировка, то есть синхронная, поэтому она должна быть завершена до того, как будет отправлен вызов для удаления контейнера.В обработчик не передаются никакие параметры.

Вы можете использовать сценарий оболочки или вызвать http-запрос во время запуска перехвата PreStop.

Я нахожу Kubernetes Завершение стручков документация, полезная для этого случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...