Anton
> Засунуть... что будет делать kubectl?
Anton
OVS может-)
ну его таки как-то надо интегрировать с кубом, мне бы сейчас попроще(побыстрее) решение, поэтому я остановился на конфигурации vxlan изнутри подов, мне просто нужно ее автоматизировать, чтобы в каждом поде вручную не прописывать айпишники
𝚔𝚟𝚊𝚙𝚜
kubectl будет общаться с kubernetes-api точно так же как и на мастере. Можно запустить kubectl get pods -wи следить за изменением статусов, как только нужный под будет добавлен, делать kubectl exec <mypod> something
𝚔𝚟𝚊𝚙𝚜
Вот это очень крутая фишка в kubernetes
Anton
другими словами внутри каждого пода мониторить апи на предмет появления/исчезновения подов?
𝚔𝚟𝚊𝚙𝚜
не, ты же хотел контроллер, просто сделать один отдельный под который будет все это реализовывать
Anton
а имеет смысл замутить все это как CRD?
𝚔𝚟𝚊𝚙𝚜
либо да, можно объявить ClusterRoleBinding и в каждый под добавить по kubectl, после чего запускать необходимые действия уже при старте или остановке контейнера
𝚔𝚟𝚊𝚙𝚜
Что такое CRD? :)
Anton
под CRD я имею ввиду Custom Resource Definition
𝚔𝚟𝚊𝚙𝚜
нет, зачем?
𝚔𝚟𝚊𝚙𝚜
еще вариант, сделать контроллер который будет обновлять configmap в kubernetes А каждый твой сервис внутри пода научить перезагружать конфиг в случае если он был изменен
Anton
ну я определаю этот контроллер как ресурс, а потом когда мне надо начать мониторить конкретную группу я создаю объект такого ресурса для заданной группы
Anton
вот мне интересно где и как этот контроллер будет запущен, просто как отдельный деплоймент?
𝚔𝚟𝚊𝚙𝚜
Ну я под контроллером понимаю обычный демон (под с kubectl который слушает поды) - да, отдельный деплоймент
𝚔𝚟𝚊𝚙𝚜
твои ресурсы можно группировать с помощью labels
Anton
ему же кстати придется хранить в себе стэйт, ведь он должен знать какие поды надо уведомить в случае если появился новый под
𝚔𝚟𝚊𝚙𝚜
зачем?
𝚔𝚟𝚊𝚙𝚜
просто уведомлять все подряд
𝚔𝚟𝚊𝚙𝚜
можно хранить стейт на самих подах - если это так необходимо
Anton
ну тогда целевой под должен уметь вычислить, что это не для него сообщение
𝚔𝚟𝚊𝚙𝚜
например при обновлении записывать версию в /tmp/last_update и при каждой операции обновления если версия старая, запускать комманду на обновление
𝚔𝚟𝚊𝚙𝚜
но вариант с configmap мне больше нравится
Anton
к тому же как уведомлять всех подряд, вообще все-все поды в кластере? там же могут быть поды, которые вообще не при делах
𝚔𝚟𝚊𝚙𝚜
разумеется иметь под это дело отдельный namespace или просто выбирать поды по label
𝚔𝚟𝚊𝚙𝚜
ака kubectl get pod -l mygroup=group5
Anton
желательно иметь эту функциональность cluster-wide, то есть контроллер будет запущен например в kube-system и иметь дело со всеми неймспейсами
𝚔𝚟𝚊𝚙𝚜
почему бы и нет?
Anton
ну да, с лэйблом должно сработать
Anton
ну и в поде должен всегда присутствовать sidecar container, который способен выполнить эти команды, верно?
𝚔𝚟𝚊𝚙𝚜
не понимаю, зачем?
Vitalii
Апну
включайте —v=2 или больше в kube-apiserver и смотрите кто делает patch. Ну или иногда в метриках по user-agent можно догадаться.
Denis
--v=2 это verbosity логов ?
Denis
Хорошая идея, спасибо
Denis
А на практике никто не встречался?
Vitalii
типа того. Это параметр glog. Логов будет в несколько раз при каждом увеличении —v У себя такое не видел.
Denis
ок
Vitalii
https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md
Anton
не понимаю, зачем?
kubectl exec <mypod> something — "something" должно быть на поде, верно?
Anton
кстати, а как работает Service, прямо мониторит поды по лейблам через апи (poll с интервалом), или как-то хитро уведомляется?
Vitalii
кстати, а как работает Service, прямо мониторит поды по лейблам через апи (poll с интервалом), или как-то хитро уведомляется?
kubelet смотрит за подами и обновляет их phase. Если есть readinessProbe, то он устанавливает статус Ready - NotReady endpoint контроллер смотрит за статусом подов, который попадают в selector сервиса и добавляет/удаляет endpoint из service kube-proxy смотрит за endpoints и service и добавляет/удаляет правила iptables наверно я что-то упустил, но в целом так работает
𝚔𝚟𝚊𝚙𝚜
@aialferov ты меня заинтересовал своей задачкой)
Anton
> enpoint контроллер смотрит... вот как раз пытаюсь понять, что такое "смотрит", как реализовано, через периодический "поллинг" или есть "пуш" нотификации от подов
𝚔𝚟𝚊𝚙𝚜
вот что у меня получилось: while read NAME STATUS; do [ "$STATUS" = Running ] && kubectl exec $NAME -- sh -c 'echo Hi I am $(hostname -f)' done < <(kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase -w)
Vitalii
они юзают эту штуку https://github.com/kubernetes/client-go там есть пакет informer который делает всю магию. В kube-apiserver есть WATCH команда, с помощью которой можно подписаться на изменения по селектору. Плюс informer раз в N минут делает полный resync вызывая List
Vitalii
если вы хотите следить за изменениями каких-то объектов в кластере, то нужно юзать один из клиентов и писать код. У нас например golang и java клиенты давно используются, которые следят за нужными подами
bebebe
более читабельный вариант https://gist.github.com/kvaps/2be6929f31098a857517ebe0389c9cfe
kubectl get pod ... | awk '($2 == "Running) { print $1 }' | xargs -I% kubectl exec % -- sh -c ...
bebebe
но в целом, нужно использовать правильно -o jsonpath что бы не городить такого, будет kubectl ... -o jsonpath .. | xargs -I% kubectl exec
bebebe
при помощи jsonpath отфильтровать правильные стейты и вывести нужные метаданные
𝚔𝚟𝚊𝚙𝚜
ага, плюсую
Evgeniy
Парни подскажите, на сервисе гуугл в кластере кубернетес нужно изменить файл конфигурации внутри контейнера. это лучше делать конфигмапом ?
Dmitry
тыкаюсь в swarm, знаю тут много таких. поможете советом ктонить? почему не пашет dns resolution в одной overlay сети?
Dmitry
Привет! Подскажите, пожалуйста, умеет ли nginx ingress SSL passthrough для нескольких доменов (для каждого свой бекэнд) без терминации трафика? И пробывал ли кто завести подобное? Вроде как у nginx есть такой модулек из коробки, который это позволяет http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html.
Pavel
Но я не пробовал, если что)
Dmitry
@pvlltvk Спасибо! Ты про опцию --enable-ssl-passthrough?
Vadim
#whois Инженер в Red Hat, работаю над ansible репозиторием для установки openshift
Михаил
#whois Инженер в Red Hat, работаю над ansible репозиторием для установки openshift
Зачем вы ломаете в Ansible обратную совместимость?) Когда OpenShift переедт на CoreOS? Будут ли так же ломаться обратные совместимости в CoreOS? есть хау ту по установке OpenShift без плейбуков RedHat?
Vadim
>Зачем вы ломаете в Ansible обратную совместимость? это к Ansible Core наверное? Я сам этому не рад
Vadim
>Когда OpenShift переедт на CoreOS? шта?
Vadim
>есть хау ту по установке OpenShift без плейбуков RedHat? oc cluster up / minshift
Михаил
>Когда OpenShift переедт на CoreOS? шта?
ну был анонс, что RedHat купили CoreOS что бы перевести OpenShift на него
Konstantin
проблема даже не в том, что ломают обратную совместимость, а то что ты можешь об этом не узнать, потому что всё будет успешно проходить, но в результате ничего работать не будет 🙂
Михаил
>есть хау ту по установке OpenShift без плейбуков RedHat? oc cluster up / minshift
не, вот смотри куб это 5 бинарей и их можно запустить руками конечно у OpenShift тоже есть бинари, но мне кажется тащить их руками и обвязывать своими конфигами не очень затея
Vadim
ну был анонс, что RedHat купили CoreOS что бы перевести OpenShift на него
ну Openshift и так на Atomic можно запускать, но вряд ли куда-то переедет
Михаил
oc cluster up
но это не prod ready
Vadim
естественно
Михаил
блин, вот ты пишешь плейбуки они же основаны на каком-то how to как поставить openshift
Vadim
ты же не используешь "пять бинарей" на проде?
Vadim
ну да, рпм туда, рпм сюда