Size: a a a

2019 December 01

N

Nklya in K8Spb
Andrey Afoninskiy
клево, завидую вам, металистам :)
в гугле когда ты хочешь обновить версию он последовательно дрейнит и уничтожает по одной ноде заменяя новой (по крайней мере раньше так было, может сейчас улучшили)
мало того что процесс этот небыстрый, дак еще возникают косяки

к примеру, ты маленький стартап с 3 нодами на продакшне, и ты используешь ha redis sentinel (никогда не используйте редис в облаках, а лучше вообще его не используйте) - для этого ты прописал антиаффинити и у тебя 3 инстанса размазались по 3м нодам, все красиво

однако скедулер использует правила антиаффинити только когда надо под куда-то запихнуть, и никак его не контролирует дальше

что происходит когда обновление убивает ноду A? скедулер перекидывает инстанс редиса на B или C с вероятностью 50%
что происходит когда обновление убивает ноду B? скедулер перекидывает оба инстанса редиса на A или C

понятно что я описал вырожденый случай (никто не держит только 3 ноды, никто не поднимает ha кластер с кворумом из 3, можно прописать hard antiaffinity вместо soft, выкинуть редис и использовать нормальную базу, и тп), но идея в целом в том что сложно предсказать как себя поведет кластер redis - соберется ли он снова, не потеряет ли данные, это как игра в рулетку, ибо ты не застрахован от того что все или необходимые для кворума поды скопятся в одном месте

поэтому я еще использовал сервис (не помню названия, куча их) который по расписанию запускался, проверял antiaffinity и контролируемо убивал поды заставляя скедулер периодически подскедуливать :)
Почему просто не юзать https://cloud.google.com/memorystore/
Нахера костылить свой редис?
источник

A

Andrey Afoninskiy in K8Spb
я редис как пример привел демонстрирующий идею, да и не всегда вы можете выбирать базу данных которую будете мантейнить :)
источник

MF

Maxim Filatov in K8Spb
Ну вот какбэ да - конкретная технология может быть требованием разработки, и хер ты куда денешься
источник

MF

Maxim Filatov in K8Spb
А required affinity ты не использовал потому что слишком долго ноды пересоздавались, и кворум успевал развалиться?
источник

A

Andrey Afoninskiy in K8Spb
required during scheduling имеешь ввиду? ну да, толку от него
источник

A

Andrey Afoninskiy in K8Spb
с тем же успехом можно daemonset запустить :)
источник

MF

Maxim Filatov in K8Spb
Ну я к тому, что он будет аншедулед, пока новая нода не поднимется
источник

MF

Maxim Filatov in K8Spb
И ни к кому не присоседится
источник

A

Andrey Afoninskiy in K8Spb
я наверно неудачный пример привел с 3 нодами, в большинстве случаев при скедулинге _есть_ места куда жопу поду прислонить (например, откуда мы знаем что ноду не вышибло из-за уборщицы, и она вернется через 10 минут? не факт), идея была в том что просто условия периодически меняются и поэтому скедулеру надо помогать чуток
источник

MF

Maxim Filatov in K8Spb
Ну тогда мы снова возвращаемся к динамическому ребалансу :)
источник

PK

Pavel Khritonenko in K8Spb
Andrey Afoninskiy
клево, завидую вам, металистам :)
в гугле когда ты хочешь обновить версию он последовательно дрейнит и уничтожает по одной ноде заменяя новой (по крайней мере раньше так было, может сейчас улучшили)
мало того что процесс этот небыстрый, дак еще возникают косяки

к примеру, ты маленький стартап с 3 нодами на продакшне, и ты используешь ha redis sentinel (никогда не используйте редис в облаках, а лучше вообще его не используйте) - для этого ты прописал антиаффинити и у тебя 3 инстанса размазались по 3м нодам, все красиво

однако скедулер использует правила антиаффинити только когда надо под куда-то запихнуть, и никак его не контролирует дальше

что происходит когда обновление убивает ноду A? скедулер перекидывает инстанс редиса на B или C с вероятностью 50%
что происходит когда обновление убивает ноду B? скедулер перекидывает оба инстанса редиса на A или C

понятно что я описал вырожденый случай (никто не держит только 3 ноды, никто не поднимает ha кластер с кворумом из 3, можно прописать hard antiaffinity вместо soft, выкинуть редис и использовать нормальную базу, и тп), но идея в целом в том что сложно предсказать как себя поведет кластер redis - соберется ли он снова, не потеряет ли данные, это как игра в рулетку, ибо ты не застрахован от того что все или необходимые для кворума поды скопятся в одном месте

поэтому я еще использовал сервис (не помню названия, куча их) который по расписанию запускался, проверял antiaffinity и контролируемо убивал поды заставляя скедулер периодически подскедуливать :)
Ну про редис неправда, прописывается PDB и оно выкидывает по одному по готовности.
источник

A

Andrey Afoninskiy in K8Spb
pod disruption budget несомненно тебе поможет когда приходит время решать кого эвиктить, но он не спасает когда все поды на одной ноде как в нашем случае - он другие задачи решает (я уж молчу о том что рано или поздно твои pdb начнут перекрываться и мешать друг другу когда тебе надо ноду задрейнить) ... не то чтобы я накидываю, просто отвечаю на вопрос сори :)
источник

РО

Рулон Обоев in K8Spb
Чот не видать. В ЦС чтоли?
источник

Н

НерВ in K8Spb
Рулон Обоев
Чот не видать. В ЦС чтоли?
чот я наклюкался. прошу прощения
источник
2019 December 02

EP

Eugene Pestov in K8Spb
"Услышал" на подкасте: service mess architecture
источник

EP

Eugene Pestov in K8Spb
Очень популярный паттерн
источник

G

GithubReleases in K8Spb
kubernetes-incubator/cri-o tagged: v1.13.11: version 1.13.11
Link: https://github.com/cri-o/cri-o/releases/tag/v1.13.11
Release notes:
Signed-off-by: Peter Hunt [pehunt@redhat.com](mailto:pehunt@redhat.com)
источник

G

GithubReleases in K8Spb
kubernetes-incubator/cri-o tagged: v1.13.11
Link: https://github.com/cri-o/cri-o/releases/tag/v1.13.11
Release notes:
CRI-O 1.13.11

Welcome to the v1.13.11 release of CRI-O!

Please try out the release binaries and report any issues at  

[https://github.com/cri-o/cri-o/issues](https://github.com/cri-o/cri-o/issues).

### Contributors

*   Peter Hunt
*   Mrunal Pat...
More
источник

ZD

Zloy-Dobriy Dead☠️ in K8Spb
Здрась
источник

GR

Gleb Rusakov in K8Spb
хало
источник