bebebe
Max
Вам тут помойму уже советовали немного поменять оркестрацию и держать горячие поды
К сожалению у всех подов разные параметры запуска, которые указываются прям при запуске. В рантайме их поменять нельзя
Andor
но руками-то быстро запускается
Max
Ладно окей, как обновляются statuses у подов? Куб поллит эти состояния из docker api, или ждет ивенты?
bebebe
может быть scheduler'у не очень хорошо от ваших правил? сколько нод? надо профилировать в любом случае
Max
шедулинг относительного того, как я долго жду состояния ready у пода, недолгий
bebebe
у вас для подов собственные readiness probe?
Max
у вас для подов собственные readiness probe?
их я уже удалил, не помогло(
Max
сейчас покажу под
bebebe
только учтите, что тут возможно дети
Max
просьба убрать их
bebebe
негуманно, закидывайте только на pastebin
Anton
https://hsto.org/webt/q8/vv/zf/q8vvzfa4zw7ydge80hhj_higkhi.png
А есть хто юзает крио в проде?
Vadim
на некоторых openshift online'овских кластерах они с ~марта
𝚔𝚟𝚊𝚙𝚜
никогда с ним дело не имел. Он обратно совместим с докером?
кубу все равно какой cri использовать, api используется тот же самый
Anton
на некоторых openshift online'овских кластерах они с ~марта
Ха, ну про тебя я подумал в первую очередь =)
Max
pastebin . com/bPABpLUW
Max
проблема не в scheduling'e, проблема в ожидании состояния Ready
𝚔𝚟𝚊𝚙𝚜
проблема не в scheduling'e, проблема в ожидании состояния Ready
посмотри еще на логи кубелета, может что-то понятнее станет
𝚔𝚟𝚊𝚙𝚜
а что за шара такая replays - может в ней дело?
Max
а что за шара такая replays - может в ней дело?
я честно говорю, убирал все в спецификации пода
Max
не помогало
𝚔𝚟𝚊𝚙𝚜
а, это hostPath
Max
ага
bebebe
проблема не в scheduling'e, проблема в ожидании состояния Ready
по идеи, scheduling на 5 нодах должен быть "мгновенным", если нет километровых условий
bebebe
ага
Максим, через describe посмотрите что кушает больше всего времени
bebebe
так он показывал уже
ога, пропустил а версия k8s какая?
𝚔𝚟𝚊𝚙𝚜
ну хотя тут еще проверка имаджа в регистри идет, т.к. тэг latest стоит, лучше на своих имаджах проверь
bebebe
ImagePullPolicy: never жи?
𝚔𝚟𝚊𝚙𝚜
когда тэг latest ImagePullPolicy автоматом ставится в always
Max
ну хотя тут еще проверка имаджа в регистри идет, т.к. тэг latest стоит, лучше на своих имаджах проверь
а разве не пофиг есть тег latest или нет? у меня оно проверяет даже если указан тег
Max
спасибо
𝚔𝚟𝚊𝚙𝚜
time kubectl run alpine-test --restart Never --rm -it --image alpine:latest --command /bin/sh -it -- -c id?
это я про alpine, т.к. проверяли именно на нем
Max
понял
bebebe
https://kubernetes.io/docs/concepts/containers/images/
Anton
по идеи, scheduling на 5 нодах должен быть "мгновенным", если нет километровых условий
может ноды сильно "разнесены" и между ними сетка не быстрая?
Max
точнее даже в одной стойке
bebebe
Все в одном ДЦ
Потегайте образ другим тегом (stable) например, используйте его в купе ImagePullPolicy: Never
Vadim
тогда уж проще sha256 digest указывать, чтобы не запутаться какой именно 'stable' у вас сейчас - кэшированный или настоящий
Vadim
при этом это один http request, много времени тут не сэкономишь
Max
Мб etcd медленно отвечает?
а как это проверить?
Max
Потегайте образ другим тегом (stable) например, используйте его в купе ImagePullPolicy: Never
попробовал time kubectl run alpine-test --restart Never --rm -it --image alpine:3.8 --image-pull-policy='Never' --command /bin/sh -it --overrides '{"spec":{"tolerations":[{"key":"dedicated","operator":"Exists"}]}}' -- -c id
Max
иногда 2 секунды, а иногда 6.5
bebebe
попробовал time kubectl run alpine-test --restart Never --rm -it --image alpine:3.8 --image-pull-policy='Never' --command /bin/sh -it --overrides '{"spec":{"tolerations":[{"key":"dedicated","operator":"Exists"}]}}' -- -c id
это он на разные ноды попадает видимо. там выше xargs, который по всем доступным пробегается
bebebe
специальный хак для :latest?
https://kubernetes.io/docs/concepts/containers/images/ вот тут хорошо описано, да
bebebe
у всех есть, а у вас нет, osx?
Max
да)
Max
osx)
Max
ща попробую через brew обновить
bebebe
либо запускайте в докере
Vadim
а как это проверить?
Собирать метрики, смотреть время fsync и proposal apply rate
𝚔𝚟𝚊𝚙𝚜
при этом это один http request, много времени тут не сэкономишь
ну судя по логу там секунды две на это тратится
Никита
Собирать метрики, смотреть время fsync и proposal apply rate
Плюсую; ещё, наверное, можно дебаг-лог какой-нибудь повключать.
bebebe
можно кастомный scheduler задеплоить с включенным профайлингом.
Max
кластер новый, тут не должно быть проблем с etcd, я считаю
Vadim
ну судя по логу там секунды две на это тратится
хмм, ну вообще это делается за одни реквест, но хз что тут еще добавляется - etcd, коммуникация с докеровским демоном
𝚔𝚟𝚊𝚙𝚜
@Maxpain177 что бы отмести schedduller и etcd попробуй под вручную создавать
𝚔𝚟𝚊𝚙𝚜
если будет по прежнему медленно, то меняй cri или логику
𝚔𝚟𝚊𝚙𝚜
Max
так, я тут немного подшаманил kubectl get nodes -o jsonpath='{.items[?(@.status.conditions[-1:].type == "Ready")].metadata.name}' | xargs -d" " -P0 -tI% time kubectl run alpine-test-% --restart Never --rm -i --image alpine:latest --overrides='{ "spec": { "template": { "spec": { "nodeSelector": { "kubernetes.io/hostname": "'%'" } } } } }' --command /bin/sh -- -c id запустит на всех нодах и покажет время да, и как правильно вам говорят выше, нужно было kubectl describe смотреть
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) pod "alpine-test-msk6" deleted 0.22user 0.02system 0:02.56elapsed 9%CPU (0avgtext+0avgdata 90888maxresident)k 632inputs+0outputs (4major+8319minor)pagefaults 0swaps uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) pod "alpine-test-msk7" deleted 0.20user 0.04system 0:02.77elapsed 9%CPU (0avgtext+0avgdata 90256maxresident)k 0inputs+0outputs (0major+8195minor)pagefaults 0swaps uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) pod "alpine-test-msk5" deleted 0.21user 0.03system 0:06.29elapsed 3%CPU (0avgtext+0avgdata 92524maxresident)k 872inputs+0outputs (4major+8694minor)pagefaults 0swaps uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) pod "alpine-test-msk4" deleted 0.21user 0.03system 0:06.60elapsed 3%CPU (0avgtext+0avgdata 91572maxresident)k 688inputs+0outputs (4major+8503minor)pagefaults 0swaps
𝚔𝚟𝚊𝚙𝚜
можешь прямо гототовый под сохранить, тот что тебе деплоймент через kubectl run создал
Vadim
Под или контейнер?
оба. Контейнер через докер и под через crictl, чтобы посмотреть сколько dockershim добавляет
𝚔𝚟𝚊𝚙𝚜
еще есть такой хак: time sh -c 'kubectl get pod <my_pod> -o yaml | kubectl replace pod <my_pod> -f -'
𝚔𝚟𝚊𝚙𝚜
правда в этом случае будет учитываться еще удаление