A
на проде кто-то уже использовал? https://rook.io
Вроде плюются из-за потерь данных при обновлении и репликация данных по вылету одной из нод, это касается и ceph, тк под капотом он
A
Глустер легче цеф
Согласен, сейчас его буду внедрять
Sergey
на проде кто-то уже использовал? https://rook.io
Разве что только слабоумные и отважные
Sergey
Сам ceph требует кучи внимания и осмысленных действий, при отработки аварийных ситуаций, а тут это ещё пихают в кубер
Sergey
С цефом все норм(ну кроме производительности из коробки) пока он работает в штатном режиме - потом начинаются веселые дела
Andrey
Глустер легче цеф
и тормознее, ощутимо
Sergey
Всем привет. Есть кластер в google cloud с включеным vpc network. На каждой ноде в кластере крутится calico-node. Я хочу добавить кастомные роуты, но если я на нодах добавляю роут с помощью ip route add, то через некоторое время calico удаляет это роут. Вопрос: как сказать calico чтобы конфигурировал и мои кастомные роуты? Ну или хотя бы не удалял их
Семён
Andrey
проще какой-нить openebs или longhorn внедрить - примерно те же iops :)
Andor
О, платиновые треды
Andrey
да :)
Andrey
кстати их мало по хеш-тегу
Andor
Потому что не все одинаково его пишут
G72K
А, просто namePrefix: app-production- commonLabels: app: app-production Круто, что в base не нужно писать labels/selector/template по ним. Сам цепляет.
Делите по неймспейсам, не пожалеете. Ну и лейблы лучше сразу покучерявее сделать, особенно если network policy будут. У себя запилил так: - mycorp/app-origin=$CI_PROJECT_PATH_SLUG - mycorp/app-instance-id=$CI_ENVIRONMENT_SLUG - mycorp/component-insance-id=
A
Коллеги, подскажите, как для конкретного деплоймента сделать так что бы поды не устанавливались на мастер ноду, у меня разрешено туда ставить их?
G72K
https://www.projectcalico.org/security-bulletins/
Спасибо, хорошо в дефолтных настройках все впорядке
A
taint на мастера
Я как раз открыл возможность установки, но для некоторого деплоймента это не нужно
Rainbow
tolerations можно им писать
Rainbow
taint + tolerations кому нужно
Rainbow
А, ну хотя, если вам только некоторым нельзя, то да, antiaffinity лучший вариант. Хотя идут от обратного обычно.
G72K
https://www.projectcalico.org/security-bulletins/
К вопросу о логах. У всех доступ к ним разделен разработчикам прям до уровня приложения или хотя бы по namespace в кубе, или все в одну кучу?
Andrey
не лучше
Nikolay
osik
A
taint + tolerations кому нужно
"tolerations": [ { "key": "CriticalAddonsOnly", "operator": "Exists" }, { "key": "node-role.kubernetes.io/master", "effect": "NoSchedule" } ] И все равно деплоится одна из реплик на мастер ноду
Rainbow
Тогда только антиафинити?
я так больше с ходу ничего не предложу. Можно ещё конкретно по меткам ноды вязать
Rainbow
Недавно говорили про сборку, bazel и тп. Сейчас нарыл https://www.pantsbuild.org/ Сталкивался кто?
Rainbow
master|node это метки, они есть уже скорее всего.
Sergey
kubectl taint nodes <NODE_NAME> key=value:NoSchedule Вот так можно запретить запускать что-то на ноде
Nik
Разворачивал prometheus из оператора, и в неймспейсе monitoring сейчас 2 стейтфулсета - prometheus и kube-prometheus. Таргеты у ниг одинаковый, алекрты разные. При этом мой сервис из другого неймспейчас никто не скейпит.
Nik
Что то я делаю не так. Кто подскажет что?
Nik
Мб надо от оператора отпложить интсанс прома в свой неймспейс? или как он долже по сервисдискавери автоматом подтянуть мой сервис? (аннотации на деплоймент повесил)
Rainbow
ServiceMonitor написать...?
Nik
ServiceMonitor написать...?
А чуть подробнее?
Rainbow
https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web
Vadim
А чуть подробнее?
https://github.com/coreos/prometheus-operator/blob/master/Documentation/design.md
A
kubectl taint nodes <NODE_NAME> key=value:NoSchedule Вот так можно запретить запускать что-то на ноде
Это же исключит эту ноду для действий, а мне надо для конкретного деплоймента, никак не могу победить афинити...б
Nik
https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-app labels: team: frontend spec: selector: matchLabels: app: example-app endpoints: - port: web
В сервисмониторе надо через лейбл-селекторы описать поды которые мониторить? А на кой тогда аннотации нужны? prometheus.io/port: "8082" prometheus.io/scrape: "true"
Rainbow
В сервисмониторе надо через лейбл-селекторы описать поды которые мониторить? А на кой тогда аннотации нужны? prometheus.io/port: "8082" prometheus.io/scrape: "true"
For Prometheus to monitor any application within Kubernetes an Endpoints object needs to exist. Endpoints objects are essentially lists of IP addresses. Typically an Endpoints object is populated by a Service object. A Service object discovers Pods by a label selector and adds those to the Endpoints object. А с анотациями не разбирался, взял первый рабочий вариант. Может устарело.
Andor
аннотации у меня сам прометей юзать для сервис-дискавери
Andor
без оператора
Олег
кто знает, как запустить контейнеры в определенном порядке?
Nik
что настроить-то?
сервисДискаверси с аннтоцаий
Andor
https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml
G72K
Недавно говорили про сборку, bazel и тп. Сейчас нарыл https://www.pantsbuild.org/ Сталкивался кто?
А что говорили про сборку с Базел? Я одним глазом когда смотрел, не понравилось что надо явно каждый файл зависимостей задавать
Олег
никак
как-то же разруливаются ситуации, чтобы зависимости запускались раньше, чем основной контейнер
Dmitrii
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#max-surge
Спасибо, как я понял эта опция позволяет обновлять не всё разом а только часть, к примеру 30% подов. Те мне понадобится не в 2x больше ресурсов а только на 30% больше. Спасибо за совет!!
Andrey
Спасибо, как я понял эта опция позволяет обновлять не всё разом а только часть, к примеру 30% подов. Те мне понадобится не в 2x больше ресурсов а только на 30% больше. Спасибо за совет!!
Неа, эта опция указывает, насколько можно превышать количество реплик при обновлении, оставляя старые поды при запуске новых. Округляется в большую сторону до ближайшего целого. Тебе нужно подобрать правильное сочетание maxUnavailable и maxSurge для твоего количества реплик.
G72K
кто знает, как запустить контейнеры в определенном порядке?
Перезаписать entrypoint в каждом и ждать нужного состояния перед exec в родной entrypoint
G72K
кто знает, как запустить контейнеры в определенном порядке?
Ну или не мучаться и запускать насколько процессов в нужном порядке в одном контейнере. s6-container-overlay в помощь
Andrey
Можно в процентах
Ну да, я это и подразумевал, говоря про правила округления
Andrey
Просто если у него одна реплика и дефолтные значения, то он получит 2x по расходу ресурсов. Тогда ему нужно maxSurge: 0 и maxUnavailable: 1, но тогда, конечно, никакого zero downtime deployment.
Sergey
Знающие calico есть? Кто может подсказать, как добавить кастомные роуты туда?
Andrey
но вообще, лучше бы описать задачу подробнее
Sergey
Они отзывчивы на их kubernetes.slack.com канале
Спасибо, спрошу там если ничего не выйдет
Sergey
но вообще, лучше бы описать задачу подробнее
Есть кластер в google cloud с включеным vpc network. На каждой ноде в кластере крутится calico-node. Я хочу добавить кастомные роуты, но если я на нодах добавляю роут с помощью ip route add, то через некоторое время calico удаляет это роут. Вопрос: как сказать calico чтобы конфигурировал и мои кастомные роуты? Ну или хотя бы не удалял их. В etcd лезть очень не хочется
Sergey
В кластере будут крутиться несколько подов с впн и у этих подов разные подсети для впн
A
master|node это метки, они есть уже скорее всего.
Вот так делаю на деплойменте: "affinity": { "nodeAntiAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": { "matchExpressions": { "key": "node-role.kubernetes.io/master", "operator": "DoesNotExist" } } } } }, И все ровно на мастер ноде остаётся реплика
Dmitrii
Просто если у него одна реплика и дефолтные значения, то он получит 2x по расходу ресурсов. Тогда ему нужно maxSurge: 0 и maxUnavailable: 1, но тогда, конечно, никакого zero downtime deployment.
это конечно же плохо)) а есть альтернативы? может есть чтото похожее на уровне namespace? я сходу правда не нагуглил(