Anonymous
А подскажите, какой best practice для решения задачи отправки почты из подов?
Andor
Andor
и всё равно не работает
Anton
Alexey
Да, всем спасибо, уже всего добился)
странный чатик, вначале обосрут за вопрос, потом когда всё сделал начинают помогать)
Anton
только щас прочитал
Anton
никак не могу добиться, чтобы контейнер, который запускает sleep 3600 не висел 30 секунд после kubectl delete deploy. Уже и TERM ловил, и в бэграунде запускал с wait, всеравно висит 30 секунд. Что можно еще сделать?
Alexey
"terminationGracePeriodSeconds": 30, менял?
Anton
вот как раз пишу, чтобы желательно без этого
Anton
я хочу, чтобы контейнер нормально завершил работу, а не был зверски убит
Alexey
так если он умирает ровно через 30 секунд, значит он зверски убит через 30 секунд, а не завершился
Anton
конечно, вот это мне и нужно пофиксить
G72K
Салтыдык
When a user requests deletion of a pod the system records the intended grace period before the pod is allowed to be forcefully killed, and a TERM signal is sent to the main process in each container. Once the grace period has expired the KILL signal is sent to those processes and the pod is then deleted from the API server.
Anton
ну вообще да, просто sleep, но с exec я тоже пробовал (возможно как-то не так пробовал)
Салтыдык
если команда не хэндлит SIGTERM, то никак (только зверски)
Салтыдык
а, вижу про TERM. Тогда хз.
Alexey
вангую sleep отдельным процессом висит
Anton
1 root 0:00 sleep 3600
Anton
kubectl run b --image=alpine --command -- sh -c "exec sleep 3600"
Anton
а, вижу про TERM. Тогда хз.
в смысле я то TERM ловил, но sleep его то всеравно похоже не ловит, и если он ушел на час, непонятно как до него достучаться. Я нагугливал что-то такое:
sleep 3600 &
waitмол wait провалится как только сигнал получит
G72K
да должен sleep ловить sigterm, точно должен
G72K
что-то не так
Anton
а зачем тогда exec?
G72K
чтобы остался только 1 )
Anton
$ kubectl run b --image=alpine --command -- sleep 3600
$ kubectl exec b-856d97c674-pzt4c -- ps aux
PID USER TIME COMMAND
1 root 0:00 sleep 3600вообще разницы не вижу (c exec и без)
Anton
Alexey
Нет, я вообще, часто такое замечал)
G72K
Anton
а как же нужно?
Andrei
Ребят, а есть у кого kubernetes up and running?
Anton
а как же нужно?
видимо sh -c 'exec sleep 3600'
у тебя pid 1 будет sh без exec. sleep не получит сигнал
Anton
а если exec - то sleep будет pid 1 и получит сигнал. докер ж только этому процессу сигнализирует
Anton
с sleep дурацкий пример на самом деле, да и слип какую проблему решает? *создает*
Anton
Anton
Anton
и по term сделал что то?
Anton
завершил работу
Anton
https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
Anton
может тут лучше
Anton
PreStop hook
Салтыдык
а не проще написать уже на любом языке, который позволяет кэтчить sigterm\sigkill?
Anton
а то какая то своя реализация того, что уже есть
Anton
Anton
я не хочу поддерживать этот (такой) си код
G72K
только что проверил, /bin/sleep нормально выходит по SIGTERM
Anton
код в /bin/sleep привычнее, согласен. мы давно его уже знаем и привыкли к нему =)
Сергей
Салтыдык
Anton
Anton
PreStop hook
не очень понятно, как именно решается проблема моя
Anton
я не хочу команду при остановке
Anton
или это какая то система засигналить процессу "делай" без использования mq?
Anton
Anton
while true; do sleep 3600; done меня устраивает на 100% если бы не 30 секундное ожидание до килла
Anton
while sleep 3600; do wat?; done
G72K
Vadim
почему бы не взять готовый `k8s.gcr.io/pause`? Там весь сишный код уже написан
Салтыдык
G72K
Anton
мне кажется что внутри bash сценарий никто не отправит в sleep сигнал
Anton
если только trap не описать
Anton
который будет pkill -f sleep костылять
Anton
ну или в trap описать что нужно таки сделать. для меня все еще непонятно зачем это нужно. или раз в 3600сек выполнить задачу или при остановке?
G72K
Anton
так ведь случай другой, там идея sleep N; dosomething
но я хз
Anton
dosomething — не надо
Andor
короче, я хочу странного
Andor
хочу дать доступ приложению в кубере править 1 конфигмап другого приложения
Andor
как это сделать?
Vadim
создай новую роль, в ней resourceNames: ["my-configmap"]
Andor
ну вощем это не сильно странное, так?
Andor
и даже есть нормальные стандартные пути как сделать это