apply_config роли вызываются несколько раз в секунду.
В логах оператора нашёл (судя по всему, это приводит к наблюдаемому поведению):
{"level":"info","ts":1699955631.5840652,"logger":"controller_cluster","msg":"Update replicaset roles","Request.Namespace":"my-custom-namespace","Request.Name":"oms","id":"74abb4e2-0e1b-5f7e-a451-b044245f3cd8","from":["vshard-router","my-custom-role"],"to":["my-custom-role"]}
{"level":"info","ts":1699955631.584074,"logger":"topology","msg":"setting replicaset roles","namespace":"topology.builtin","uuid":"74abb4e2-0e1b-5f7e-a451-b044245f3cd8","weight":["my-custom-role"]}
При этом в логах соответствующего инстанса каждый раз валидируются и применяются конфиги следующих ролей:
- ddl-manager
- vshard-router
- metrics
- my-custom-role
Роли после старта кластера меняться не должны (как мне кажется), репликасет, упомянутый в логах оператора, выполняет роль vshard-router.
В какую сторону стоит копнуть?
Проблема проявляется на следующем сочетании версий: tarantool 2.11.1, cartridge 2.8.3, tarantool k8s operator 0.0.9.
P.S. "weight":["my-custom-role"] в логах оператора, видимо, содержит опечатку - это не "weight", это "roles"
P.P.S. кажется, нужно смотреть на аннотации в k8s, в частности на "tarantool.io/rolesToAssign" - пошёл смотреть)
Получается, надо модифицировать стейтфул сет, создаваемый оператором, либо свой пилить?
Если интересно, проблема была в следующем: tarantool (скорее даже cartridge) где-то между старой и новой версиями, которые мы использовали, начал оператору отдавать в наборе ролей роль в vshard (vshard-storage или vshard-router), чего раньше не делал. Оператор этот набор сравнивает с набором из файла values, и если они не совпадают, происходит переконфигурирование cartridge кластера. Проблема решилась добавлением в файле values соответствующим репликасетам их роли в vshard.
Обсуждают сегодня