
Yerlan
27.09.2018
08:36:54
ставлю на виртуалке, так что пробовал откат и заново с разными параметрами helm init ***. Всегда один результат

DASTAN
27.09.2018
08:38:38
sudo cat /sys/class/dmi/id/product_uuid
этот айди должен быть уникальным на каждой ноде

Yerlan
27.09.2018
08:41:04

DASTAN
27.09.2018
08:41:42
я ставил через kubespray, и заливал через хелм без проблем и откатывал релизы

Google

Yerlan
27.09.2018
08:42:47
ок, тогда попробую весь кластер поставить через kubespray... хотелось официальными средствами, чтобы потом избежать проблем при обновлении
helm ставили тоже скриптом https://raw.githubusercontent.com/helm/helm/master/scripts/get?
потом helm init без дополнительных параметров?

DASTAN
27.09.2018
08:45:28
кстати, это пробовали?
https://stackoverflow.com/a/46688254/1262176

Yerlan
27.09.2018
08:47:47
да, пробовал... так же

DASTAN
27.09.2018
08:48:16

Yerlan
27.09.2018
08:49:58
ясно... спасибо за помощь... пошел разворачивать кластер через kubespray

DASTAN
27.09.2018
08:50:11
удачно все развернуть

Anton
27.09.2018
09:10:04
тут неожиданно понял что метрика container_memory_working_set_bytes содержит в себе memory.stat total_inactive_file, да вообще все содержит в себе =) я то до этого думал что fs cache глобальный, а он оказывается в рамках cgroup живет.
кто нить алерт по приближению к memory limit пилил?
так получается что container_memory_usage_bytes - container_memory_cache похоже соответствует тому набору ram, за которым нужно следить.

Andor
27.09.2018
09:10:48
немного не в тему этого чата вопрос :)

Pavel
27.09.2018
09:11:25

Andor
27.09.2018
09:11:48
ну это скорее в церковь метрик, чем про кубернетис

Google

Anton
27.09.2018
09:16:05
эт метрики кубера, вопрос его лимитов

Andor
27.09.2018
09:16:27
это метрики из cadvisor'а
они не кубер-специфичны

Anton
27.09.2018
09:16:41
ага, а он часть kubelet

Pavel
27.09.2018
09:16:43

Andor
27.09.2018
09:17:29

Anton
27.09.2018
09:17:51

Andor
27.09.2018
09:18:17
вот именно!

Anton
27.09.2018
09:20:16

Andor
27.09.2018
09:24:10
У меня - на usage

Pavel
27.09.2018
09:25:38
алерт по 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
27.09.2018
09:27:00
Привет. А тут есть те, кто юзает local-provisioner?

Мэттью
27.09.2018
09:27:20
я

Nata
27.09.2018
09:29:26
Есть вопрос. 95% времени всё работает ОК. Но иногда pvc из стейтфулсета начинают роутиться на одну и ту же ноду, и соответственно podы по affinity не могут запуститься. В логах все как бы как обычно, ничего такого, просто допустим 12 pvc из 15 ушли на одну ноду. Как такого избегать и почему такое может случаться вообще?
*при создании стейтфулсета

Anton
27.09.2018
09:31:18
local-provisioner же не создает сам pv

Nata
27.09.2018
09:31:59
он как раз создает pv (у меня создает )))

Anton
27.09.2018
09:32:35
*при создании стейтфулсета
в предыдущих версиях было поведение, когда шедулинг не учитывал расположение pv. потом нужно было feature gate включать чтобы шедулер сначала нашел где pv находится

Nata
27.09.2018
09:32:59
и допустим на каждой ноде висит по 10 свободных pv. Но при создании statefulseta pvc решает все pvc для парочки нод отправить допустим на четвертую

Google

Nata
27.09.2018
09:33:42
запускаются поды провижнера, смотрят директорию, находят точки монтирования, создают PV

Anton
27.09.2018
09:34:41
У меня - на usage
в контейнере писали здоровенный файл. процессы памяти жрали мало, но total_inactive_file вырос до лимита. usage не плох, конечно, но нафига алертить когда файловый кэш съедает рам

Nata
27.09.2018
09:35:42

Anton
27.09.2018
09:36:06

Nata
27.09.2018
09:36:42
ну это я выразилась не очень. Они постоянно и работают, и ищут точки монтирования

Anton
27.09.2018
09:37:24
https://github.com/kubernetes-incubator/external-storage/tree/master/local-volume
здесь все полностью описано
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.
в 1.9 требовалось такое
KUBE_FEATURE_GATES="PersistentLocalVolumes=true,VolumeScheduling=true,MountPropagation=true"
в 1.10 уже такого не просят

Nata
27.09.2018
09:42:19
блин, дичь написала

Anton
27.09.2018
09:42:28
ок, local volume provisioner превращает точки монтирования в /mnt/disks в pv. так ведь? и это забота админа намутить точек монтирования
на какой машине смонтировано, там pv и создастся

Mikhail
27.09.2018
09:45:24
Кто знает если у меня нода ушла в даун - когда сменится node.podcidr?

