Михаил
𝚔𝚟𝚊𝚙𝚜
а если не умерла?
𝚔𝚟𝚊𝚙𝚜
если на ней просто kubelet отвалился или сеть
𝚔𝚟𝚊𝚙𝚜
stateless приложение переедет
𝚔𝚟𝚊𝚙𝚜
а для stateful подобного рода костыли нужны
Михаил
𝚔𝚟𝚊𝚙𝚜
ага, но как?
Михаил
ага, но как?
Ну Так ты же написал - через api убиваем unknow
Igor
но я не понимаю, как он его обрабатывает, и откуда писатель этого кода взял структуру, которую можно отправлять в dm
https://cloud.google.com/deployment-manager/docs/configuration/templates/create-template-modules
Я думаю там участвует обвязка из темплейтов плагинов и еще кучи интересного
https://github.com/GoogleCloudPlatform/deploymentmanager-samples/blob/b941d1f9b70390d0693d030cfc26843c75b3e165/tools/scheduled-deployments/functions/test/schedule_test.js
Думаю прийдется покапаться в этой репе https://github.com/GoogleCloudPlatform/deploymentmanager-samples
Но это все вам нужно только если нужен питон. Да и я не очень понимаю причем тут кубер
𝚔𝚟𝚊𝚙𝚜
𝚔𝚟𝚊𝚙𝚜
если ты убьешь их просто через куб, это не будет гарантировать что где-то там они прекратили выполняться
𝚔𝚟𝚊𝚙𝚜
по этому и нужен fencing
сначала убиваем ноду, уже только потом убиваем ресурсы в k8s
Михаил
Andor
Чтобы случайно не ожила
𝚔𝚟𝚊𝚙𝚜
да, все так
Andrey
𝚔𝚟𝚊𝚙𝚜
кстати softdog - вполне годный метод основанный на таймаутах, к тому же не требующий внешних fencing-агентов, вот его и можно было бы запилить в сам куб
Andrey
𝚔𝚟𝚊𝚙𝚜
Типа запилить следующий функционал прямо в kubelet:
- после каждого успешного общения с мастером выполнять что-то типа echo 1 > /dev/watchdog
- а в случае неудачи, нода ребутнется сама по таймауту
- кубернетес мастер знает про этот таймаут и если нода NotReady больше чем определенное время, значит она гарантированно мертва и ее ресурсы можно решедулить
𝚔𝚟𝚊𝚙𝚜
вот правда будет весело если умрет мастер :)
𝚔𝚟𝚊𝚙𝚜
так что, полагаю, что внешний fencing в любом случае будет работать лучше, а для реализации этого нужно дергать различные fencing-агенты, т.к. оборудование у всех разное, и куб не обязан это все поддерживать
Михаил
𝚔𝚟𝚊𝚙𝚜
вот и я говорю
𝚔𝚟𝚊𝚙𝚜
хотя можно было бы придумать какой-нибудь fencing api
Andor
Опять пейсмейкер?
𝚔𝚟𝚊𝚙𝚜
да ну не
Andor
:)
Михаил
𝚔𝚟𝚊𝚙𝚜
просто нужна еще одна абстракция для куба, как provisioner только для fencing
𝚔𝚟𝚊𝚙𝚜
Что по твоему должно произойти если ты просто остановишь kubelet на ноде где он выполняется?
Михаил
Anton
𝚔𝚟𝚊𝚙𝚜
Ну да, более того, он продолжит выполняться на ноде, при этом куб не знает выполняется он или нет.
Если такой под просто удалить из API, куб его пересоздаст на другой ноде, подключит и смаунтит тот же iscsi-volume, при этом в лучшем случае под не заведется, в худшем заведется и ты получишь поврежденную фс на волуме. Так как она смонтирована на нескольких физически разных нодах.
𝚔𝚟𝚊𝚙𝚜
допустим куб перезапускает такой под на другой ноде, при этом не до конца убедившись что старый однозначно мертв. а через какое-то время восстанавливется подключение к стораджу на прежней ноде, i/o продолжается исход такой-же: поврежденная фс и даннные на ней
Михаил
Михаил
Ну или не использовать stateful в кубе)
Михаил
Точнее PV
𝚔𝚟𝚊𝚙𝚜
ну есть еще вариант отрезать ноду от стораджа, но это работет немного хуже, т.к. оставляет ноду в непонятном состоянии
Artem
Как считаете, Kubernetes как гипервизор на kvm это бред или рацианальное зерно в этом есть?
𝚔𝚟𝚊𝚙𝚜
я деплою opennebula с помощью куба
Vadim
Михаил
Михаил
И больше похоже на refrence архитектуру для своего проекта)
𝚔𝚟𝚊𝚙𝚜
Ну или не использовать stateful в кубе)
на самом деле все отлично работает когда все pv локальные, и не должны переезжать если нода упадет.
а каждое stateful-приложение имеет несколько инстансов и redundancy на уровне приложения
𝚔𝚟𝚊𝚙𝚜
по сути любая база данных с поддержкой репликации
Михаил
Михаил
Или как его там
𝚔𝚟𝚊𝚙𝚜
сейчас local volumes изобрели спецом для этого
𝚔𝚟𝚊𝚙𝚜
но я не вижу особой разницы с hostpath, тем более что nodeAffinity прекрассно работает и для тех и для других волумов
Михаил
Кейс: маленькая бд
Михаил
кстати
Михаил
https://github.com/rancher/longhorn
Михаил
кто-то юзал?
Konstantin
А он разве не рип?
Михаил
да вроде не
Михаил
𝚔𝚟𝚊𝚙𝚜
И его логичное продолжение
𝚔𝚟𝚊𝚙𝚜
Но я бы больше в сторону Linstor посмотрел бы ес честно
Михаил
Михаил
𝚔𝚟𝚊𝚙𝚜
Потому что использует меньше компонентов которые могут сломаться,
𝚔𝚟𝚊𝚙𝚜
+ я сейчас активно использую drbd и доволен им как слон
𝚔𝚟𝚊𝚙𝚜
Кстати ISTGT который они используют ваще бомба!
Andor
linstor это ж drbd?
𝚔𝚟𝚊𝚙𝚜
Andor
уж лучше с сефом потрахаться
𝚔𝚟𝚊𝚙𝚜
Оркестратор
Михаил
Anton
𝚔𝚟𝚊𝚙𝚜
Оно и правильно, имхо: если приложение умеет ha и репликацию своими силами, это всегда лучше чем кластерная фс
Andor
да фс-то обычно и не нужна, нужен обжект-сторейж
Andor
если тебе нужна именно фс размерами в десятки-сотни терабайт, то у тебя что-то скорее всего не так
Anton
Не сотни тб, но под mq, redis, mysql сторейдж нужен быстрый, легко пару тб набирается