Maxim
https://dl.dropboxusercontent.com/s/pxvd9acirf0iaen/1._rootweb02-amplifr-ru__ssh_2016-08-30_22-26-59.png?dl=0
Maxim
вот так это выглядит
Alexander
Ребята, всем доброго времени суток. Сижу ломаю голову - у меня есть DaemonSet или RC. Как мне прокинуть node_ip внутрь контейнера? Прям очень-очень надо))) У меня агенты запускаются на каждой ноде и мне бы получать про эту ноду инфу... Сейчас полезу смотреть как это делает Prometheus
Etki
env + valueFrom?
Maxim
и что ты в этот valueFrom запишешь?
Etki
окей, расширим для понятности: env + valueFrom не сработает?
Maxim
ну а как ты его заполнишь?
Maxim
valueFrom what?
Etki
да я уже понял ответ на вопрос
Etki
спасибо
Timur
вешать докер на опеределенный ip и в контейнере просто указывать этот ip(который слушает докер)
Timur
везде будет один и тот же :)
Timur
если я конечно правильно понял вопрос
Maxim
неа
Maxim
DaemonSet запускается на всех нодах [где совпадает nodeSelector]
Maxim
Alexander хочет в подах этого демонсета получать IP той ноды, где запущен этот под
Timur
ну ip же нужен, чтобы обратиться к какому-то сервису. надо просто чтобы этот сервис на "хостноде" слушал все ip, в том числе и ip докера
Maxim
то есть все поды запускать с hostNetwork: true
Timur
не
Timur
необязательно
Maxim
и потом бегать с ручной настройкой iptables, чтобы они снаружи были недоступны
Timur
ip докера везде один и тот же
Maxim
и еще с kube-proxy не пересечься при этом
Timur
мы так решали проблему доступа из коксового контейнера к постфиксу который на хостноде
Timur
коксовый контейнер не могли запустить с хостнетворк
Maxim
ip докера везде один и тот же
и? ему же вроде надо получить айпи ноды для какой-то там обработки в поде
Timur
это да :)
Timur
я уже решил что тебе ip ноды на самом деле не надо ))
Alexander
Друзья, простите был загружен весь день - только освободился. Итак. У меня есть DS, как я описал выше, в нем агент по сбору информации, не важно какой... допустим количество запущенных контейнеров (через проброшенный сокет могу это узнать). Докер - он не на IP, а на сокете висит, никакого IP у него нету. Итак, есть Nodes с уникальными именами DS запускается на каждой ноде и в итоге имеем N-подов с уникальными также именами. Мне нужно чтобы агент знал либо в каком Поде он находится (имя пода, например) а еще лучше - на какой ноде это происходит. Мы же по описанию пода можем получить имя ноды. Где-то видел как можно прокидывать метаинформацию внутрь прямо через *.yml файлы
Alexander
Я вроде понял как Prometheus работает - он имеет доступ к kubernetes-api
Alexander
в каждом поде есть hostname - как раз название пода
Alexander
и по этим данным я могу все узнать через kuber-api
Alexander
- job_name: 'kubernetes-node-exporter' tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - api_servers: - 'https://kubernetes' in_cluster: true role: node
Maxim
> Где-то видел как можно прокидывать метаинформацию внутрь прямо через *.yml файлы можно через секреты: http://kubernetes.io/docs/user-guide/secrets/#using-secrets-as-environment-variables можно через конфигмапы: http://kubernetes.io/docs/user-guide/configmap/#consuming-configmap-in-pods но тебе не подходит ни то ни другое, судя по описанию задачи
Alexander
вот так можно достучаться из пода до API сертификаты инджектятся в каждый контейнер (вроде)
Maxim
> сертификаты инджектятся в каждый контейнер только публичная часть CA
Maxim
c другой стороны, имея публичную часть CA и bearer token можно попробовать постучать в апи
Maxim
зависит от того, чего разрешено этой сервисной группе
Maxim
если политика авторизации отлична от AllowAll
Maxim
http://blog.kubernetes.io/2016/08/security-best-practices-kubernetes-deployment.html
Maxim
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/kubernetes-announce/XXq5p19HU_w/25yQMwMoCQAJ
Viacheslav
как деплоить новую версию контейнера без даунтайма на кубернетесе, на есть рецепты?
Maxim
Так оно само
Maxim
Деплоймент обновляешь, он сначала новый под запускает, потом старый убивает
Viacheslav
кул
Viacheslav
и как, без проблем работает?
Maxim
вот пример: apiVersion: extensions/v1beta1 kind: Deployment ... spec: minReadySeconds: 10 replicas: 2 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 type: RollingUpdate template: ...
Maxim
type: RollingUpdate говорит кубернетесу, что сначала надо запускать, а потом убивать
Maxim
параметр spec.strategy.rollingUpdate.maxUnavailable: 0 указывает, что сначала нужно запустить хотя бы один новый, чтобы можно было начать убивать старые
Maxim
что спасает нас от убийства старых подов в случае фальстарта новых
Timur
вот Максим добрый
Maxim
?
Timur
ну я б на такой вопрос к доке для начала отправил :) если видно, что попробовал и что-то не получается, тогда конечно помогаю
Maxim
да ты тут хоть кого-то видел, кто пробовал читать?
Maxim
ну, из тех, кто вопросы задает
Timur
)))
Maxim
вообще кстати, эти maxSurge и maxUnavailable с первого раза немного поставили меня в тупик
Maxim
http://kubernetes.io/docs/user-guide/deployments/#max-unavailable
Maxim
то есть вот нельзя и то и другое по нулям поставить
Maxim
нужно всегда думать за баланс :D
Viacheslav
спасибо! плюс в карму
M
Помоему если настройки по умолчанию, то две реплики мало для без даунтайма
M
Сделай три
M
Либо крути maxsurge
Maxim
нене, даже с одной работает
Maxim
у меня есть тут всякие тестовые деплойменты, которым не надо реплик
Maxim
и даже они без даунтайма рестартуют
M
С дефолтными стратегиями?
Maxim
maxUnavailable: 0
Maxim
пока новый не стартанет, старый не умрет
M
У меня на 1.2.4 он смело клал две реплики сразу
M
Может конечно что то путаю, но помоему так я обнаружил этот раздел про strategy,иначе нне полез бы туда)
Maxim
ну у меня сейчас нет 1.2, негде проверить
Maxim
на 1.3 работает железобетонно
M
Скорее всего я напутал, был один деплоймент с одной репликой
M
Вот он точно прилегал
Ayrat
@pipopolam Я тут поднимаю addons руками, хотел попробовать add-on manager
Ayrat
Хотел спросить ты сперва тестишь addon руками пока не заработают ? А потом подкладываешь их под менеджер ?
Maxim
ну примерно так, да