Puma
ну значит оно сильно локальное , и кубер не знает что оно не локальное и как он должен то все переносить если ничего про это не знает
Nik
Ладно, проехали. Пойду лучше issue сделаю.
Mik
Ребят кто использует в stackdriver новые custom metrics?
Puma
ну оно и не должно если файлуха не сетевая типо ceph
Nik
И дисковый массив - это сетевая игруха.
𝚔𝚟𝚊𝚙𝚜
Нода умирает, ты ее фенсишь, затем сносишь все поды и attachedVolumes с нее. В противном случае рискуешь получить data corruption
𝚔𝚟𝚊𝚙𝚜
https://github.com/kvaps/kube-fencing
Andrey
Насколько я помню, под в statefulset без удаления ноды сам не переезжает вообще, не?
Andrey
Просто переходит в статус Unknown вроде
G72K
А заставить его сделать это автоматом возможно? Волюмы - персистанс волюмы?
Да персистенс вольюмы. Посколько они readwriteonce , то куб не может их просто смонтировать на новой ноде, не убедившись что старая их точно отпустила. Список используемых вольюмов репортит кублет в статусе ноды. Пока вольюм там висит он нигде больше не может быть подмонтирован. На практике это значит, что ноду надо удалять kubectl delete node, чтобы "отпустить" вольюм (естественно убедившись что нода действительно потушена)
G72K
И кстати, сделал стецьфулсет без волюма для теста. Тоже не переезжает
Смотрите в tolerations в поде. Там кажется 300 секунд по-умолчанию для NotReady ноды. Должно переезжать после этого времени. Так же проверьте что на ноде которая NotReady действительно висит такой Taint
Grey
пипл привет скажите реально ли такое в кубике реализовать?
Grey
Исследование управления разворачиванием контейнеров. Шаг первый: запуск одного контейнера скрипт создания в кубернетисе контейнера(любого), например Hello world и назначения ему собственного имени dns Необходимо запустить контейнер tutum/hello-world получить возможность обратиться к нему, введя в браузере http://test.example.local/ Шаг второй: запуск группы контейнеров Необходимо написать скрипт, по разворачиванию и связыванию группы сервисов. В качестве примера предлагается развернуть сервис redis и веб-интерфейс к нему. скрипт создания в кубернетисе группы контейнеров и назначения ему собственного имени dns Необходимо запустить контейнер redis Необходимо запустить контейнер marian/rebrow получить возможность обратиться к нему, введя в браузере http://rebrow.example.local/ Шаг третий интеграция решения в проект скрипт удаления контейнера в кубернетисе и освобождение имени и др. ресурсов .gitlab-ci.yml в докторе с кнопкой развернуть проект скриптом .gitlab-ci.yml в докторе с кнопкой свернуть проект скриптом
G72K
Ппц, вы нам ТЗ скинули и предлагаете за вас анализ провести? Может протипы ещё в ваш гитхаб закоммитить
Denis
Да персистенс вольюмы. Посколько они readwriteonce , то куб не может их просто смонтировать на новой ноде, не убедившись что старая их точно отпустила. Список используемых вольюмов репортит кублет в статусе ноды. Пока вольюм там висит он нигде больше не может быть подмонтирован. На практике это значит, что ноду надо удалять kubectl delete node, чтобы "отпустить" вольюм (естественно убедившись что нода действительно потушена)
Там насколько помнится же ReconcilerMaxWaitForUnmountDuration по умолчанию стоит в 6 минут? По факту через 6 минут контроллер должен отмонтировать вольюм от сбойной ноды и примонтироватьк новому поду, который зашедулился на другой здоровой ноде https://github.com/kubernetes/kubernetes/blob/master/pkg/controller/volume/attachdetach/attach_detach_controller.go
Denis
var DefaultTimerConfig TimerConfig = TimerConfig{ ReconcilerLoopPeriod: 100 * time.Millisecond, ReconcilerMaxWaitForUnmountDuration: 6 * time.Minute, DesiredStateOfWorldPopulatorLoopSleepPeriod: 1 * time.Minute, DesiredStateOfWorldPopulatorListPodsRetryDuration: 3 * time.Minute, }
Grey
и еще вопрос допустим я развернул контенер через kubectl но у меня айпи не выдается NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello ClusterIP None <none> 42/TCP 3d ingress-e3550eeed34420618392ae2267179c3a ClusterIP 10.43.106.134 <none> 80/TCP 3d
Stas
cloud native transformation consulting который мы заслужили: 1) Конечно ранчер2 проверенный стабильный вариант для продакшена 2) Нет, зачем вам эти сложности с IP фабрикой, оверлейные сети для этого и создавались 3) Естественно мы умеем готовить вольюмы на мултипл врайт, вы слышали про freeNas? 4) Прометеус отлично кластеризуется через haproxy 5) Нет, с приложениями ничего делать не надо k8s сам сделает грейсфул шатдаун 6) Конечно оставляйте pm2 7) Конечно нужно переносит вебсферу
Stas
цитировать себя неприлично, но это прям оно, по второму шагу потом еще будут спрашивать как на хостах выключить THP под редиску
Вадим
оффтоп. было уже тут? Скидка курс и экзамен по Kubernetes. https://training.linuxfoundation.org/cyber-monday-2018/
Vadim
цитировать себя неприлично, но это прям оно, по второму шагу потом еще будут спрашивать как на хостах выключить THP под редиску
тут надо добавить все же новые пункты типа "AWS/GCP/Azure вам не нужен, они только деньги гребут, всё на бареметал из коробки работает"
Stas
тут надо добавить все же новые пункты типа "AWS/GCP/Azure вам не нужен, они только деньги гребут, всё на бареметал из коробки работает"
да, забыл. Еще что-то на той неделе хотел дописать, а вспомнил: 8) В helm/stable есть все дополнительные компоненты, которые вам понадобятся
Denis
var DefaultTimerConfig TimerConfig = TimerConfig{ ReconcilerLoopPeriod: 100 * time.Millisecond, ReconcilerMaxWaitForUnmountDuration: 6 * time.Minute, DesiredStateOfWorldPopulatorLoopSleepPeriod: 1 * time.Minute, DesiredStateOfWorldPopulatorListPodsRetryDuration: 3 * time.Minute, }
Я сам лично наблюдал когда нода, на которой был запущен sts и примонтирован pvc уходила в состояние NotReady, то спустя некоторое время, этот sts пеезапускался на другой ноде и монтировался нужный вольюм, до этого под висел в состоянии pending
G72K
Хм, интересно. Не знал. Чего то оптимизма это не вселяет : https://github.com/kubernetes/kubernetes/issues/61832#issuecomment-378792763
Denis
Хм, интересно. Не знал. Чего то оптимизма это не вселяет : https://github.com/kubernetes/kubernetes/issues/61832#issuecomment-378792763
Вот поэтому я и вытащил все свои sts из кубернетеса и поставил рядом с кластером на обычные инстансы. ссыкатно как-то
Artyom
При прочих равных думаю смотрят
Oleg
Всем привет. Подскажите federation v2 в aws можно завести ?
Oleg
если нет, то кто как строит multiple region k8s cluster именно в aws
Andrey
скажите мне, а почему операторы ставятся из хелм пакетов?
G72K
Я сам лично наблюдал когда нода, на которой был запущен sts и примонтирован pvc уходила в состояние NotReady, то спустя некоторое время, этот sts пеезапускался на другой ноде и монтировался нужный вольюм, до этого под висел в состоянии pending
Почитал код, этот тайм-аут срабатывает только когда контроллер хочет перекинуть вольюм на другую ноду. Чтобы это случилось там должен запуститься под с этим вольюмом, для этого старый под должен удалиться. Мне кажется если для sts подов задавать NotReady toleration в бесконечность, то под сам никогда не переедет и вольюм сам не отцепится
Nik
И пока вопрос сбоку - можно портфорвардить сервис, который зааттачен на енжпоинты а не на под?
Oleg
при недоступности ноды вешается taint с эффектом NoSchedule
Oleg
вопрос - можно ли как то сменить на NoExecute?
Oleg
т.к. при NoSchedule поды не уезжают с умершей ноды
Oleg
Taints: node。kubernetes。io/unreachable:NoSchedule
A
Подскажите по вопросу: устанавливаю переменную окружения в initcontainers и как мне получить к ней доступ из контейнера пода?
Nikolai
Приветствую Подскажите сценарий с использованием kubespray - как добавить новую ноду и включить ее в etcd, после этого удалить одну из существующих нод, на которой используется etcd Если в инвентаре заменить одну ноду на другую в секции [etcd] и запустить сценарий cluster.yml, то он завершается с ошибкой - при этом на старой ноде etcd продолжает работать, а на новой падает с ошибкой etcdmain: error validating peerURLs
Nikolai
В документации четко сказано что подходит сценарий cluster.yml, но походу это не работает
Nikolai
сам плейбук зафейлился на этом шаге RUNNING HANDLER [etcd : Backup etcd v2 data] *************************************************************************************************************************************************************** Tuesday 27 November 2018 13:06:24 +0000 (0:00:02.389) 0:25:31.410 ****** FAILED - RETRYING: Backup etcd v2 data (3 retries left). changed: [k8smaster2] changed: [k8smaster1] FAILED - RETRYING: Backup etcd v2 data (2 retries left). FAILED - RETRYING: Backup etcd v2 data (1 retries left). fatal: [k8snode4]: FAILED! => {"attempts": 3, "changed": true, "cmd": ["/usr/local/bin/etcdctl", "backup", "--data-dir", "/var/lib/etcd", "--backup-dir", "/var/backups/etcd-2018-11-27_13:06:16"], "delta": "0:00:00.009463", "end": "2018-11-27 13:06:42.249767", "msg": "non-zero return code", "rc": 1, "start": "2018-11-27 13:06:42.240304", "stderr": "2018-11-27 13:06:42.248965 I | open /var/lib/etcd/member/wal: no such file or directory", "stderr_lines": ["2018-11-27 13:06:42.248965 I | open /var/lib/etcd/member/wal: no such file or directory"], "stdout": "", "stdout_lines": []}
Puma
Там есть отдельные сценарии для добавить удалить
Artem
Добрый день. Подскажите, кто как деплоит в кубернетес свои сервисы?
Puma
Я собираюсь все на гитлаб ci все сделать в целом рекомендую его
Artem
я в самом кубере что испозуешь?
Nikolai
You may want to add worker, master or etcd nodes to your existing cluster. This can be done by re-running the cluster.yml playbook, or you can target the bare minimum needed to get kubelet installed on the worker and talking to your masters. This is especially helpful when doing something like autoscaling your clusters.
Artem
через kubectl или helm или что-то еще?
Nikolai
какие другие сценарии?
Nikolai
Есть scale.yml еще - сейчас его еще попробую
Puma
я в самом кубере что испозуешь?
Пока смотрю на Хелм для части инфраструктуры где он подходит
Puma
Часть видимо надо будет дапом
Anton
helm и dapp отличаются немного нишей. потому что дапп как бы содержит в себе деплой с помощью хелм
Vadim
дефолтно вроде 10000 тыщ, регулируется через ETCD_SNAPSHOT_COUNT
Nikolai
возможно, но это действие плейбук kubespray запускает
Puma
helm и dapp отличаются немного нишей. потому что дапп как бы содержит в себе деплой с помощью хелм
Ну я погонял Хелм и уже вижу что не очень понятное как например откатывать обратно все
Anton
Helm rollback?)
Puma
Не увидел там правильного роллбека
A
Подскажите по вопросу: устанавливаю переменную окружения в initcontainers и как мне получить к ней доступ из контейнера пода?
Суть в обмене данными внутри пода, попробовал через общий вельюм и данные через файл, но мне нужно использовать эти данные в аргументах запуска, но к моменту запуска контейнера этого файла почему-то нет, а если после запуска заходить то он есть. Как быть?
A
Helm rollback?)
Что подразумевать под ролбеком в разрезе хелма?
Oleksii
Господа, а кто то сталкивался с бедой, когда при apply манифеста не принимает annotations? при том что они правильные
Anton
Что подразумевать под ролбеком в разрезе хелма?
у helm есть прошлое состояние релиза, он вкатит патч и постарается привести к прошлому состоянию
Oleksii
ошибки нет, просто unchanged
Anton
Не увидел там правильного роллбека
правильный, это который?
Puma
правильный, это который?
Ну который не сломает ничего при неправильном деплое
Puma
Ну я ещё только начал думаю через неделю уже смогу рассказать что и как
A
Ну который не сломает ничего при неправильном деплое
Неправильный тоже понятие растяжимое
Puma
Ну вроде как из описания фланта дап должен решить часть проблем, но опять таки Хелм я уже смотрел а дап нет
Anton
Ну я ещё только начал думаю через неделю уже смогу рассказать что и как
подождем =) я с проблемами при rollback сталкивался только когда меняется набор объектов