@kubernetes_ru

Страница 156 из 958
Denis
07.04.2017
20:39:08
Как тема с контейнерами зашумела )

Paul
07.04.2017
21:05:51
Kelsey и Мирантис активно работают, чтобы жизнь была проще в этом направлении))
при этом единственный реально заработавший у меня HA-кластер удалось поставить только с помощью Злых Марсиан. Которых отсюда выпер модератор :)

Карго с вивом увы - не работает

Roman
07.04.2017
23:55:50
Что вы используйте для incremental mongodb backup? только для полных снапшотов бэкап на s3 нахожу образы

Google
Victor
08.04.2017
07:13:46
а между вивом и фланелькой кто какой выбор сделал? если можно, то с обоснованием

Paul
08.04.2017
10:42:33
а между вивом и фланелькой кто какой выбор сделал? если можно, то с обоснованием
Вив, у меня нет контроля над L2, плюс вив может шифровать данные (но при этом fast path отключается)

Что вы используйте для incremental mongodb backup? только для полных снапшотов бэкап на s3 нахожу образы
Возможности инкрементально выгрузить данные из монго не существует.

Victor
08.04.2017
11:02:30
Вив, у меня нет контроля над L2, плюс вив может шифровать данные (но при этом fast path отключается)
не ясно насчет контроля над L2.. а кроме ширования плюсов нет? просто фланель, как я понял, вариант более распространенный

и каково ваше мнение насчет держать весь к8 на отдельной lxd?

Paul
08.04.2017
11:08:55
и каково ваше мнение насчет держать весь к8 на отдельной lxd?
В смысле? Пока что я не очень понимаю вопрос

Victor
08.04.2017
11:11:18
ну что бы на одной ОС держать несколько вариантов исполнения к8, пока не определюсь с лучшим стеком

Aleksandr
08.04.2017
11:18:49
k8 не работает в lxc/lxd :(

Eugene
08.04.2017
11:37:49
работает, но нужно патчить https://github.com/opencontainers/runc/pull/1386/files https://github.com/kubernetes/kubernetes/pull/43079

Victor
08.04.2017
12:13:21
k8 не работает в lxc/lxd :(
печаль ☹️патчи не удел продакшена, тем более пока не разобрался в теме

Google
Paul
08.04.2017
13:45:17
ну что бы на одной ОС держать несколько вариантов исполнения к8, пока не определюсь с лучшим стеком
Пока что oci (по-моему он так называется, поправьте меня) - в альфе и работает только докер. Хочется верить, что к 1.7-1.8 доедет до стабильного

он не OCI, а CRI, вспомнил термин

Ihor
08.04.2017
20:07:41
CRI (для docker) в бете начиная с 1.6

Планируем что в 1.7 расширится поддержка до rkt как минимум, stable будет в 1.7 или 1.8

К слову, планирование фич на 1.7 будет уже в ближайший вторник

Victor
08.04.2017
21:09:56
поправьте, но cri - это плугин для контейнеров внутри к8. я же изначально спрашивал, нормально ли будет на изначальной оси рубануть кусок lxd и на нём поднять весь к8, а потом рубануть ещё кусок и поднять к8 с отличающейся архитектурой. и что бы потом их переключать, например.

Victor
08.04.2017
22:02:37
да, контейнер внутри контейнера наше всё)

например один к8 на фланели, второй на виве

Paul
08.04.2017
22:18:15
сомнительно что оверлейная сеть будет работать. Но попробовать никто не запрещает, конечно

коллеги, сталкивался ли кто-нибудь с сообщениями в сислоге вида: kubelet[4245]: E0408 22:29:56.209468 4245 remote_runtime.go:109] StopPodSandbox "f61b626d23f0b36b1542c0ddec0b157c504923b912a66e3743b263849905c668" from runtime service failed: rpc error: code = 2 desc = NetworkPlugin cni failed to teardown pod "tiller-deploy-1491688397-8vkfm_kube-system" network: CNI failed to retrieve network namespace path: Error: No such container: f61b626d23f0b36b1542c0ddec0b157c504923b912a66e3743b263849905c668 Apr 8 22:29:56 app3 kubelet[4245]: E0408 22:29:56.209479 4245 kuberuntime_gc.go:138] Failed to stop sandbox "f61b626d23f0b36b1542c0ddec0b157c504923b912a66e3743b263849905c668" before removing: rpc error: code = 2 desc = NetworkPlugin cni failed to teardown pod "tiller-deploy-1491688397-8vkfm_kube-system" network: CNI failed to retrieve network namespace path: Error: No such container: f61b626d23f0b36b1542c0ddec0b157c504923b912a66e3743b263849905c668 Известен ли способ лечения?

