Alexey
но опять - все через буферный менеджер (shared buffers)
Anonymous
говорил, что целиком убили кластер. Убитый мастер не ломает кластер.
ну это мои догадочки по другим вопросам из SO, еще есть надежда что мои сервисы и данные живы
Alexey
Нет, это вопрос целостности внутренних файлов, не про изоляцию на уровне SQL. Даже жуткий READUNCOMMITTED не должен читать полузаписанные страницы индексов
кроме того постгрес это многоверсионник (MVCC) а это еще пачка низкоувроенвых абстракций при работе с данными на уровне транзакций в зависимости от уровней изоляции
G72K
бэкенды пишут в датфайлы довольно в редких случаях, в основном вся запись это WAL и контрольные точки от чекпоинтера (+автовакуум)
Пишет обычно background writer , но вот читают страницы сами процессы и пополняют ими shared buffer , а значит при любом чтении файлов надо брать лок, но допускаю что лок там может и не на ФС, а в shm между процессами чисто джентльменское соглашение
Alexey
я не критикую, так вношу 5 коп.
Alexey
Пишет обычно background writer , но вот читают страницы сами процессы и пополняют ими shared buffer , а значит при любом чтении файлов надо брать лок, но допускаю что лок там может и не на ФС, а в shm между процессами чисто джентльменское соглашение
bgwriter списывает грязные страницы на диск, (некий аналог врайтбека) и восполняет необходимость бэкендов в чистых страницах — причем записи от него не так много на самом деле
Alexey
основная запись это контрольные точки и WAL, говорю как опытный собаковод
Alexey
читают страницы бкенды и наполняют ими шаредные буфера тут согласен, и локи там не на урвоне фс, свои внутренние lwlocks используются
G72K
основная запись это контрольные точки и WAL, говорю как опытный собаковод
Checkpointer? Спутал с bgwriter, думал +- одно и то же. Сабоковод неопытный. Суть не меняет - прежде чем читать страницу по смещению в файле, надо со всеми договориться что туда никто не пишет
Alexey
lwlock используются, если в блок пишут, то читатель подождет
Alexey
есть такая интересная книжка про потроха постгресовые, кому интересно - рекомендую http:// www. interdb.jp/pg/pgsql08.html
Alexey
это глава конкретно про устройство buffer manager
Incognito
https://m.youtube.com/channel/UCawnwMqZ6JeoSiEhrS6X69A
Vladimir
привет, а можно както ingress контрллер заюзать в качестве reverse прокси вообще для сторонних сервисов вне кубернетес?
Rainbow
завести external service
𝚔𝚟𝚊𝚙𝚜
Это не одно и то же :) те ФС со многих хостов писать могут, а в блочное в общем случае нельзя. Корректное сравнение будет какая нибудь репликация ZFS если такая есть :)
Ну ZFS же тоже не кластерная ФС, более чем на одном хосте она одновременно работать не умеет. Репликация есть но крайне простая, zfs send позволяет единократно отправить дельту на другую ноду. Из всех кластерных фс с POSIX-доступом что я пробовал, самой быстрой и стабильной оказалась Lustre. Она умеет в failover, но переклажывает ответственность за репликацию на блочное устройтсво. Теже GFS и OCFS так же требуют расшареннго блочного устройства, предоставляя только возможность распределенных блокировок. Почти все остальные работают в user-space, да они предоставляют возможность репликации средствами самой фс, но это работает либо плохо, либо медленно.
Mikhail [azalio]
что если не helm?
Tadeusz
лол
Sergey
😂
Mikhail [azalio]
наверное это что-то означает, но я не понял
Mikhail [azalio]
у меня сейчас самописная штука
Andor
да возьми ксоннет да попробуй
Mikhail [azalio]
думаю что делать
Mikhail [azalio]
да возьми ксоннет да попробуй
да дофига всего можно попробовать, поэтому и спрашиваю, а не гуглю альтернативы )
𝚔𝚟𝚊𝚙𝚜
наверное это что-то означает, но я не понял
Я использую ksonnet и очень доволен, но по сути это может быть любой тул, который на выходе дает json
Andor
из всего что я видел и пробовал ксоннет самый клёвый
Andor
не без проблем, но клёвый
Alex
а какие вообще есть варианты для темплейтинга кубера без агентов?
Alex
кроме bash и ksonnet )
𝚔𝚟𝚊𝚙𝚜
@azalio ты лучше напиши какие конкретно задачи ты хочешь решить
Alex
тысячи их
а есть какой-нибудь awesome-list для сравнения всего этого? )
𝚔𝚟𝚊𝚙𝚜
была куча статей на эту тему
Alex
https://github.com/kubernetes-sigs/kustomize
спасибо, стоит посмотреть
Mikhail [azalio]
@azalio ты лучше напиши какие конкретно задачи ты хочешь решить
мне надо сделать гайд как поднимать большие кластера кубера с 0. Где описано все. Начиная программист запушил код. Думаю об деплое. В некоторых отделах используется helm. Чтобы его убрать надо чтобы это было обосновано не просто тем, что ксоннет клевый, или ругаются на хельм
Rainbow
Вот свалю с чата и некому будет продвигать envsubst
Alex
envsubst
ну это попадает под ограничение "кроме bash" на мой взгляд
Rainbow
однострочный bash не считается
Mikhail [azalio]
Вот свалю с чата и некому будет продвигать envsubst
да лан, только сегодня его заюзал )
Vadim
а есть какой-нибудь awesome-list для сравнения всего этого? )
https://github.com/ramitsurana/awesome-kubernetes#package-managers ахахахха
Andor
lol
Andor
"package managers"
Vadim
https://github.com/ramitsurana/awesome-kubernetes#configuration, но никакого сравнения там нет (что впрочем логично)
Yaroslav
Вот свалю с чата и некому будет продвигать envsubst
Я вот тоже за envsubst. Да и eval не плох :-)
𝚔𝚟𝚊𝚙𝚜
мне надо сделать гайд как поднимать большие кластера кубера с 0. Где описано все. Начиная программист запушил код. Думаю об деплое. В некоторых отделах используется helm. Чтобы его убрать надо чтобы это было обосновано не просто тем, что ксоннет клевый, или ругаются на хельм
ksonnet удобен тем, что ты можешь декларативно описать параметры для каждого кластера. Им же можно helm-чарты рендерить, но в последнем релизе эта возможность поломана, хотя в master уже пофиксили
Mikhail [azalio]
надо поковырять я понял )
Mikhail [azalio]
плюс надо учитывать порог входа
Rainbow
json подмножество yaml, одна фигня
Mikhail [azalio]
кажется все вокруг знают про хельм
Andor
да попробуй просто
𝚔𝚟𝚊𝚙𝚜
я думал ksonnet это про удобно сгенерить json для куба 😱 так то куча yaml аналогично все опишут.
то есть всё твое приложение состоит из компонентов и глобальных параметров к ним, а ты для каждого кластера просто описываешь что должно измениться, а потом просто делаешь: ks apply cluster1 ks apply cluster2 ...
Mikhail [azalio]
я попробую
Mikhail [azalio]
даже возможно мне понравится
Andor
ленивость жсоннет подкупает
Rainbow
Меня напрягает писать k.deployment.mixin.metadata.labels({foo: "bar"}) вместо { metadata: { labels: { foo: 'bar } } }
Rainbow
В чем смысл?
Andor
ну тебе никто не запрещает написать и так
Rainbow
ну это половина ksonnet, нет? Все эти helpers
𝚔𝚟𝚊𝚙𝚜
но если у тебя один кластер?
Ну тогда в один кластер точно также. Идея в том что каждый инстанс - это отдельный environment, дальше логику любую можно заложить, наприер: ks apply devel/instance1 ks apply prod/instance1 ks apply prod/instance2Где последние два наследуют общие параметры из prod
Andor
В чем смысл?
ну смысл имхо в том, что тебе пофиг на структуру, оно само её знает
Andor
пишешь "хочу вот такую метадату", а не "тут должен быть хешик, в котором список, в которых хешики"
Rainbow
У тебя получается отдельный реп с описанием кластеров? А новые image как прописываются?
Andor
вощем абстракция немношк выше имхо
𝚔𝚟𝚊𝚙𝚜
все стандартные prototypes без k.libsonnet идут
Andor
прелесть k в автогенерации
Rainbow
вощем абстракция немношк выше имхо
да нет там абстракции. Возможно как то проще снипеты писать.
Andor
ну я короче не хочу писать хеши, я хочу писать абстрактно
Andor
если опечатаюсь - мне скажет, что нет такого миксина/функции
Andor
а тебе ничо не скажет, так сожрёт
Andor
если повезёт - сломается в момент применения, когда кубер скажет, что не знает такого апи
Rainbow
ну с таким же успехом можно налету dry run yaml запускать