Nata
27.09.2018
09:46:01
1) я сделала точки монитрования, всё ок. Кубер нашел их. Допустим на 4 серверах 2) я запустила создание стейтфулсета с pod antiaffinity и 5pvc 3) кубер решил отправить все pvc только на ноду 01 и 04 (или любые другие, тут без разницы) 4) в стейтфулсете должно быть три пода. в итоге могут запуститься только два, PVC для которых ушли на 01 и 04.

Anton
27.09.2018
09:46:15

Nata
27.09.2018
09:46:26
то есть нужно еще pvc affinity или что-то в этом роде, а вот тут уже не понятно

Mikhail
27.09.2018
09:47:34

Vadim
27.09.2018
09:47:36
часть из этого будет в 1.12 емнип - https://github.com/kubernetes/kubernetes/pull/67556

Anton
27.09.2018
09:47:49

Google

Mikhail
27.09.2018
09:47:51

Vadim
27.09.2018
09:48:49
вроде полноценные клаудпровайдеры умеют это лучше, local вряд ли приоритет

Nata
27.09.2018
09:49:09
маунтить папку в папку дешевле облака ?

Stanislav
27.09.2018
09:58:06
Костыли... Вот у нас ща - костыли... В кубернетес на проде не готовы, а сварм уже пришлось развалить...

Artem
27.09.2018
09:59:12

Alexey
27.09.2018
09:59:54

kvaps
27.09.2018
10:00:24

Stanislav
27.09.2018
10:00:50

Alexey
27.09.2018
10:01:18
А боль была с самого начала почти. Когда нельзя было на localhost забиндить сервис, только 0.0.0.0
И в iptables он лез так, что закруть доступ снаружи у меня не вышло.

Stanislav
27.09.2018
10:06:30
Не, мне в этом смысле было проще - с сетью заранее подумали, как правильно давать/не давать доступ. Точнее, соорудили нечто на nginx... Там в другом месте проблемы были...

Anton
27.09.2018
10:07:56
На берметал можно rook запустить :)
тут вопрос такой, этот сервис потребует ресурсы, и не только cpu\ram.
с производительностью непонятно. локально писать на диск всегда будет лучше.
ну и большинство stateful умеет свои данные сами реплицировать, подымаешь реплику на другой ноде, настриваешь бэкапинг и вроде как все норм

Artyom
27.09.2018
10:08:43
#whois
▫️Какой у вас проект или где работаете?
Web приложения на dotnet core и angular6,
▫️В чём вы специалист?
web frontend/backend, dotnet/java, angular/vue, android
▫️Чем можете быть интересны или полезны сообществу?
Стараюсь задавать обдуманные вопросы
▫️Чем интересно сообщество вам?
Активно продвигаю тему k8s и контейнеризации в компании, подстматриваю тут best practices
▫️Откуда вы?
Тула
▫️Как узнали про группу?
не помню, гуглил доки, искал что-то и наткнулся

Anton
27.09.2018
10:09:15

Andor
27.09.2018
10:09:53
нет, но ты можешь посадить эту базу в локал провижнер и навертеть сверху какой-нибудь patroni

Artem
27.09.2018
10:10:02
если bare metal и нет внешнего стораджа, то, вероятно, это единственный вариант

mio
27.09.2018
10:16:20
У меня распределенный кластер k8s между континентами. Как красиво сделать так, чтобы ingress ходил на поды через сервис, которые в том же датацентре?
хостнейм один и тот же

Google

Andor
27.09.2018
10:16:45
омг
сделать разные кластеры - не вариант?

mio
27.09.2018
10:17:08
не хочется к этому прибегать
как-то taint можно притянуть сюда?

kvaps
27.09.2018
10:17:46
Почему все обсуждают local provisioner?
Ведь local-provisioner, local-volumes и nodeAffinity для persistentVolumes - это три разные вещи.
Мне не нравится local-provisioner, но я активно использую nodeAffinity для persistentVolumes, при этом смысла в local-volumes я вообще не понимаю, т.к. local-volumes - это тоже самое что и hostPath с nodeAffinity и type: Directory

mio
27.09.2018
10:18:57

kvaps
27.09.2018
10:20:01

Anton
27.09.2018
10:30:05

Vadim
27.09.2018
10:30:39
кроме того он на порядок безопаснее hostPath

kvaps
27.09.2018
10:33:20
не совсем точно. 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)

Vadim
27.09.2018
10:36:23

Andor
27.09.2018
10:36:59
использование selinux автоматически делает вашу систему безопасной!

Vadim
27.09.2018
10:38:10
ну и всякие вещи типа access control, хотя бы по gid

kvaps
27.09.2018
10:46:56
Я лично не использую selinux и access control для волюмов, так что точно сказать не могу, но мне интересно, может вы в курсе?

Vadim
27.09.2018
10:52:26

kvaps
27.09.2018
10:55:37
я имею ввиду если оформить hostPath как persistentVolume, а не цеплять напрямую в под