D
Yerlan
ясно... спасибо за помощь... пошел разворачивать кластер через kubespray
D
удачно все развернуть
Anton
тут неожиданно понял что метрика container_memory_working_set_bytes содержит в себе memory.stat total_inactive_file, да вообще все содержит в себе =) я то до этого думал что fs cache глобальный, а он оказывается в рамках cgroup живет.
кто нить алерт по приближению к memory limit пилил?
так получается что container_memory_usage_bytes - container_memory_cache похоже соответствует тому набору ram, за которым нужно следить.
Andor
немного не в тему этого чата вопрос :)
Pavel
Andor
ну это скорее в церковь метрик, чем про кубернетис
Anton
эт метрики кубера, вопрос его лимитов
Andor
это метрики из cadvisor'а
Andor
они не кубер-специфичны
Anton
ага, а он часть kubelet
Andor
вот именно!
Anton
Andor
У меня - на usage
Pavel
алерт по ram в итоге на что ориентируется?
container_memory_usage_bytes - мутная метрика, в двух словах. В мануале по cgroup пишут дословно так: If you want to know more exact memory usage, you should use RSS+CACHE(+SWAP)
value in memory.stat(see 5.2).
Nata
Привет. А тут есть те, кто юзает local-provisioner?
Мэттью
я
Nata
Есть вопрос. 95% времени всё работает ОК. Но иногда pvc из стейтфулсета начинают роутиться на одну и ту же ноду, и соответственно podы по affinity не могут запуститься. В логах все как бы как обычно, ничего такого, просто допустим 12 pvc из 15 ушли на одну ноду. Как такого избегать и почему такое может случаться вообще?
Nata
*при создании стейтфулсета
Anton
local-provisioner же не создает сам pv
Nata
он как раз создает pv (у меня создает )))
Anton
*при создании стейтфулсета
в предыдущих версиях было поведение, когда шедулинг не учитывал расположение pv. потом нужно было feature gate включать чтобы шедулер сначала нашел где pv находится
Anton
Nata
и допустим на каждой ноде висит по 10 свободных pv. Но при создании statefulseta pvc решает все pvc для парочки нод отправить допустим на четвертую
Nata
запускаются поды провижнера, смотрят директорию, находят точки монтирования, создают PV
Anton
У меня - на usage
в контейнере писали здоровенный файл. процессы памяти жрали мало, но total_inactive_file вырос до лимита. usage не плох, конечно, но нафига алертить когда файловый кэш съедает рам
Nata
Anton
Nata
ну это я выразилась не очень. Они постоянно и работают, и ищут точки монтирования
Anton
https://github.com/kubernetes-incubator/external-storage/tree/master/local-volume
Anton
здесь все полностью описано
Anton
Creating a StorageClass (1.9+)
To delay volume binding until pod scheduling and to handle multiple local PVs in a single pod, a StorageClass must to be created with volumeBindingMode set to WaitForFirstConsumer.
Anton
в 1.9 требовалось такое
KUBE_FEATURE_GATES="PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true"
Anton
в 1.10 уже такого не просят
Nata
блин, дичь написала
Anton
ок, local volume provisioner превращает точки монтирования в /mnt/disks в pv. так ведь? и это забота админа намутить точек монтирования
Anton
на какой машине смонтировано, там pv и создастся
Mikhail [azalio]
Кто знает если у меня нода ушла в даун - когда сменится node.podcidr?
Nata
1) я сделала точки монитрования, всё ок. Кубер нашел их. Допустим на 4 серверах 2) я запустила создание стейтфулсета с pod antiaffinity и 5pvc 3) кубер решил отправить все pvc только на ноду 01 и 04 (или любые другие, тут без разницы) 4) в стейтфулсете должно быть три пода. в итоге могут запуститься только два, PVC для которых ушли на 01 и 04.
Anton
Nata
то есть нужно еще pvc affinity или что-то в этом роде, а вот тут уже не понятно
Vadim
часть из этого будет в 1.12 емнип - https://github.com/kubernetes/kubernetes/pull/67556
Mikhail [azalio]
Nata
Vadim
вроде полноценные клаудпровайдеры умеют это лучше, local вряд ли приоритет
Nata
Nata
маунтить папку в папку дешевле облака 😂
Stanislav
Костыли... Вот у нас ща - костыли... В кубернетес на проде не готовы, а сварм уже пришлось развалить...
Artem
Rainbow
Stanislav
Rainbow
А боль была с самого начала почти. Когда нельзя было на localhost забиндить сервис, только 0.0.0.0
Rainbow
И в iptables он лез так, что закруть доступ снаружи у меня не вышло.
Stanislav
Не, мне в этом смысле было проще - с сетью заранее подумали, как правильно давать/не давать доступ. Точнее, соорудили нечто на nginx... Там в другом месте проблемы были...
Anton
На берметал можно rook запустить :)
тут вопрос такой, этот сервис потребует ресурсы, и не только cpu\ram.
с производительностью непонятно. локально писать на диск всегда будет лучше.
ну и большинство stateful умеет свои данные сами реплицировать, подымаешь реплику на другой ноде, настриваешь бэкапинг и вроде как все норм
Artyom
#whois
▫️Какой у вас проект или где работаете?
Web приложения на dotnet core и angular6,
▫️В чём вы специалист?
web frontend/backend, dotnet/java, angular/vue, android
▫️Чем можете быть интересны или полезны сообществу?
Стараюсь задавать обдуманные вопросы
▫️Чем интересно сообщество вам?
Активно продвигаю тему k8s и контейнеризации в компании, подстматриваю тут best practices
▫️Откуда вы?
Тула
▫️Как узнали про группу?
не помню, гуглил доки, искал что-то и наткнулся
Andor
нет, но ты можешь посадить эту базу в локал провижнер и навертеть сверху какой-нибудь patroni
Artem
если bare metal и нет внешнего стораджа, то, вероятно, это единственный вариант
Artem
У меня распределенный кластер k8s между континентами. Как красиво сделать так, чтобы ingress ходил на поды через сервис, которые в том же датацентре?
Artem
хостнейм один и тот же
Andor
омг
Andor
сделать разные кластеры - не вариант?
Artem
не хочется к этому прибегать
Artem
как-то taint можно притянуть сюда?
𝚔𝚟𝚊𝚙𝚜
Почему все обсуждают local provisioner?
Ведь local-provisioner, local-volumes и nodeAffinity для persistentVolumes - это три разные вещи.
Мне не нравится local-provisioner, но я активно использую nodeAffinity для persistentVolumes, при этом смысла в local-volumes я вообще не понимаю, т.к. local-volumes - это тоже самое что и hostPath с nodeAffinity и type: Directory
𝚔𝚟𝚊𝚙𝚜
Vadim
кроме того он на порядок безопаснее hostPath
𝚔𝚟𝚊𝚙𝚜
не совсем точно. local volumes из local volume provisioner отличаются от hostPath
во первых ты можешь управлять политикой, разрешить многократно монтировать или нет, грубо говоря
во вторых ты увидишь метрики, например kubelet_volume_stats_capacity_bytes
в третьих ты всетаки изображаешь будто бы у тебя нормальный провижонинг, можешь съехать на такой в случае чего
в четвертых local volume provisioner может очищать volume после удаления pvc, как это делают взрослые дяди
> управлять политикой, разрешить многократно монтировать или нет, грубо говоря
> ты увидишь метрики, например kubelet_volume_stats_capacity_bytes
спасибо, хоть кто-то дал внятный ответ
> local volume provisioner может очищать volume после удаления pvc, как это делают взрослые дяди
того же самого можно добиться и с hostPath (используя finalizers)
𝚔𝚟𝚊𝚙𝚜