@kubernetes_ru

Страница 57 из 958
Dmitriy
20.09.2016
06:45:49
Ну они в связке с fluentd работают

Maxim
20.09.2016
06:45:54
ну то есть понятно, что скорее всего на миллионах событий в секунду флюентд наверное усреццо но это труднодостижимый кейс сам по себе

Dmitriy
20.09.2016
06:46:03
и собирают логи с кластера

Maxim
20.09.2016
06:46:28
ааа, это было ELK vs graylog2

Google
Dmitriy
20.09.2016
06:46:31
http://kubernetes.io/docs/getting-started-guides/logging-elasticsearch/

С fluentd кстати забавно вообще было, мы добавили правило в конфиг, посылать копию всех записей в сислог на другом сервере, так у нас стали рандомом пропадать сообщения и в ELK и в сислоге, причем разные

Maxim
20.09.2016
06:49:41
o_O

Dmitriy
20.09.2016
06:50:29
ну и в логах пусто, я даже через strace уже процесс смотрел

никаких ошибок

отключили это - все перестало пропадать

Maxim
20.09.2016
07:08:06
по поводу мониторинга деплоев и кастомных метрик

программисты у меня тут ленивые, поэтому мне пришлось написать им обертку вокруг kubectl

такой недохельм

kay
20.09.2016
07:09:14
страсти какие

Maxim
20.09.2016
07:09:32
она обновляет версию в манифесте и пушает все в гитхаб с деплойным тегом

в итоге получается так:

Google
kay
20.09.2016
07:10:09
кстати какую ACL используешь для программистов?

Maxim
20.09.2016
07:10:32
скрипт (да и деплой вообще) сейчас работает так: 1. обновление версии в манифесте 2. git commit; git tag -a; git push; git push —tags 3. kubectl apply -f <манифест> дальше скрипт умирает, а все остальное разделяется на два потока 1. квай получает хук от гитхаба и начинает билдить образ 2. кубернетес получает обновленный манифест и начинает готовить его к запуску 2.1 подготавливается новый под в состоянии pending 2.2 качается образ с квая (до усера, пока квай его не опубликует) после того, как квай собрал и опубликовал новый образ 2.3 образ скачивается на ту ноду, где под в состоянии pending 2.4 гасится один из старых подов 2.5 под, бывший в состоянии pending, получает образ и стартует 2.6 гасится второй старый под 2.7 поднимается второй новый под ... профит

kay
20.09.2016
07:11:14
об этом

Maxim
20.09.2016
07:11:45
токены для аутентификации, ABAC для авторизации

kay
20.09.2016
07:11:46
"версия в манифесте" ты имеешь в виду tag?

Maxim
20.09.2016
07:11:51
да

и вот этот вышеописанный процесс надо как-то отмониторить

пока что в голову пришла только такая схема:

шаг 1: в скрипте куда-то высираем номер версии, которую деплоим шаг 2: в постСтарт хуке контейнера высираем туда же номер версии, которая задеплоилась цифирьки сошлись - улюлю, все хорошо цифирьки не сошлись - какое-то говно второй цифирьки нет больше н-минут - что-то с вероятностью пошло не так

но куда срать и чем ловить пока не придумал

нужен совет знатоков ;)

Andrey
20.09.2016
07:25:45
а почему не запустить какой-нибудь CI сервер прямо в кубике? тогда все может происходить в одном pipeline

Maxim
20.09.2016
07:26:01
заеб компании

все что можно вынести наружу, надо вынести наружу

поэтому никакого гитлаба, никаких CI внутре, etc

Fike
20.09.2016
07:26:41
У вас не 12factors app? В stdout же проще + ES +kibana
грейлог - это тот же ES, но в более интересной обертке, чем кибана

Maxim
20.09.2016
07:26:47
ничего не могу с этим сделать

Andrey
20.09.2016
07:27:34
чуток по поводу elk: лично мне нравится kibana, по крайней мере лучше всех коммерческих решений которые я перепробовал по CI: я прям в докер который тестирует приложение вмонтировал kubectl с креденшиалсами, и он после тестов делает "patch" деплоймента с новым имаджем :)

Google
Maxim
20.09.2016
07:28:19
угу, у меня есть примерно такое на тревисе

в другом проекте

там докер есть, а кубернетеса пока нет

Maxim
20.09.2016
07:32:19
так наоборот же