Aleksandr
09.04.2017
05:29:14
сомнительно что оверлейная сеть будет работать. Но попробовать никто не запрещает, конечно
Именно поэтому в lxc/lxd не работает docker swarm и другие... Там где использовать пытаются overlay network

Let Eat
09.04.2017
08:17:13
"NetworkPlugin cni failed to teardown pod"

Andrey
09.04.2017
14:18:58
всем привет создал новый инстанс монгодб чтобы данные мигрировать... сделал дамп большой таблицы получил OOM в ноде, она удачно вывалилась и похерила кучу подов, продакшн упал через 10 минут все просралось и восстановилось, но роутинг не шел пока вручную игресс контроллер не перезапустил какого то хрена вопрос: порекомендуйте набор практик чтобы такой жопы не было плиз?

Let Eat
09.04.2017
14:23:27
Pod limits

Чтобы падала не нода, а под

Andrey
09.04.2017
14:25:21
ну у меня как бы разброс сильный... та же монга жрет под задачи неограниченно то есть ей 2 гига хватает обычно, но может бурстом до 16 выжрать если я поставлю лимит 16 и реквест 16 то эти 16 будут вечно заняты и шедулер будет отбивать другие поды типа "нафиг пошел, памяти нет" а по факту 2 гига только юзаться и будет

а реквест 2 и лимит 16 = все равно OOM в результате

Google
Andrey
09.04.2017
14:28:03
есть возможность на текущем уровне кубернетеса задать алгоритмы oom eviction?

важность там, туда-сюда

или типа "это не проблема кубернетеса, а проблема линукса под капотом"? :)

Let Eat
09.04.2017
14:43:22
важность там, туда-сюда
косвенно важность задается: guaranteed (requests == limits) > burstable (requests < limits) > best effort (limits == 0)

kubelet может вышибать поды когда ресурс подбирается к отметке, описано тут https://kubernetes.io/docs/concepts/cluster-administration/out-of-resource/

но ему тоже необходимо время на среагировать

Andrey
09.04.2017
14:45:09
Да, я че то такое читал но не мог вспомнить ссылку, спасибо

Let Eat
09.04.2017
14:45:56
> если я поставлю лимит 16 и реквест 16 то эти 16 будут вечно заняты и шедулер будет отбивать другие поды типа "нафиг пошел, памяти нет" разумный оверкомит нужен, совсем без лимитов жить тоже не дело

Paul
09.04.2017
14:46:17
а реквест 2 и лимит 16 = все равно OOM в результате
Есть лимит для конкретно пода и для неймспейса целиком. Ограничивайте неймспейс

Let Eat
09.04.2017
14:50:21
там есть еще хаки навроде прибивания oom_score в -9000 для critical pods. Если повесить annotation: {scheduler.alpha.kubernetes.io/critical-pod: 1} , то ваш под тоже важным и невышибаемым станет. но это скользкая дорожка.

Andrey
09.04.2017
14:55:37
Я вот из доки понял что эвиктится по тому кто как ресурсы запрашивает и потребляет. Но не увидел или пропустил как можно повлиять вручную (шедулер альфа не подходит) на формулу.

То есть вот этот сервис и вот эта база должны стоять до конца

Let Eat
09.04.2017
14:56:20
никак, приоритеты и SLA для подов будут в 1.7 или 1.8 или когда-нибудь еще, но сейчас нет :)

Andrey
09.04.2017
14:56:49
Ок

Неприятно слышать "никак" для вещей которые уже в продакшне )

Let Eat
09.04.2017
14:58:49
повесьте на отдельную ноду эту базу и всё

если ресурсов нехватает - кто-то должен умереть, чудес не бывает

Andrey
09.04.2017
15:04:06
Ну я в целом только себя и чмоню: не предусмотрел, не ознакомился, не хватило знаний, и тп

Paul
09.04.2017
17:28:43
Неприятно слышать "никак" для вещей которые уже в продакшне )
Тут только лимит на под, увы. С монго иначе никак. В случае нормальной ос придёт OOM killer

Andrey
09.04.2017
18:16:09
самое интересное что не ограничивая ресурсы и пытаясь залить большие объемы инфы я получаю oom для всего кластера, если ограничиваю то операция не может выполниться потому что оперативки не хватает (пытался залить 6 гб инфы с ограничением на под в 6 гб оперативы, странно так-то) короче, пришло время избавляться от монги, буду в сторону cocroachdb ковырять :)

Google
Andrey
09.04.2017
18:24:20
я кстати думал что приложения выполняются в "песочнице", и типа не смогут заюзать больше оперативки чем прописано в лимитах а по факту их просто пристреливают когда они переходят за лимит... открытие сегодняшнего дня

или... они работают в "песочнице" и все норм, но если глобально лимит превышен то пристреливают те которые в очереди на убийство согласно формуле? так правильнее сформулировал?

