@kubernetes_ru

Страница 8 из 958
Maxim
19.08.2016
08:09:07
ааа

ты хочешь предотвращать ручные убийства

в зависимости от "статуса" операций

?

Google
Alexander
19.08.2016
08:09:34
да. буду думать как по-другому менеджерить это дело. Возможно уйти от DS

Maxim
19.08.2016
08:09:50
так а какая разница-то, DS или нет

что DS, что RC, что Deployment все-равно делают в итоге поды

Alexander
19.08.2016
08:10:32
DS сам размазывает по нодам

Maxim
19.08.2016
08:10:55
и если у меня хватает прав на kubectl delete pod в нужном неймспейсе, то я все-равно смогу его пристрелить

Alexander
19.08.2016
08:11:00
мне это отлично подходит, но вот управлять ими невозможно. Допустим половину опустить, а половину оставить

Maxim
19.08.2016
08:11:13
а, это да

Alexander
19.08.2016
08:11:25
нет, теоретически все можно.

можно добавлять нодам лейблы

Maxim
19.08.2016
08:11:38
kubectl delete такого пода приведет к его перезапуску на целевой машине

Alexander
19.08.2016
08:11:40
в рантайме

а DS как раз мониторит эти лейблы

Maxim
19.08.2016
08:12:57
кстати интересно, если контейнеру в DS повесить nodeSelector...

Google
Alexander
19.08.2016
08:13:02
и если у ноды удаляется лейбл, то K8s удаляет с этой ноды Pos относящийся к соотвествующему DS

Maxim
19.08.2016
08:13:02
не попячит ли его? ;)

Alexander
19.08.2016
08:13:06
да, через NodeSelector

у меня часть нод как раз под этот сервис поднята исключительно... и на них я запускаю сервис через DS и NodeSelector

Maxim
19.08.2016
08:15:14
тогда я снова утерял суть изначального вопроса

Alexander
19.08.2016
08:16:16
смотри. Есть сервис который что-то считает. Этих сервисов много. Они запущены сейчас через DS на отдельных нодах Так вот мне критично нельзя удалять сервис пока он что-то считает. Встает вопрос. Как их обновлять?

допустим фикс какой-то вылить или просто новая версия вышла?

Maxim
19.08.2016
08:17:22
мне кажется, тебе нужны джобы, а не демонсеты

http://kubernetes.io/docs/user-guide/jobs/

ну, по описанию

Alexander
19.08.2016
08:18:13
хм... а их можно размазать по-кластеру? чтобы на одной ноде был только один Под?

чем хорош DS - я просто добавляю ноду с лейблом и там автоматически запускается нужный мне сервис

Job этого не даст

Maxim
19.08.2016
08:19:45
зато джоба не остановится, пока не кончит

Alexander
19.08.2016
08:19:47
а ноды добавляются в зависимости от нагрузки. Зачем мне держать 100 нод просто простаиваюих

я просто пока думаю возможно ли это менеджерить просто средставами k8s или придется писать свой шедуллер

который будет сам через k8s-api запускать сервисы на нодах

но видимо для этой задачи базовых возможностей k8s не хватит (((

Maxim
19.08.2016
10:31:43
Alexander https://pracucci.com/graceful-shutdown-of-kubernetes-pods.html

Google
Alexander
19.08.2016
11:09:36
Максим, кстати отличная статья. Про preStop вообще не думал. В статье написано что он блокируется (This event handler is blocking...) правильно ли я понимаю, что я могу поставить terminationGracePeriodSeconds в нужное значение (чтобы точно через минуту, например все грохнулось) и в хуке разблокироваться после окончания расчетов... Тогда как хук разблокируется, под удалится. Если же за время terminationGracePeriodSeconds не разблокируется, то все-равно удалится по таймауту

Maxim
19.08.2016
11:10:26
ну как я понял - да, так и есть

надо пробовать

Alexander
19.08.2016
11:11:13
ок! Попробую и отпишусь

Maxim
19.08.2016
20:00:50
запускаю 1.3.5 и получаю ошибки про CNI
cам спросил, сам отвечаю: https://github.com/kubernetes/kubernetes/issues/30681

Denis
20.08.2016
02:45:28
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/README.md

Получилось? :)
Привет :) Да, лови: https://github.com/StartupMakers/k8s-resource

Maxim
20.08.2016
07:52:54
https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/README.md
отличный солюшн, жаль только слишком крепко прибит гвоздями к GCE

в общем, чтобы запустить кубернетес >= 1.3.5 с weave или calico, надо сначала поставить последние стабильные CNI-бинари

wget https://github.com/containernetworking/cni/releases/download/v0.3.0/cni-v0.3.0.tgz && \ tar xvf cni-v0.3.0.tgz -C /opt/cni/bin/

после этого k8s-1.3.5 начинает работать как по волшебству

Alexander
20.08.2016
10:17:39
Это из-за этого k8s не хотел компилиться?

Maxim
20.08.2016
10:38:01
Про компиляцию ничего не знаю

Alexander
20.08.2016
10:40:00
))