kay
20.09.2016
07:32:25
deployment реализует rolling update

Maxim
20.09.2016
07:32:26
все в деплойментах

Dmitriy
20.09.2016
07:32:32
просто ты про поды писал

kay
20.09.2016
07:32:44
deployment запиливает pod'ы

Maxim
20.09.2016
07:32:45
ну деплоймент же подами оперирует

Fike
20.09.2016
07:32:55
тупой вопрос и отсутствие времени на копание доков: можно в двух словах основные отличия patch от apply?

Dmitriy
20.09.2016
07:33:21
apply вроде сразу применяет изменения + создает если нету ресурса

Fike
20.09.2016
07:33:49
patch может поставить их в очередь?

Dmitriy
20.09.2016
07:34:19
ну как я понимаю - при следующем запуске пода или еще чего будет применен пропатченный ресурс

но может я ошибаюсь

kay
20.09.2016
07:34:46
вот кстати

мне нужно обновить deployment

но перезапустить pod пока не нужно. как сказать k8ы чтобы он не рестартил поды

Dmitriy
20.09.2016
07:35:45
ну как вариант сразу на паузу поставить апдейт)

http://kubernetes.io/docs/user-guide/kubectl/kubectl_rollout_pause/

Google
Тимур
20.09.2016
08:56:26
а кто какой стораж-драйвер использует?
сейчас Devicemapper(loop), в новых инсталяциях со свежим докером делаем уже direct-lvm. ибо The preferred configuration for production deployments is direct-lvm https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production

Maxim
20.09.2016
09:04:17
а что такое Paas-type work?

он там красненький для директ-лвм

https://docs.docker.com/engine/userguide/storagedriver/images/driver-pros-cons.png

о. и кстати

teamur а посмотри на любой машине с direct-lvm и кубернетесом в папку /var/log/containers

чего там в ней?

Alexander
20.09.2016
09:11:48
Чет бьюсь с установкой на ubuntu, то ntpd удаляет интерфейсы, то вот застрял на ошибке The connection to the server 10.3.0.4:8080 was refused - did you specify the right host or port? (kubectl failed, will retry 2 times)

на 8080 ничего не поднялось

Admin
ERROR: S client not available

Alexander
20.09.2016
09:14:27
$ curl -I 10.3.0.4:8080
я в netstat смотри и вижу фигу :)

на curl Connection refused

Maxim
20.09.2016
09:14:54
ну так потому и не кусают

у тебя apiserver слушает insecure_port только на холокосте

надо либо --insecure-address=0.0.0.0

либо уже https делать по-человечьи

советую второй вариант

Google
Тимур
20.09.2016
09:17:37
этого я и боялся как тогда fluentd какой-нить вкручивать?
ну дык всегда можно направить в сислог, а в качестве коллектора логов использовать уже какой-нить flume-ng и пихать уже с него в эластику

логи докера в локальный сислог

Alexander
20.09.2016
10:38:14
видимо все таки --insecure-bind-address=0.0.0.0 и конфиге это можно включить, но дело в другом Unknown admission plugin: DefaultStorageClass

Maxim
20.09.2016
10:39:01
а что у тебя в --admission-control?

Alexander
20.09.2016
10:39:56
--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,SecurityContextDeny,DefaultStorageClass,ResourceQuota

все по умолчанию из коробки

Maxim
20.09.2016
10:40:29
эээ

Alexander
20.09.2016
10:40:35
1.3.7

Maxim
20.09.2016
10:40:41
SecurityContextDeny по-умолчанию?

Alexander
20.09.2016
10:40:51
да

Maxim
20.09.2016
10:41:02
http://kubernetes.io/docs/admin/admission-controllers/

ну и DefaultStorageClass в доке нету

хз, где ты его взял ;)

у меня вот так: --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota

Alexander
20.09.2016
10:42:26
с релизов скачал и запустил

Maxim
20.09.2016
10:43:40
короче, почитай http://kubernetes.io/docs/admin/admission-controllers/

и выбери только те, что реально нужны

мне вот нужны только те четыре, что я привел

Alexander
20.09.2016
10:44:25
ага, я уже удалил неизвестные и запустил

но реально просто так не запустишь

особено убил ntpd который удалял интерфейс docker0

Maxim
20.09.2016
10:45:54
агрессивный какой ntpd...

Alexander
20.09.2016
10:49:49
Максим, спасибо за подсказки

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