Paul
09.04.2017
18:56:47
честно говоря я не в курсе, но стоит посмотреть в документации

судя по тому, что я в доке прочитал, контейнер, который попытается вылезти за квоту - просто не получит ресурсов. Терминирован он не будет.

Paul
09.04.2017
20:54:16
А можно линк? А то я как-то читал про убиение
в оффдоке сказано, что лимиты по памяти и процу передаются контейнеру через аргумент в докере. Если контейнер выскочит за лимит (то есть докер проигнорирует ограничение, хотя вообще-то не должен) - контейнер будет убит

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#how-pods-with-resource-limits-are-run

в общем-то вполне логичное поведение. Если контейнер вышел за пределы ограничений - его поведение точно ненормально и он подлежит уничтожению. Мало ли что еще он натворит?

Andrey
09.04.2017
20:59:31
Если лимит на память гиг и вы куском этот гиг аллоцируете - докер прибьет, если же сначала саллоцируете 500, а затем еще гиг - ничего не произойдет

Let Eat
09.04.2017
21:03:21
Fike
09.04.2017
21:29:43
у меня ощущение, что докер вообще напрямую с памятью контейнера не контактирует и знает кто кому сколько выделил только пост-фактум, собирая метрики, и аллокация и ограничения действительно происходит только на уровне ОС

Let Eat
09.04.2017
21:48:30
докер настраивает cgroups, всю работу делает ядро

Vitaliy
10.04.2017
08:39:03
всем ку. kube-apiserver, параметер —apiserver-count что он конкретно делает? кто-то вкурсе?

Let Eat
10.04.2017
08:39:23
жуткая вещь

определяет сколько записей будет добавлено в kubernetes.svc

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

если он больше, чем живых apiservers -> все живые добавляют себя и не парятся, а лишние "мертвые" записи так и висят, и периодически отдаются клиентам, клиенты в этом случае не могут свзяться с apiserver и спамят в лог

Vitaliy
10.04.2017
08:45:07
тоесть, для 3х-нодового сетапа мастеров, мне достаточно манифест подсунуть с этим параметром=3? если он просто менеджит кол-со записей но не сами контейнеры с апи.

Let Eat
10.04.2017
08:45:31
вобщем если хотите настоящий HA то не ставьте этот параметр и терпите вечный трафик в etcd на обновление этой записи каждые N секунд. в противном случе если apiserver упадет (или будет выключен для обновления скажем), то 1/X коннектов к apiserver будут с ошибкой, где X - количетсво apiservers

Google
Vitaliy
10.04.2017
08:47:27
ок, понял. А если я хочу ему передать параметр bind (не равный advertise) и на "advertise-нный" адрес повесить балансер (nginx к примеру) то можно будет не терпеть?

Let Eat
10.04.2017
08:49:11
ок, понял. А если я хочу ему передать параметр bind (не равный advertise) и на "advertise-нный" адрес повесить балансер (nginx к примеру) то можно будет не терпеть?
не все поды могут (должны) покидать kube, для доступа к балансеру придется, если вам это не страшно и вы считаете, что балансер у вас HA, то должно сработать

мы для себя решили незамечать проблему и оставить как есть --apiserver-count=1 :)

Vitaliy
10.04.2017
08:52:43
эт значит что клиенты будут ходить в разные api, постоянно. а если они в разных DC? на сколько вообще (по вашему опыту) критично время отклика api?

Let Eat
10.04.2017
08:53:46
у нас нет практического опыта иметь один кластер на несколько DC. мне кажется лучше их держать внутри DC , а наверх повесить federation

но это теория :)

в etcd всё равно пишется в лидера, а лидер один и если он в другом DC, то может получится 2 хопа между DC: client (dc1) -> apiserver (dc2) -> etcd leader (dc3)

Vitaliy
10.04.2017
08:58:02
кстати я не знал этого про etcd. я дцумал что принимает "принявший" и потом уже они внутри синхронизируются. мало знаю про это. спасибо

моя косноязычна, сорри.

Maksim
10.04.2017
08:58:52
ТОгда были бы коолизии...

И нужно было бы изобретать механизм их разрешения

Vitaliy
10.04.2017
09:02:49
еще вопрос: на какой адрес должен адвертайзиться апи? бест праксис какой?

Let Eat
10.04.2017
09:03:56
адрес по которому он доступен :)

Vitaliy
10.04.2017
09:07:24
ну это в обзем понятно.... но после фразы "не все поды могут (должны) покидать kube, для доступа к балансеру придется" но если я привяжу апи к "внешнему адресу" то в чем разница с просто nginx на том-же адресе/порте?

Maksim
10.04.2017
09:11:54
Это что промт перевод?

Let Eat
10.04.2017
09:12:09
нет :)

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