Maksim
у меня где-то в дальних планах есть задача написать a/b тестирование
Maksim
Maksim
извини что ворпсом на вопрос
Maksim
таки образом ты не изменишь настройки для конкретного vhost
Maksim
в контроллере есть ряд переменных передаваемых через annotations
Maksim
по сути там есть легкий демон, который постоянно тыркается в апи и получает ing (можно установтиь что бы работал только на конкретный namespace)
Роман
у тебя есть представление как раотает ингресс-контроллер?
Примерное представление есть. Он собирает данные об ингрессах и изменяет конфиг в зависимости от того, что там написано. Так ведь приблизительно?
То есть, если я через аннотацию передам переменную (префикс ведь нужен какой-то), то получу то, что хочу?
Maksim
после счего смотрит есть ли изминения относительно текущего конфига nginx, если есть то сохдает нвый конфиг из tmpl и перезапускает nginx
Maksim
Да. Но для этой переменной нужен обработчик) в контроллере
Роман
Maksim
да
Etki
Роман
bebebe
bebebe
книгу с таким названием или курсы надо выпускать
Etki
как будто другие пермутации в терминале иначе делаются
bebebe
kubectl тяп-ляп | jq коллега-что-то-подсказал-две-недели-назад | дальше не помню
Роман
да
А ведь я могу использовать имя хоста в темплейте?
Роман
{{ if $hostname == (или как там пишется условие равенства) }}
Maksim
Думается что да
Maksim
можно использовать уже существующие переменные
Роман
Maksim
go template
Sn00part
можно получить из секрета. надо сделать decode
Sn00part
если есть helm можно поставить stable/jenkins и посмотреть команду
Sn00part
либо в чарте его
Volodymyr
eviction manager: no observation found for eviction signal allocatableNodeFs.available - так это гавно починить? на 1.7.2
G72K
под кюблетом нету тонны df процессов?
Volodymyr
вроде нет
G72K
а в логах на тему NodeFs?
Volodymyr
Creating Container Manager object based on Node Config: {RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: ContainerRuntime:docker CgroupsPerQOS:true CgroupRoot:/ CgroupDriver:cgroupfs ProtectKernelDefaults:false NodeAllocatableConfig:{KubeReservedCgroupName: SystemReservedCgroupName: EnforceNodeAllocatable:map[pods:{}] KubeReserved:map[] SystemReserved:map[] HardEvictionThresholds:[{Signal:memory.available Operator:LessThan Value:{Quantity:100Mi Percentage:0} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.available Operator:LessThan Value:{Quantity:<nil> Percentage:0.1} GracePeriod:0s MinReclaim:<nil>} {Signal:nodefs.inodesFree Operator:LessThan Value:{Quantity:<nil> Percentage:0.05} GracePeriod:0s MinReclaim:<nil>}]} ExperimentalQOSReserved:map[]}
Volodymyr
--eviction-hard?
Volodymyr
его прямо в systemd поставить?
Sn00part
кто нибудь использует storage classes, dinamic provisioning?
Logan
я использую, на цеф
Logan
что интрересует?
Sn00part
как за местом следишь?
G72K
в логах должно быть что-нибудь про измерение диска или не будет ничего, но это если df зависло на каком-нибудь сломаном маунте
Sn00part
и ещё вопрос. у меня провижионер отпадал, сейчас полсотни контейнеров в статусе terminating уже сутки висят, grace-period=0 не помогает
Sn00part
то есть перед тем как сделать claim нет проверок никаких?
Volodymyr
Could not get instant cpu stats: different number of cpus - вот еще...
Volodymyr
застопал все kubelets, остановил докеры, убил докеры запустил, заработало....
Volodymyr
а /var/lib/etcd нужно как то реплицировать отдельно, или оно вытянет с мастера по дискавери все?
Etki
Вас не пугает сама возможность таким образом поиметь два узла, которые идентифицируют себя одинаково?
Etki
Рафт предполагает автоматический подсос данных от мастера вплоть до текущего состояния, все должно быть в порядке
Volodymyr
угу - понял.. ну вот он "подсасывает".. а потом крашиться на всех нодах...
Volodymyr
container "etcd" is unhealthy, it will be killed and re-created.
Aug 02 19:31:40 kubelet[11626]: W0802 19:31:40.590748 11626 helpers.go:771] eviction manager: no observation found for eviction signal allocatableNodeFs.available
Volodymyr
member "etcd-1" has previously registered with discovery service token
But etcd could not find valid cluster configuration in the given data dir (/var/lib/etcd).
Volodymyr
/var/lib/etcd/ - не пустой
Maksim
map_hash_bucket_size" directive is duplicate in
Maksim
Ошибка в темплейте
Роман
Создаётся очень много файлов в каталоге /tmp с именем /tmp/nginx-cfg
В темплейте только одна такая директива.
Maksim
nginx считает что не так
Роман
Да и в этих файлах тоже одна эта директива. Может, просто он пытается добавить все эти файлы...
Maksim
нет только один
Elena
Друзья, а какой вы используете http-код для readiness-пробы в случае, когда сервис еще не готов принимать запросы?
Dmitry
В общем случае тот же, что и liveness =)
Elena
Так а какой конкретно код?
Elena
Я пока кроме 503 ничего не придумала
Elena
Вроде, другого специального никакого нет.
Maksim
положительным счтитается код 200
Maksim
http ok
Dmitry
200, иначе куб пульнет туда трафик раньше, чем под войдет в рабочий режим
Maksim
любой другой воспринимается как феил
Maksim
G72K
В общем случае тот же, что и liveness =)
в теории:
liveness - должна отвечать на вопрос "надо ли перезапускать под". т.е. не должна включать в себя внешние зависимости (скажем обращения к внешним базам данных и проч, т..к если внешняя зависимость сломалась, то перезапускать под вряд ли поможет). но должна включать максимум внутреннего кода: те же thread pools, те же локи, фильттры и проч что может сломаться.
readiness - должна отвечать на вопрос "можно ли слать клиентский трафик на под", т.е. в теории может включать и внешние зависимости, если скажем подключение к ним проблемное (а с другго пода будет ОК возможно).
G72K
на практике все лепят один и тот же /version.txt какой-нибудь, который работает всегда, даже если основной код весь в дедлоках и не отвечает ни на что :)
Maksim
Maksim
Это вопрос к тому, используешь ты liveness и readness правильно, или как затычку в коде для галки)
Dmitry
на практике обычно readness запускается раньше liveness =)
Maksim
типо Админы площадки просили разработать ну мы и разработали
Maksim
Maksim
Dmitry