
Andor
03.05.2018
07:45:20
карочи задача: мне надо периодически обновлять данные в сторейже
сделал для этого:
1) стейтфулсет с моим сервисом
2) крон с моей задачей. живёт в том же поде что мой сервис
3) инит-контейнер который запускает ту же самую задачу при старте пода
проблема в том что крон не работает :/

Andrey
03.05.2018
07:46:08
Крон как сервис или контейнер с кроном?

Andor
03.05.2018
07:46:23
контейнер с кроном

Google

Andor
03.05.2018
07:47:00
кронджоб куберовский был бы идеален, но в амазоне нельзя монтировать волюмы в ридонли для моих сервисов и на запись для кронджобы
было бы намного проще

dk
03.05.2018
07:47:42

Andor
03.05.2018
07:48:11
хуже
command: # kinda ugly workaround to get logs from cron jobs
- /bin/bash
- -e
- -c
- >
echo "starting cron at $(date)" &&
mkfifo -m 0660 /var/log/cron.log &&
cron &&
exec tail -f /var/log/cron.log
и в /etc/crontab у меня:

dk
03.05.2018
07:48:56
Наркомания

Andrey
03.05.2018
07:48:58
я бы обернул в supervisord для полноты извращений

Andor
03.05.2018
07:49:02
root@geoip-test-1:/# cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
46 16 * wed * root /usr/bin/date >> /var/log/cron.log && /usr/bin/geoipupdate -v -f /etc/GeoIP/GeoIP.conf -d /data >> /var/log/cron.log
покажи в каком конкретном месте у меня извращение?

Lex
03.05.2018
07:49:22

Andor
03.05.2018
07:49:26
вроде обычная задача "запускать периодическую штуку"

Andrey
03.05.2018
07:49:48
докер имеет правильную команду CMD

Google

Andor
03.05.2018
07:49:52

Lex
03.05.2018
07:50:14
В эпоху микросервисов запихивать крон в контейнере ;)

Andor
03.05.2018
07:50:47
я не настолько хипстер

dk
03.05.2018
07:50:56

Lex
03.05.2018
07:51:37

Andor
03.05.2018
07:52:57
у меня имдж имеет бинарник крона, но он опциональный, entrypoint там по-умолчанию - моя задача, которая выполняет одноразовую операцию
у меня сервис который использует базы
и в кроне - обновлялка этих баз
горячая замена поддерживается самим сервисом
обновлялка обновляет правильно, через временный файл
я хочу чтобы крон запускал мою команду, а он этого не делает
вот ещё немножко подробностей, возможно не до конца понятно объяснил сразу

Andrey
03.05.2018
08:10:01
А у вас какой именно крон? Он же разный бывает. У меня в контейнерах похожее творилось

Andor
03.05.2018
08:10:36
убунтовский дефолтный в 16.04 (vixie-cron)
контейнер на убунте 16.04 сделан
RUN crond -n ?
-n Include the FQDN in the subject when sending mails. By default, cron will abbreviate the hostname.
не кажется опцией, которая мне поможет

Google

dk
03.05.2018
08:32:02

Andor
03.05.2018
08:34:19
походу vixie-cron везде и всюду патченый-перепатченый

Stanislav
03.05.2018
08:34:43
Господа! Кто нибудь сталкивался с такой проблемой? До того как я создал enviroment все работало.
# kubectl —kubeconfig=config.yml get pods
error: Error loading config file "config.yml": v1.Config: Contexts: []v1.NamedContext: Clusters: []v1.NamedCluster: v1.NamedCluster: Name: Cluster: v1.Cluster: Server: CertificateAuthorityData: decode base64: illegal base64 data at input byte 60, error found in #10 byte of ...|S0tLS0=\n","server"?..., bigger context ...|1THRnbz0NCi0tLS0tRU5EIENFUlRJRklDQVRF\nLS0tLS0=\n","server":"https://prod.local.com"},"name":"gitlab|...

Denis
03.05.2018
08:38:01
Можете подсказать, как сделать несколько реплик на разных нодах кластера
через nodeSelector получается только на одну ноду
nodeSelector:
kubernetes.io/hostname: node1.example.org
kubernetes.io/hostname: node2.example.org
задача: получить 2 реплики пода на 2-х разных нода кластера.

Stanislav
03.05.2018
08:38:56

Denis
03.05.2018
08:39:14
а статически задать можно?

Stanislav
03.05.2018
08:39:44
по лейблам если только раскидать
на вскидку

Denis
03.05.2018
08:40:08

Stanislav
03.05.2018
08:41:20
Но это совсем не kube way)

