Игорь
У себя. Физические сервера
Понадобится либо пиринг по BGP с провайдером, либо плоская L2 сеть между серверами
Семён
либа балансер перед серверами )
Семён
а лучше два, в HA
Rainbow
либа балансер перед серверами )
А кто над балансёрами? Если их 2
Игорь
ну тогда этому балансеру понадобится то же самое :)
Семён
там уже аплинки
Rainbow
там уже аплинки
Почему не сразу на кластер?
Vadim
народ а разные ноды кластера могут допустим находится в разных ДМЗ зонах, мастер во внутренней сети и еще часть нод во внутренней
Игорь
Сервера в одной локальной сети
В этой локальной сети белые адреса? Если да, то просто берешь metallb или даже тот же самый keepalived
Artyom
Думалось реализовать через айпишник, выдаваемый кипеалайвом, который на мастерах над haproxy. Возможно я двигаюсь не в том направлении конечно.
Семён
потому что на балансерах можно всякие service group настроить куда воркеры запихать можно, и, в случае смерти одного воркера с ингресом в кластере - он просты выпадает из пула
Игорь
Думалось реализовать через айпишник, выдаваемый кипеалайвом, который на мастерах над haproxy. Возможно я двигаюсь не в том направлении конечно.
Если уже есть рабочий keepalived + haproxy, то делай через него. А сервисы куба просто выставляй через type: NodePort
Artyom
В этой локальной сети белые адреса? Если да, то просто берешь metallb или даже тот же самый keepalived
Keepalived на мастерах настроен, мне теперь надо понять, как смапить на него порты пода, без привязки к ноде, на которой он запустится
Семён
ну кстати да, как варик, очень бюджетно
Игорь
ну кстати да, как варик, очень бюджетно
очень бюджетно - это gdnsd и ttl 10 :)
Игорь
Каким образом их связать? Через сервис?
Да, создаешь сервис с типом NodePort, порт открывается на всех нодах кластера. Потом все ноды кластера суёшь в haproxy.
Artyom
Да, создаешь сервис с типом NodePort, порт открывается на всех нодах кластера. Потом все ноды кластера суёшь в haproxy.
А ингрис или что-то ещё требуется? Я не особо понимаю, что представляет из себя сам ингрис, но судя по всему он как-то участвует в высвечивании
Alexey
Коллеги, странно ведет себя kube-state-metrics: периодически в prometheus отсутствуют данные от него. Проверяю очень просто - выполняю запрос kube_pod_labels в веб-интерфейсе prometheus и то получаю данные (total time series = числу подов, иногда - удвоенному), то - нет. Соответственно, на графиках grafana, строящихся на основе этих данных, периодически разрывы. С самим prometheus все ок, данные, поступающие в него от node-exporter'а есть постоянно. Есть идеи, в чем проблема?
Игорь
(если он не проприетарно-облачный)
Artyom
Ингресс как раз потребует, чтобы ты выставил его через сервис
Не совсем понимаю. То есть схема такая, под->ингрис->сервис
Artyom
?
Игорь
Ингресс-контроллер - это прокси (чаще всего nginx) + обертка, которая генерирует ему конфиг из объекта Ingress. Вот этот nginx надо выставить сервисом.
Игорь
То есть под <-> ингресс-контроллер <-> нода (которой сервис сказал, на каком порту слушать) <-> haproxy
Игорь
ингресс - это просто конфиг для ингресс-контроллера
Artyom
А какую роль тут выполняет ингресс-контроллер, если сервис уже высветит порт на всех нодах?
Игорь
Роль reverse http proxy
Игорь
Если у тебя не хттп, то ингресс не нужен, конечно :)
Artyom
А почему нельзя просто порт http вывесить сервисом?
Artyom
Не могу понять задачу этого узла
Игорь
Ну а зачем вообще nginx и подобные ему нужны?
Игорь
Хочешь ты, например, HTTP/2
Artyom
Мне казалось для балансировки запросов, но разве эту роль не берет на себя уже haproxy?
Игорь
Или роутинг по путям
Игорь
Или роутинг по доменам
Игорь
Вообще без ингресса, конечно, можно обойтись. Просто конфигурировать haproxy отдельно от всего остального. Но удобнее все-таки вместе, а haproxy переключить в tcp режим.
Игорь
Ну вот как пример. Хочешь ты трафик в /api/ направить в один сервис, а /assets/ - в другой. В ингрессе это делается очень удобно и без лишних NodePort. А без него придется выставлять два сервиса нодепортом и разрулить на хапрокси уже в http режиме.
Artyom
Вроде начинаю понимать
Artyom
Спасибо большое за пояснение, завтра буду пробовать!
Andrey
Спасибо за совет, завтра поэкмпериментирую
Можешь ещё график по up метрике в Prometheus посмотреть. Если target более 5 минут недоступен, то временные серии дропаются.
Alexey
Попробовать самому пособирать curl'ом с него, а также включить -v=10 опцию в kube-state-metrics.
curl'ом аналогично: то Empty reply from server, то список метрик. Не очень понял, куда добавлять опцию для увеличения уровня логирования. В секцию, что на скрине?
Alexey
Нет, в kube-state-metrics контейнер.
Хм, в какую секцию там? В доке на gh в упор не вижу ничего про настройки логирования
Артур
подскажите пожалуйста как в kubeadm включить external-IP?https://imgur.com/fl5G2mr
Alexey
В первый контейнер. В args. args: - -v=10
Запустилось, спасибо. Пока, правда, ничего интересного в логе нет, ровно как и пропусков данных на графике
Andrey
Запустилось, спасибо. Пока, правда, ничего интересного в логе нет, ровно как и пропусков данных на графике
Попробуйте скореллировать пустоту при запросе и что-то в логе. Когда появятся провалы.
Dmitriy
подскажите пожалуйста как в kubeadm включить external-IP?https://imgur.com/fl5G2mr
Нужно указать для сервиса тип LoadBalancer. Тут подробнее https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/ И сам LoadBalancer создать - https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
Артур
указал там просто pending
Артур
https://imgur.com/EEdKEoy
Ascandar
указал там просто pending
какое облако используешь? если на вмваре или баре метал он будет вечно pending)
Артур
https://github.com/kairen/kubeadm-ansible.git
Артур
поднял через ансибл 2 ноды мастер и минион
J
всем привет. подскажите с gitlab runner в кубернете. есть гитлаб сервис в котором закончились фришные раннеры. хочу заинсталить раннер в кубер. взял офф чарт. добавил там токен и урл гитлаба. установил его через helm. Как его заставить работать? что нужно ещё сделать?
J
нужно его как то наружу выпустить?
Артур
вроде простой кластер. Все связалось но nginx на внешний порт не могу повесить
Ascandar
вроде простой кластер. Все связалось но nginx на внешний порт не могу повесить
я так понял, что кластер на своих тачках? ну дык выноси как externalIP на сервисах либо NodePort
Ascandar
если балансер хочется - то metallb
Rainbow
вроде простой кластер. Все связалось но nginx на внешний порт не могу повесить
helm install --name nginx stable/nginx-ingress --set controller.kind=DaemonSet --set controller.daemonset.useHostPort=true
Rainbow
Error: could not find tiller
гуглить сначала про helm, потом по ingress. Инфы куча. Это больше как keywords для поиска и режим для nginx-ingress
Rainbow
nginx-ingress как daemonset + hostNetwork: true - это самое простое на железяках. Дальше искать способ пустить трафик на любую ноду кластера для отказоустойчивости, лучше у хостера спросить как соседи решают.
Zhyhanov
И чем он поможет?
ну ему нужен балансер
Zhyhanov
уже после этого он может и с ингрессом разбиратся
Rainbow
ну ему нужен балансер
nginxingress и nodeport просты и покрываю все кейсы 99% приложений, не думаю что стоить мудрить
Andrey
Zhyhanov
nginxingress и nodeport просты и покрываю все кейсы 99% приложений, не думаю что стоить мудрить
согласен, я просто с первого раза в ингрес не смог и по этому мне показалось что через металлб проще. Ну и плюс у меня кейс был что мне нужно было пробрасывать порты не только 80,443
Stas
Коллеги, добросуток. У кого есть опыт в размазывании кластера кубера на дальние расстояния. Можете поделиться впечатлениями?
George
не работает, но можешь федерацию попробовать
George
и дальние расстояния - это сколько? можно в км?
Stas
2к