Denis
20.08.2016
14:12:17
Привет :) Да, лови: https://github.com/StartupMakers/k8s-resource
Вот ещё полезные ресурсы) https://concourse.ci/resource-types.html

Zon
20.08.2016
15:20:25
Ага, эту часть я уже видел. Сейчас на deis смотрю, вроде тоже нормально, девелоперам может понравится

Denis
20.08.2016
15:21:33
Да, Deis отлично, @vmakhaev в июле на Node.js Meetup делал доклад про неё

Maxim
21.08.2016
21:02:03
а расскажите про deis в двух словах?

я почему-то никак не пойму, зачем оно

Vladimir
22.08.2016
04:43:06
это такой heroku-подобный paas (деплои через git server, service discovery, агрегация логов, контроль доступа на уровне пользователей и тп). из плюсов - это решение “из коробки”, поставил в работает. из минусов - врядли его получится как-то сильно кастомизировать

Google
Maxim
22.08.2016
09:04:03
а вот смотрите, коллеги

$ 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 ...

оба preview запущены на одном кьюблете

можно как-то шедулеру объяснить, что по возможности лучше запускать поды на разных машинах?

Sergey
22.08.2016
09:07:43
я помню там можно точно указать ноду, на которой нужно под разворачивать)) думаю, что-то вроде стратегии выбора там тоже должно быть

http://kubernetes.io/docs/user-guide/node-selection/

Maxim
22.08.2016
09:09:57
@Drago13 ненене, *этот* node selection - это не про то

если я в деплойменте для preview скажу nodeSelector: disktype: ssd

то ВСЕ поды этого деплоймента будут запускаться только на нодах, где есть такой label

если такая нода одна, то они все на нее приедут

если несколько, то будут распределяться по прихоти шедулера

Denis
22.08.2016
09:12:46
А ты хотел бы приоритет задать?

Sergey
22.08.2016
09:12:56
не понял я... Этот nodeSelection

http://kubernetes.io/docs/api-reference/v1/definitions/#_v1_podspec

не дописал, прости... Это же можно указать в спеке пода

Maxim
22.08.2016
09:13:27
что "это"?

Sergey
22.08.2016
09:13:28
почему спека конкретного пода должна влиять на все поды в округе?

nodeSelector

Maxim
22.08.2016
09:14:00
да это не про то, Сергей, я ж уже объяснил ;)

Алексей
22.08.2016
09:14:07
можно как-то шедулеру объяснить, что по возможности лучше запускать поды на разных машинах?
kubernets умеет labels или constraints? В Matathon (mesos) можно сделать вот так "constraints": [["hostname", "UNIQUE"]] можно воспользоваться https://github.com/kubernetes/kubernetes/blob/master/contrib/mesos/docs/issues.md

Google
Maxim
22.08.2016
09:16:29
@DenisIzmaylov смотри у меня есть важные сервисы, которые я предпочитаю дублировать ну тупо replicas: 2, например и хотелось бы, чтобы эти реплики по возможности расползались на разные машины иначе значительная часть смысла от дублирования пропадает

Denis
22.08.2016
09:57:06
У меня тут другая вещь интересная

deployment отправил в kubectl apply

но он весит

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

как вот логи посмотреть правильно?

kubectl logs не срабатывает

Пишет например: Error from server: pods "my-app-web-dispatcher-3729888052-87k8e" not found

Страница 8 из 958