Anonymous
А подскажите, какой best practice для решения задачи отправки почты из подов?
Anton
best practices, всякие неочевидные штуки вроде того, что pvc можно при живом поде удалить))
в Azure Containers (Managed) при этом Pod продолжит работать и данные ему будут доступны... 😁
Anton
Доброе утро! какой командой лучше всего достать имя пода с определённым лейблом? использовать awk, или у kubectl есть встроенные средства?
можешь REST API дергнуть, с теми же селекторами что доступны в kubectl, это если тебе изнутри Pod-а узнать нужно, в момент поднятия контейнера, например
Andor
Each Pod in a StatefulSet derives its hostname from the name of the StatefulSet and the ordinal of the Pod. The pattern for the constructed hostname is $(statefulset name)-$(ordinal)
мне пофигу на хостнеймы внутри подов, мне надо чтобы поды друг друга могли видеть
Andor
и всё равно не работает
Alexey
Да, всем спасибо, уже всего добился) странный чатик, вначале обосрут за вопрос, потом когда всё сделал начинают помогать)
Anton
только щас прочитал
Anton
никак не могу добиться, чтобы контейнер, который запускает sleep 3600 не висел 30 секунд после kubectl delete deploy. Уже и TERM ловил, и в бэграунде запускал с wait, всеравно висит 30 секунд. Что можно еще сделать?
Alexey
"terminationGracePeriodSeconds": 30, менял?
Anton
вот как раз пишу, чтобы желательно без этого
Anton
я хочу, чтобы контейнер нормально завершил работу, а не был зверски убит
Alexey
так если он умирает ровно через 30 секунд, значит он зверски убит через 30 секунд, а не завершился
Anton
конечно, вот это мне и нужно пофиксить
Салтыдык
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. Тогда хз.
G72K
ну вообще да, просто sleep, но с exec я тоже пробовал (возможно как-то не так пробовал)
проверьте ps axf, там во контейнере должен быть 1 процесс только (помимо вашего kubectl exec которым вы ps запускаете)
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 и без)
Alexey
Нет, я вообще, часто такое замечал)
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
с sleep дурацкий пример на самом деле, да и слип какую проблему решает? *создает*
проблему сна. Мне нужно, чтобы контейнер ничего не делал, но был там.
Anton
и по term сделал что то?
Anton
завершил работу
Anton
https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/
Anton
может тут лучше
Anton
PreStop hook
Салтыдык
а не проще написать уже на любом языке, который позволяет кэтчить sigterm\sigkill?
Anton
а то какая то своя реализация того, что уже есть
Anton
а то какая то своя реализация того, что уже есть
https://github.com/kubernetes/kubernetes/blob/master/build/pause/pause.c
Anton
я не хочу поддерживать этот (такой) си код
G72K
только что проверил, /bin/sleep нормально выходит по SIGTERM
Anton
код в /bin/sleep привычнее, согласен. мы давно его уже знаем и привыкли к нему =)
Сергей
Салтыдык
только что проверил, /bin/sleep нормально выходит по SIGTERM
зависит наверное ещё от дистрибутива, в котором этот sleep
Anton
PreStop hook
не очень понятно, как именно решается проблема моя
Anton
я не хочу поддерживать этот (такой) си код
ты хочешь команду при остановке. вот тебе hook на остановку
Anton
я не хочу команду при остановке
G72K
почему же 30 секунд?
я не знаю, но что-то не работает как надо.
Anton
я не знаю, но что-то не работает как надо.
а можно вас попросить попробовать у себя с alpine?
Anton
или это какая то система засигналить процессу "делай" без использования mq?
Anton
или это какая то система засигналить процессу "делай" без использования mq?
это просто контейнер, который должен ничего не делать
Anton
while true; do sleep 3600; done меня устраивает на 100% если бы не 30 секундное ожидание до килла
Anton
while sleep 3600; do wat?; done
Vadim
почему бы не взять готовый `k8s.gcr.io/pause`? Там весь сишный код уже написан
Anton
мне кажется что внутри bash сценарий никто не отправит в sleep сигнал
Anton
если только trap не описать
Anton
который будет pkill -f sleep костылять
Anton
ну или в trap описать что нужно таки сделать. для меня все еще непонятно зачем это нужно. или раз в 3600сек выполнить задачу или при остановке?
Anton
так ведь случай другой, там идея sleep N; dosomething но я хз
Anton
dosomething — не надо
Andor
короче, я хочу странного
Andor
хочу дать доступ приложению в кубере править 1 конфигмап другого приложения
Andor
как это сделать?
Vadim
создай новую роль, в ней resourceNames: ["my-configmap"]
Andor
ну вощем это не сильно странное, так?
Andor
и даже есть нормальные стандартные пути как сделать это