Denis
В документе все написано
Denis
Временный control plane
Maksim
более того, такой контейнер требует привилегировнного использования, что явно не оч круто
Maksim
а откуда берётся временный контрол?
Denis
ты запускаешь kubelet, поверхнего запускашь kubelet как daemonset, убиваешь первый и отдаешь второму контроль за самим собой
Maksim
(я просто разматываю цепочку...-) есть ansible и другие способы доставки )
Maksim
а что если нода ребутнётся?
Maksim
демонсет не прописывает контейнеры в качестве сервисов в ОС
Denis
Bootkube Challenges This process has a number of moving parts. Most notably the hand off of control from the "host system" to the Kubernetes self-hosted system. And things can go wrong: 1. The self-hosted Kubelet is in a precarious position as there is no one around to restart the process if it crashes. The high level is that the system init system will watch for the Kubelet POSIX lock and start the system Kubelet if the lock is missing. Once the system Kubelet starts it will launch the self-hosted Kubelet. 2. Recovering from reboots of single-master installations is a challenge as the Kubelet won't have an API server to talk to to restart the self-hosted components. We are solving this today with "user space checkpointing" container in the Kubelet pod that will periodically check the pod manifests and persist them to the static pod manifest directory. Longer term we would like for the kubelet to be able to checkpoint itself without external code.
Maksim
намного эффективный (имхо) при включении ноды в кластер, ностроит кублет и поднять его как системный сервис
Denis
ехал kubelet через kubelet :)
Denis
Пока уровень 2 самый простой
Роман
А где прочитать про префикс label kubernetes.io/? Что это вообще и на что влияет?
Maksim
label
Maksim
это просто теги поиска...
Maksim
так что он ни на что не влияет
Maksim
можно код погрепать на эту тему
главное не попутать по пути label и annotation -)
Роман
так что он ни на что не влияет
kubernetes.io/cluster-service: true Вот например такая метка. В логировании много, где используется. Если её убрать - каков будет результат?
Maksim
логировании? Это скорее метка, что сервис работает на кластер (типо kube-dns)
Maksim
можно отобрать приметивы кубера (деплои сервисы и -тп) через -l
Maksim
типо kubectl get po -l kubernetes.io/cluster-service=true
Maksim
тут как бы вопрос в том, что такое ярлыки и зачем они нужны
Maksim
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
Maksim
Labels are key/value pairs that are attached to objects, such as pods. Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system.
Maksim
То есть ярлыки нужны для пользователей, а не для системы
Maksim
А вот аннотации уже интереснее)
Роман
То есть ярлыки нужны для пользователей, а не для системы
Ну вот это самое главное. А то я для изучения вопроса их использовал, но мне они не очень помогали.
Maksim
?
Роман
?
Просто брал примеры кода. А при логировании в кибане создавалось много лишних фильтров с этими лейблами. Я теперь их просто правильно укажу и будет, как надо.
Роман
Но и селекторы ведь к лэйблам применяются?
Роман
Например у сервиса spec.selector
Etki
только к ним или как правило только к ним, насколько понимаю
Maksim
Там есть ещё селекторы affinity
Maksim
И другие штуки
Maksim
https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
Maksim
или тут
Maksim
http://blog.kubernetes.io/2017/03/advanced-scheduling-in-kubernetes.html
G72K
так что он ни на что не влияет
влияет. вот пример: https://github.com/kubernetes/kubernetes/blob/f542fe12837560d991218289e8297dac7362c7ba/pkg/controller/service/servicecontroller.go#L627
Maksim
я в 1.5.2 мире пока ещё живу)
G72K
с лэйблами и аннотациями вообще маленький недокументированный адок
Maksim
это точно)
Роман
влияет. вот пример: https://github.com/kubernetes/kubernetes/blob/f542fe12837560d991218289e8297dac7362c7ba/pkg/controller/service/servicecontroller.go#L627
Ну это один конкретный лейбл, который не позволяет деплоить на мастере.
Logan
коллеги, напомните пжлст, как в кубернетес выполнять разовые действия. Суть проблемы: - в некоторых контейнерах мне нужно эпизодически выполнять определенные задачи - задачи можно (нужно) определить заранее - задача выполняется НЕ по расписанию, а внешним триггером
Denis
с лэйблами и аннотациями вообще маленький недокументированный адок
аннотации используются для альфа и бета фичей до того как попадут в полный спек объекта.
G72K
ага, особенно все AWS аннотации на сервисах :)
G72K
nginx-controller как раз документирован дольно хороошо, была табличка со всеми аннтоациями кажется
Maksim
Это я к тому что аннотация используется к альфа/бета фичам)
Maksim
В контроллере это самой что ни наесть прод фича, используемая для кастомизации nginx
Maksim
в доке написано, что аннтотации это метод передачи метаданных в сервисы
Maksim
вернее это способ прикрепить метаданные к объекту кубера, что бы различные клиенты могли их получить.
Lev
https://coreos.com/blog/kubernetes-turns-two
Denis
Роман
Подскажите про nodeSelector, пожалуйста. Если я укажу два - разворачиваться будет только в том случае, если обе метки есть у ноды(условие И)? Или по условию ИЛИ?
Роман
Я попробовал - вроде по условию И, но вдруг есть нюансы.
Maksim
Нода должна иметь каждый из указаных селекторов
Victor
Подскажите про nodeSelector, пожалуйста. Если я укажу два - разворачиваться будет только в том случае, если обе метки есть у ноды(условие И)? Или по условию ИЛИ?
Собственно в доке так и написано > For the pod to be eligible to run on a node, the node must have each of the indicated key-value pairs as labels (it can have additional labels as well).
Роман
Это очень хорошо.
Khramov
Ребят, а можно как-тосвязать несколько подов, чтобы когда рестартится один, остальные тоже сами рестартились?
Khramov
Ну вот так нужно :)
Dmitry
Да, можно
Khramov
А как так сделать?
Dmitry
При шутдауне получаешь список подов своего сервиса и удаляешь их через api
Dmitry
но это выглядит ужасно в любом случае
Khramov
Ну это понятно, я имел ввиду на уровне куба как-то связать
Khramov
Через апи, самому, это не очень вариант
Dmitry
так это и есть на уровне куба) запрос-то в куб апи
Knyage
А кто как с логированием вопрос решил? Все логи пишутся на машину, а оттуда сислогом\логстешем в кролик, или внутри подов к каждому сервису поднимать приложение и слать в него? Или какие то другие варианты?
Alexey
Уже обсуждался тут вариант с filebeat
Alexey
Или не здесь писал
Alexey
Filebeat берёт json-file и отправляет в хранилище/очередь.
Alexey
Или же докер плагины для логов и сразу можно в логстэш, например. Но с этим есть определённые заморочки.
Роман
А кто как с логированием вопрос решил? Все логи пишутся на машину, а оттуда сислогом\логстешем в кролик, или внутри подов к каждому сервису поднимать приложение и слать в него? Или какие то другие варианты?
Я поставил fluentd на каждую ноду и шлю логи в эластик. Очень не нравится мне этот способ - в кубернетесе не реализованы драйверы вывода логов. Всё пишется в файлы. Это дополнительные накладные расходы на IO. Хоть тут и говорят, что это ерунда и почти не почувствовать. Вопрос в другом: как ротировать файлы логов, сохранённых кубернетесом?
Роман
Флюент вроде не занимается этим сам.