Как сделать так, чтобы модуль k8s сам выходил из основного контейнера? - PullRequest
0 голосов
/ 25 сентября 2019

Я использую шаблон дополнительной карты для модуля k8s, внутри которого есть два контейнера: основной контейнер и контейнер с коляской.Я хотел бы, чтобы статус модуля зависел только от основного контейнера (скажем, если основной контейнер не был выполнен / завершен, модуль должен находиться в том же состоянии) и отбросить контейнер с дополнительной картой.

Есть ли элегантный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Согласно документации :

Модуль работает и имеет два контейнера.Контейнер 1 завершается с ошибкой.

Журнал событий отказа.

Если restartPolicy равен:

  • Всегда : перезапустить контейнер;Под фаза остается Бег .
  • OnFailure : перезапустить контейнер;Фаза фазы остается Работает .
  • Никогда : Не перезапускать контейнер;Фаза фазы остается Работает .

Если Контейнер 1 не запущен, и Контейнер 2 выходит:

Записать событие сбоя.

Если restartPolicyis:

  • Always : перезапустить контейнер;Под фаза остается Работает .
  • OnFailure : перезапустить контейнер;Фаза фазы остается Работает .
  • Никогда : Фаза фазы становится Сбой .

Как обходной путь(частичное решение этой проблемы) с restartPolicy: Никогда - вы можете применить результат проверки живучести из основного контейнера в контейнер с коляской (с использованием exec, http или tcp probe).

Это не хорошее решениепри работе с микросервисами.

пример:

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness1
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /test-pd/healthy; sleep 30; rm -rf /test-pd/healthy; sleep 30
    livenessProbe:
      exec:
        command:
        - cat
        - /test-pd/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  - name: liveness2
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - sleep 120
    livenessProbe:
      exec:
        command:
        - cat
        - /test-pd2/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    volumeMounts:
    - mountPath: /test-pd2
      name: test-volume
  restartPolicy: Never
  volumes:
  - name: test-volume
    hostPath:
      # directory location on host
      path: /data
      type: Directory

Пожалуйста, дайте мне знать, если это помогло.

0 голосов
/ 25 сентября 2019

К сожалению, флаг restartPolicy применяется ко всем контейнерам в модуле, поэтому простое решение на самом деле не сработает.Вы уверены, что ваша логика не должна быть в initContainer, а не в коляске?Если это действительно должен быть коляской, оставьте его спать навсегда в конце вашей логики.

...