Andor
03.05.2018
09:13:12
ха-ха
нашёл ошибку благодаря глазам друга
# m h dom mon dow user command
- 46 16 * wed * root ...
+ 46 16 * * wed root ...
так тупо что даже стыдно

Alexander
03.05.2018
09:20:54

Andor
03.05.2018
09:21:32
они смогут на одну ноду приехать же?

Alexander
03.05.2018
09:22:02
они смогут на одну ноду приехать же?
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values: [ 'myapp' ]
topologyKey: kubernetes.io/hostname

Andor
03.05.2018
09:22:54
вот кстати а как скедулер поды положит если одновременно и аффинити к группе нод и анти-аффинити подов друг к другу?
не будет ли такого что один из трёх останется в pending?

Google

Alexander
03.05.2018
09:23:59
У меня нормально работает, даже если множество правил nodeSelectorTerms, главное чтобы нод хватило

Denis
03.05.2018
09:24:17

Andor
03.05.2018
09:24:36
ништяк

Deep Sea
03.05.2018
10:04:19
@Andorka не пробовали https://github.com/aptible/supercronic?

Andor
03.05.2018
10:04:34
и как же он мне поможет?
мне его в имдж с убунтой ставить?

Deep Sea
03.05.2018
10:04:59
Job output is logged to stdout / stderr

Andor
03.05.2018
10:05:09
я пока не уверен, но кажется моя проблема решена без лишних сущностей

Андрэ
03.05.2018
11:40:59
Парни, а где глянуть, как правильно делают для, например, php-fpm контейнер и nginx контейнер? Как их nginx статику раздавать? Копировать ее при сборке образа внутрь как то не ок

Konstantin
03.05.2018
11:43:48

Андрэ
03.05.2018
11:43:51
Вроде понятно, что надо делать общий volume. Но есть его на папку с данными указать на контейнер phpfpm, то папка станет пустой? верно? или надо как-то при старте контейнера phpfpm копировать эти данные в volume? в общем, запуталося
а, то есть весь код, а не только статику?
а как в волюм этот код доставить?

Konstantin
03.05.2018
11:44:51

Андрэ
03.05.2018
11:45:26
так именно про кубер. я тут чтото фундаментально не допонял. Как с докер композом все это дело поднять, вопросов не возникает
А с кубером я эту задачу не решал пока, только самодостостаточнеые контейнеры пока были
Хотя про докер композ я имею ввиду именно проброс волюма между сервисами. Ну я так делал

Deep Sea
03.05.2018
11:47:24
при создании волюма код копируется из контейнера в докере

Андрэ
03.05.2018
11:47:58
ну вот у меня именно что не скопировался, а в контейнера папка стала пустая

Google

Андрэ
03.05.2018
11:48:14
отсюда и понял что я ничего не понял

Deep Sea
03.05.2018
11:48:37
я вообще запускаю нжинкс из того же image что и php-fpm
для файлов генерируемых пхп подключаю волюм

Konstantin
03.05.2018
11:49:29

bebebe
03.05.2018
11:50:58

Konstantin
03.05.2018
11:52:29
а, то есть весь код, а не только статику?
сорри, дичь гоню) код в образе конечно же. В общем тут несколько путей и опять же зависит от окружения. У меня был как-то CDN, там одно - ассеты кешировались в CDN, если нужно чтобы nginx сам держал - другое. В большинстве случаев собирал отдельный образ nginx+статика или какой-то общий волум со статикой

Андрэ
03.05.2018
11:52:42

Andrey
03.05.2018
11:55:06

Андрэ
03.05.2018
11:55:18
Должны же быть примеры в живом мире) я бы поразбирался, только помогите., где глянуть)

Andrey
03.05.2018
11:56:51
да, точно
Changing the volume from within the Dockerfile: If any build steps change the data within the volume after it has been declared, those changes will be discarded.

Paul
03.05.2018
12:13:48
коллеги, кто-нибудь пробовал работать с вот этим инструментом? выглядит очень многообещающе: https://openebs.io/

Banschikov
03.05.2018
12:15:26

Anton
03.05.2018
12:30:35
чет меня бесить потихоньку начинает helm. нет ну все класно, кроме того что в values.yaml нельзя ссылаться на другие values.
и потом начинаешь в ci или новые yaml файлы генерить для деплоя или извращаться с --set X.Y[0].name= что скорее всего приведет к фейлу.
смотрю на этой волне на ksonnet очередной раз, уже не так пугающее jsonnet выглядит как будто бы.
кто нить использует у себя?

Sergey
03.05.2018
12:33:44
хельма с головой хватает а переменные в переменные это изврат какой то

Andor
03.05.2018
12:40:00