Zon
Ага, эту часть я уже видел. Сейчас на deis смотрю, вроде тоже нормально, девелоперам может понравится
Denis
Да, Deis отлично, @vmakhaev в июле на Node.js Meetup делал доклад про неё
Maxim
а расскажите про deis в двух словах?
Maxim
я почему-то никак не пойму, зачем оно
Vladimir
это такой heroku-подобный paas (деплои через git server, service discovery, агрегация логов, контроль доступа на уровне пользователей и тп). из плюсов - это решение “из коробки”, поставил в работает. из минусов - врядли его получится как-то сильно кастомизировать
Maxim
а вот смотрите, коллеги
Maxim
$ kubectl get po --namespace=apps -o wide
NAME READY STATUS RESTARTS AGE IP NODE
...
preview-3537790400-7vavz 1/1 Running 1 10h 192.168.192.1 10.83.8.198
preview-3537790400-hd0o8 1/1 Running 2 10h 192.168.192.4 10.83.8.198
...
Maxim
оба preview запущены на одном кьюблете
Maxim
можно как-то шедулеру объяснить, что по возможности лучше запускать поды на разных машинах?
Sergey
я помню там можно точно указать ноду, на которой нужно под разворачивать)) думаю, что-то вроде стратегии выбора там тоже должно быть
Sergey
http://kubernetes.io/docs/user-guide/node-selection/
Maxim
@Drago13 ненене, *этот* node selection - это не про то
Maxim
если я в деплойменте для preview скажу
nodeSelector:
disktype: ssd
Maxim
то ВСЕ поды этого деплоймента будут запускаться только на нодах, где есть такой label
Maxim
если такая нода одна, то они все на нее приедут
Maxim
если несколько, то будут распределяться по прихоти шедулера
Denis
А ты хотел бы приоритет задать?
Sergey
не понял я... Этот nodeSelection
Sergey
http://kubernetes.io/docs/api-reference/v1/definitions/#_v1_podspec
Sergey
не дописал, прости... Это же можно указать в спеке пода
Maxim
что "это"?
Sergey
почему спека конкретного пода должна влиять на все поды в округе?
Sergey
nodeSelector
Maxim
да это не про то, Сергей, я ж уже объяснил ;)
Maxim
@DenisIzmaylov смотри
у меня есть важные сервисы, которые я предпочитаю дублировать
ну тупо replicas: 2, например
и хотелось бы, чтобы эти реплики по возможности расползались на разные машины
иначе значительная часть смысла от дублирования пропадает
Алексей
Denis
Denis
У меня тут другая вещь интересная
Denis
deployment отправил в kubectl apply
Denis
но он весит
Denis
kubectl get pods —namespace my-app-dev
NAME READY STATUS RESTARTS AGE
my-app-static-1409264784-0rz5g 1/1 Running 0 1d
my-app-static-1409264784-4ct3x 0/1 Pending 0 1d
my-app-static-1409264784-a0tx9 1/1 Running 0 1d
my-app-web-4236871117-yiqmg 0/1 Terminating 1 1d
my-app-web-951618991-n5ddh 1/1 Running 0 1d
my-app-web-951618991-nl5kn 1/1 Running 0 1d
my-app-web-951618991-og120 1/1 Running 0 1d
my-app-web-dispatcher-2847709974-348hp 0/1 Pending 0 1d
my-app-web-dispatcher-2847709974-fqlkk 1/1 Running 0 1d
my-app-web-dispatcher-2847709974-rhjnh 1/1 Running 0 1d
my-app-web-dispatcher-3729888052-87k8e 1/1 Terminating 0 1d
Denis
как вот логи посмотреть правильно?
Denis
kubectl logs не срабатывает
Denis
Пишет например:
Error from server: pods "my-app-web-dispatcher-3729888052-87k8e" not found
Maxim
иди на хост и смотри там docker logs <dead-container-id>
Maxim
ну сначала docker ps -a, понятно, чтобы нужный труп найти
Denis
блин)
Denis
забыл --namespace указать для kubectl logs
Maxim
?
Maxim
бгггг
Maxim
бывает
Denis
Касаемо твоей темы - nodeSelector умеет:
In addition to labels you attach yourself, nodes come pre-populated with a standard set of labels. As of Kubernetes v1.2 these labels are:
+ kubernetes.io/hostname
+ failure-domain.beta.kubernetes.io/zone
+ failure-domain.beta.kubernetes.io/region
+ beta.kubernetes.io/instance-type
см. http://kubernetes.io/docs/user-guide/node-selection/
Maxim
дада
Maxim
это я знаю
Maxim
но как это поможет две реплики разнести на разные хосты?
Maxim
я же не могу для каждой реплики отдельные nodeSelector'ы делать
Denis
https://github.com/kubernetes/kubernetes/issues/3945
Denis
? :)
Denis
Я вот решал такое на чистом CoreOS + Fleet - там есть настройки Conflicts: https://coreos.com/fleet/docs/latest/unit-files-and-scheduling.html
Maxim
(может это вообще один и тот же человек)
Maxim
короче, там предлагают в таких случаях заводить по отдельному RC на каждую реплику
Maxim
как-то это... нууу....
Maxim
ну вы поняли
Denis
да
Denis
но не всё сразу
Denis
или PR welcome :)
Алексей
как я понял это все in development
https://github.com/kubernetes/kubernetes/issues/25319
https://github.com/kubernetes/kubernetes/blob/master/docs/design/podaffinity.md
Vladimir
в этом смысле номад рулит
Maxim
агада, конкретно это в номаде продумано
Алексей
В этом смысле Mesos уделывает всех ибо там это 1 строчка конфига :) - "constraints": [["hostname", "UNIQUE"]]
Denis
А как как kubectl logs тогда работает?
# kubectl get pods --namespace my-app-dev
NAME READY STATUS RESTARTS AGE
my-app-web-dispatcher-2847709974-348hp 0/1 Pending 0 1d
my-app-web-dispatcher-2847709974-fqlkk 1/1 Running 0 1d
my-app-web-dispatcher-2847709974-rhjnh 1/1 Running 0 1d
my-app-web-dispatcher-3729888052-87k8e 1/1 Terminating 0 1d
# kubectl logs --namespace my-app-web-dev my-app-web-dispatcher-2847709974-348hp
Error from server: the server could not find the requested resource ( pods/log my-app-web-dispatcher-2847709974-348hp)
Vladimir
ну мезос-то понятно
Denis
какая мезость
Maxim
@DenisIzmaylov оно еще пендинг
Maxim
там пока нет логов, потому что контейнер еще не запустился
Denis
оно вот уже 10 минут пендинг, как раз хочу посмотреть почему
Maxim
евенты смотри
Maxim
логи не появятся до первого running
Denis
kubectl get events --namespace .. возвращает ничего
Denis
и даже в UI кнопки нет
Denis
просто deployment висит уже долго
Denis
точнее вкладку Events нашёл, но там пусто
Maxim
ну тогда предыдущий совет в силе: иди на целевой хост, ищи контейнер в docker ps -a, инспектируй его доскером
Denis
т/е мы не можем посмотреть причины, почему deployments висит?
Maxim
пока контейнер в состоянии "пендинг", логи не появятся
Maxim
а вот тот факт, что у тебя нет евентов - это какой-то треш
Maxim
так не должно быть
Maxim
обычно там на кажный чих куча всего генерится