Olsen
кто-то уже рекомендовал варианты?
Александр
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
G72K
Igor
я не хочу хардкодить DNS рекорды в конфигах, вот в чем
Александр
разве при использовании любого service discovery тебе не нужно хардкодить имена в конфигах? типа webapp.service.consul если юзать Consul
Igor
ну ты по сути должен просто хранить некие keys и креды для подключения к service discovery, чтобы пойти туда и получить values
Igor
допустим, на основании labels. в таком случае ты сможешь похендлить изменение хостнейма в поде, а в случае хардкода DNS имени - нет
Александр
какая тебе разница как под называется?
ты ходишь в днс по имени сервиса https://kubernetes.io/docs/concepts/services-networking/service/
Александр
> Assume a Service named foo in the Kubernetes namespace bar. A Pod running in namespace bar can look up this service by simply doing a DNS query for foo. A Pod running in namespace quux can look up this service by doing a DNS query for foo.bar.
Zon
Из днс вернётся кластер ип, который пробрасывается автоматически на поды, так что он не меняется
Olsen
по сути это как внутри проксмокса днс...
Igor
но я не хочу хардкодить все это в конфигах, а хочу делать запрос в апишку такого типа ?labelSelector=environment%3Dproduction,tier%3Dfrontend и получить DNS
Olsen
я бред могу писать, думаю. ну, потому что могу, ибо не разорбрался еще в вопросе навигации по аппам динамической
Igor
короче, проще всего написать небольшой враппер свой какой-то)
Olsen
а очень хочу понять как это сделать красиво (ранее использовали самопальные решения везде: внуково - из админки список, далее обновление дхцп -> днс, в биллингах - днс+ca внутри контура + такой же днс на опорном домене снаружи, а внутри разруливалось все не по именам, а, таки, по ip которые редко менялись)
Olsen
Igor
ну, проще всего сделать так, как выше вон предлагают, рассчитывая, что имя сервиса и DNS на его основании будет как single source of truth, что для меня очень деревянным методом выглядит
G72K
Igor
набор ключей, по которым потом генерится селектор, выглядит более гибким с наскоку. нужно более детально изучать
G72K
да ниче не гибко. никакой гибкости не надо. везде прибиваете myservice как конечная точка контакта и всё. оно будет брать myservice из того же namespace где и клиент
G72K
тогда если у вас есть 2 неймспейса: prod и staging, то конфиги приложений внутри одинаковы и ничего запрашивать/темплейтить не надо
G72K
и там и там приложения ходят в myservice
Zon
service это и есть набор селекторных ключей. Если хочется ещё гибче можно смотреть на сервис-брокеры
Dmitry
Посоны, а кто flannel настраивал, скажите, вы apiserver запускаете в контейнере flannel сети, или снаружи? А то у меня проблема
Dmitry
Провайдер дропает пакеты, которые имеют srcip отличный от хоста. Когда я, например, внутри пода обращаюсь к kubernetes.default то от минорной ноды улетает пакет в сторону мастера c srcip пода (провайдер такое дропает)
Dmitry
попробовал в kubeproxy добавить опцию --masquerade-all но чет она не работает походу.. пакеты не маскардятся =(
Dmitry
Есть вариант сам apiserver запускать в контейнере, тогда весь трафик до него будет ходить по оверлейной сети.. вот думаю, кошер ли это или зашквар?
G72K
Dmitry
В смысле оборачивает? он жеж просто предоставляет сеть для IP подов. Никаким маскардингом он не занимается
Dmitry
IP подов совпадают с flannel subnet и c докер --bip
Dmitry
Вот только когда запрос уйдет на внешние endpoints, то пакет покидает ноду и srcip у него остается фланеловский
Dmitry
по логике, тут kube-proxy должен маскардить их
G72K
FLANNEL_IPMASQ=true
G72K
фланел умеет
M
коллеги у кого кореос последний и 1.6.1?
M
заметил, что при запуске rkt gc кубелет начинает вести себя неадекватно до перезапуска
M
не может получить статус контейнеров и рестартит их, а также ломится в старую директорию удаленного rkt pod а
M
кто-то сталкивался?
G72K
альфа кореос?
M
в том то и дело что стейбл
Dmitry
ip-masq норм. Спасибо =)
M
gc нормально отрабатывает, но кубелету об этом никак не сообщает и он видимо теряется)
G72K
M
поды в докере
M
рокетом кореос запускает фланнел
G72K
да, и сам кюблет тоже рокетом. но причем тут rkt gc и кублет тогда?
M
нет, сам кубелет у меня бинарником, когда gc перемещает старый контейнер фланнела в другую директорию, кубелет перестает видеть эту директорию на своем месте и почему то теряет статус докер подов
M
kubelet[5869]: W0417 09:55:34.508259 5869 raw.go:87] Error while processing event ("/var/lib/rkt/pods/run/3338e455
M
в логах что то типа такого и маты про статус докеровских контейнеров
G72K
почему kubelet вообще видит контейнер flannel?
G72K
запускайте kubelet через kubelet-wrapper , у нас так работает и вроде бы проблем нет
M
я думал попробовать перейти с бинарника на kubelet-wrapper в рокете, у кого то есть такой конфиг с последними версиями?
M
у вас 1.6.1 и последний стейбл?
G72K
у нас 1.6.1 и beta
M
ок, попробую враппер
M
а ноды у вас ребутятся?
G72K
https://github.com/kubernetes-incubator/kube-aws/blob/e6de3dc6e45f8083013f23e24fade18305567cf5/core/controlplane/config/templates/cloud-config-worker#L137-L209
G72K
вот наша пускалка, подпилите напильником по вкусу :)
M
просто просто новый контейнер фланнел создается только после ребута
M
если gc ничего не перемещает в мусор у меня проблем тоже нет
M
хорошая пускалка спасибо за линк
G72K
что-то не так если kubelet вообще заботит rkt контейнеры. все что он должен видеть - контейнеры в докере
M
ну видимо бинарник видит и то и то
M
надо попробовать его в rkt и не дать ему монтировать var/lib/rkt
M
хотя в вашем скрипте он примонтирован
M
-volume var-lib-rkt,kind=host,source=/var/lib/rkt \
M
если есть тестовая нода попробуйте убить контейнер с фланнел и подождать/запустить rkt gc
G72K
M
смотреть лог)
M
если gc перенесет папку с убитым подом начнется активность кубелета
M
там просто политика gc не сразу переносить а через сколько то часов
M
может он просто отработает и не перенесет, по дефолту вроде через 12 часов он переносит в одну папку а еще через 12 удаляет
G72K
тишина
M
rkt list
M
что говорит?
M
https://coreos.com/rkt/docs/latest/subcommands/gc.html
G72K
UUID APP IMAGE NAME STATE CREATED STARTED NETWORKS
00091d0e hyperkube quay.io/coreos/hyperkube:v1.6.1_coreos.0 running 1 day ago 1 day ago
8182c0c8 flannel quay.io/coreos/flannel:v0.7.0 running 2 minutes ago 2 minutes ago
list: 2 error(s) encountered when listing pods:
list: ----------------------------------------
list: Unable to read pod 4c1c0eb7-ff8a-4ed7-8b08-0028b44d07c3 manifest:
error reading pod manifest
list: ----------------------------------------
list: Unable to read pod 657337f6-705f-4b57-9ae8-79e265af2476 manifest:
error reading pod manifest
list: ----------------------------------------
list: misc:
list: rkt's appc version: 0.8.10
list:
G72K
похоже он их не может gc :) там был баг в рокете связаный со stage1 про это
M
хм