@kubernetes_ru

Страница 543 из 958
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
и в /etc/crontab у меня:
Слабоумие и отвага

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
В эпоху микросервисов запихивать крон в контейнере ;)
ты предлагаешь сунуть готовый бинарник geoipupdate в специальный микросервис и планировщик запилить руками?

я не настолько хипстер

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
-n Include the FQDN in the subject when sending mails. By default, cron will abbreviate the hostname.
Зависит от версии крона, в центоси это no-daemonize

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-х разных нода кластера.

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

так тупо что даже стыдно

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, главное чтобы нод хватило

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
я пока не уверен, но кажется моя проблема решена без лишних сущностей

Job output is logged to stdout / stderr
подумал сначала что этот тот "крон" который контейнеры запускает, а не внутри контейнеров работает

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

Андрэ
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
при создании волюма код копируется из контейнера в докере
копируется, если dest пустой, если нет - берутся данные из волума.

bebebe
03.05.2018
11:50:58
так именно про кубер. я тут чтото фундаментально не допонял. Как с докер композом все это дело поднять, вопросов не возникает
вы можете создать отдельный volume, запихнуть туда сбилженную статику и маунтить её из нескольких контейнеров read-only

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

Андрэ
03.05.2018
11:52:42
копируется, если dest пустой, если нет - берутся данные из волума.
apiVersion: v1 kind: Pod metadata: name: two spec: volumes: - name: shared-data # emptyDir: {} containers: - name: c1 image: nginx volumeMounts: - name: shared-data mountPath: /usr/share/nginx/html ну вот это например? оно чистит папку в контейнере nginx

Andrey
03.05.2018
11:55:06
вы можете создать отдельный volume, запихнуть туда сбилженную статику и маунтить её из нескольких контейнеров read-only
еще volume в Dockefile должен быть объявлен после формирования данных в образе, ЕМНИП, иначе то, что создано инструкциями после, на вольюм уже не попадет

Андрэ
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/

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
хельма с головой хватает а переменные в переменные это изврат какой то

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