Vladimir
#whois ▫️Какой у вас проект или где работаете? - работаю в codefresh.io (стартап платформа ci/cd для контейнеров) ▫️В чём вы специалист? - Devops Engneer, работаю с k8s в облаках и на железе ▫️Чем можете быть интересны или полезны сообществу? - поживем - увидим ▫️Чем интересно сообщество вам? - поживем - увидим ▫️Откуда вы? - Израиль ▫️Как узнали про группу? - набрал в поиске kubernetes
Anton
1. можете создать один pv и несколько pvc смогут подцепить его, указывайте размер в pvc меньше чем в pv 2. есть external provisioners : https://github.com/kubernetes-incubator/external-storage которые могут создавать volume какие только захотите
@Visteras, экспериментировал с local-volume и фичей PersistentLocalVolumes. кубелет запускает еще на каждой ноде local-volume provisioner и следит по умолчанию за /mnt/disks/ все как в документации в общем. создаешь там директорию (можно смонтировать туда дейвайс) и у тебя появляется persistentvolume c RWO. с помощью pvc ты можешь его выделить в под. удаляешь pvc - при этом очищается физически директория - это фича provisioner несколько опасная. я пока что не пробовал как например для динамического числа реплик корректно выделить pv & pvc. посмотрю как чарт для elastic устроен, может понятнее станет (собственно elastic и хочу с локальным сторейджом запускать)
Anatoliy
Правда teamcity agent вообще запустил без вольюмов, вот думаю как оно будет артефакты отдавать, да и сколько места сожрет тоже интересно.
Anton
ну из размышлений - генеришь pv сам или через provisioner. генеришь pvc для каждой реплики в деплойменте. профит
Anatoliy
ну из размышлений - генеришь pv сам или через provisioner. генеришь pvc для каждой реплики в деплойменте. профит
да, вот только по идее pv тоже хотелось бы через деплоймент генерить. точнее в процессе. и еще что бы данные не терялись при перезапуске
Anatoliy
в общем я пока судя повсему путаюсь немного когда и как правильно работает statefulset, он вроде данные не теряет
Anton
данные не потеряются при перезапуске из local-storage. вот если ты удалишь pvc - тогда, если класс поддерживает Delete и действия по нему, похерятся данные
Anatoliy
Неплохо я упустил такую "маленькую" деталь) Я почему то думал что они зхерятся если разрывается соединение между pvc и подом с которым он работает
Anton
чтобы не генерить persistentvolume, нужно юзать классы, которые предоставляют механизмы для автоматического выделения pv
Anton
а local-volume не умеет пока что сам генерить ничего. типа админ должен создать и позаботится
Anton
ну там диск отдельный смонтировать
Anatoliy
Хм... т.е. pvc юзает класс который ему создает pv и линкуется с ним, дальше они работаеют пока pvc не убьют? а когда pvc убивают то и pv разваливается?
Anton
pv принадлежит к какому то классу. это видно через describe
Anton
pvc запрашивает себе ресурс (pv) с какими то характеристиками, классом
Anatoliy
понятно, буду в общем разбираться как создать local storage
Anton
pvc это как limits\request по cpu\mem для пода,только для volume
Anatoliy
я просто никак не могу понять как storage class решит где надо создать папку для вольюма, или просто динамически в своей папке?
Anton
я просто никак не могу понять как storage class решит где надо создать папку для вольюма, или просто динамически в своей папке?
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#provisioning если dynamic provisioning поддерживается классом и pvc требует pv именно этого класса будет выделен pv под этот pvc. ну тоесть нет ручного выделения pv под нужды
Anton
в случае с local-volume, он там ничего не решает. ты или provisioner создаете pv, которые привязанны к конкретному пути на конкретной ноде. туда и будет шедулится запуск пода, когда произойдет привязка по pvc
Anton
ты в поде используешь pvc как вольюм. а pvc закрепляется за определенным pv.
ℭ𝔞𝔯𝔯𝔬𝔩
ты в поде используешь pvc как вольюм. а pvc закрепляется за определенным pv.
как-то сложно выходит при автоскейле, может есть более удобное решение, в виде SDS я смотрю на эту штуку: https://github.com/att/netarbiter/tree/master/sds/ceph-docker/examples/helm
G72K
PersistentVolumes binds are exclusive
Я,тоже так думал, но на один pv можно навесить кучку PVC , до тех пор пока там есть место.
Anton
эт если rwx \ rox? не понимаю как это выглядеть будет физически
G72K
в случае с local-volume, он там ничего не решает. ты или provisioner создаете pv, которые привязанны к конкретному пути на конкретной ноде. туда и будет шедулится запуск пода, когда произойдет привязка по pvc
Нормальный запуск подов да и то не для dynamic provisioning, обещают только в 1.9. До тех пор под может пойти на ноду, откуда PVC не забиндить :) бесит, когда такое случается
G72K
эт если rwx \ rox? не понимаю как это выглядеть будет физически
Даже readwriteonce. От PV просто откусывается место на каждый PVC. Т.е. Один PV на 10 гб может уместить 2 PVC по 5
G72K
Я тут немного ОБС пересказываю, но дискуссия тут же на эту тему была убедительна пару месяцев назад
Салтыдык
Есть еще rook
кто-то пытался его потыкать, можно считать, что его пока нет
Anatoliy
Я,тоже так думал, но на один pv можно навесить кучку PVC , до тех пор пока там есть место.
да, а физически как это будет выглядеть? вот у меня есть pv /data, я вешаю туда pvc который поддерживает папку /conf, т.е. щас есть /data/conf ? или /data/...pvcid?.../conf ?
Anatoliy
Доказательства есть?
тоже интересно
Anatoliy
к стораджу можно несколько pvc повесить, это да, к одному вольюму - только если RWM будет, в RWO пошел нафиг, и пофигу что ты хочешь толкьо 5 Гб из 10, вроде так в доках было
Igor
Да хоть RWM хоть RWO, эти отношения экслюзивны согласно документации, только один к одному
Igor
RWM и RWO это про ноды, не про PVC и не про биндинг
Anatoliy
Да хоть RWM хоть RWO, эти отношения экслюзивны согласно документации, только один к одному
один к одному для pvc? или для pv? т.е. pvc-<->pod || pvc<->pv ? вот во втором случае вроде 1 к 1, а в первом не уверен...
Igor
один к одному для pvc? или для pv? т.е. pvc-<->pod || pvc<->pv ? вот во втором случае вроде 1 к 1, а в первом не уверен...
один к одному бывает только pv <-> pvc, других вариантов вроде не существует
Igor
там где биндинг
Volodymyr
Коллеги, а кто что использует для мониторинга kubernetes? Поделитесь пожалуйста опытом.
Alexander
Использовали датадог, планируем перейти на prometheus
Anatoliy
Использовали датадог, планируем перейти на prometheus
а стандартная кибана/эластик чем не угодили?
Alexander
Просто потому что раньше не было ресурсов менеджить свою систему мониторинга. Почему prometheus - как мне кажется, он больше подходит для хранения метрик чем эластик и плюс он есть в cncf
Dmitry
prometheus - отличный кейс. Он умеет общаться с API kubernetes'a для поиска таргетов, встроенный в kubernetes cadvisor выплевывает метрики в его формате. Ну и все плюшки самого прома (promql, очень емкое хранение итд)
Anatoliy
хм... надо будет посмотреть, потмоу что щас смотрю кибану - вроде нормально и интересно
Volodymyr
а стандартная кибана/эластик чем не угодили?
ну речь не о логах, а о метриках, или вы суете метрики в elasticsearch? если да то чем?
Anatoliy
понятно, видимо моих мозгов не хватает понять в чем отличие этих двух понятий, можете прояснить?
Volodymyr
Прямо в кубе.
а сторейдж? у меня просто в кубе все stateless
Dmitry
а сторейдж? у меня просто в кубе все stateless
Не очень понял. Конечно система мониторинга требует хранения информации. Графики ей по чему-то же строить надо)
Dmitry
Возможно ваши задачи мне не до конца понятны)
Volodymyr
как я уже сказал у меня все stateless и наврено прийдется делать какие-то Persistent Volumes только для мониторинга...
Alex
fluentd -> prometheus(внутри кластера) -> prometheus (центральный)
Anton
чет ожидал prometheus в связке с node_exporter, никак не с fluentd
Etki
понятно, видимо моих мозгов не хватает понять в чем отличие этих двух понятий, можете прояснить?
Логи - это просто текст + метаданные, метрики - это набор одинаковых скалярных значений. По первому нужно искать, включая полнотекст, второе надо резать по заданному временному диапазону и сэмплировать.
Vitalii
Вместе с Prometheus стоит упомянуть kube-state-metrics
Vitalii
Плюс все компоненты kubernetes и etcd умеют отдавать метрики для Prometheus. Извините за капитанство:)
G72K
Доказательства есть?
Попробовал сегодня, вы правы, один PV на множество PVC не раздается :( был не прав
ℭ𝔞𝔯𝔯𝔬𝔩
А weave net?
сам спросил, сам ответил - да https://www.weave.works/docs/net/latest/tasks/manage/metrics/
Anonymous
кто-нибудь https://github.com/coreos/prometheus-operator юзает? вы как ставите и обновляете, через helm?
Dmitry
кто-то сталкивался с такой ситуацией, у меня последняя стабильная версия к8 1.8.3, если два пода запушены на одной ноде то вип адреса не работают между ними, если на разных нодах то все ок, подключения по ендпоинтам работает всегда! вип адреса работают так же если идет подключения с самого хоста внутрь контейнера на этой же ноде
Serega
кто-нибудь https://github.com/coreos/prometheus-operator юзает? вы как ставите и обновляете, через helm?
есть мнение, что пока не знаешь точно нужна ли тебе эта технология или нет, - то она не нужна.
Anonymous
мнение в целом правильное, но иногда неверное :)
Anonymous
тут вопрос в том что есть helm prometheus чарт обычный (мне не подходит), есть набор yaml для prometheus operator (обновляется чаще всего), и есть набор helm prometheus charts (они их только задеплоили, и там вообще нет док что как ставить) короче я щас на втором варианте, но думаю может 3-й правильнее
Maksim
я prometheus ручками ставил)
Anonymous
ну ручками это надо в едином конфиге настраивать эндпоинты я попробовал через TPR и мне понравилось (кодеры рядом с pipeline подкладывают yaml для мониторинга и оно само работает): apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor ...
Maksim
есть какой нить? буду признателен)
Serega
TPR уже деприкейтед. yaml для мониторинга - а что имеется в виду? мониторить сам микросервис?
Anonymous
> есть какой нить? буду признателен) https://coreos.com/operators/prometheus/docs/latest/ > TPR уже деприкейтед. да, они постоянно названия меняют... короче то что вместо него :) > yaml для мониторинга - а что имеется в виду? мониторить сам микросервис? верно: мониторинг сервиса, алерты и тп
Anton
что с ним не так?
Serega
зачем что-то добавлять в прометеус, если просто при деплойменте самого микросервиса можно указать аннотации в духе: annotations: prometheus.io/scrape: 'true'
Anonymous
"есть мнение, что пока не знаешь точно нужна ли тебе эта технология или нет, - то она не нужна." :)
Dmitry
стремные имена будут в таргетах прометея
Dmitry
лучше самому руками прописывать джобы и лейблы
Serega
это спорно.