Никита
Это вопрос в духе "зачем ansible, когда сервер один, la на нем 0.1 и планов роста на ближайший год нет"
Если же фантазировать про ансибл, то тут два очевидных ответа - централизованное хранение конфигурации сервисов и её, например, версионирование. Что сильно упрощает повторное развёртываение сервера а) при его смерит и б) для целей тестирования, например.
Никита
Но я хз, стоит ли тут продолжать.
Anton
коллеги, гляньте плиз https://github.com/patsevanton/kubespray здесь применены исправления для установки kubernetes через прокси.
Anton
https://github.com/kubernetes-incubator/kubespray/pull/3596 вот здесь я правильно понимаю что нужен только апрув от разработчиков kubespray?
Anton
нее там CI ругается
Anton
и docker pull похоже не подхватил прокси (
bebebe
нее там CI ругается
Ога в том числе да
G72K
https://www.youtube.com/watch?v=fYy-FrjLX2s
Чел параноик, это хорошо :) не понял его пассаж про "нужен immutable configmap, значит будем использовать environment vars, они мол immutable". Возможно он как-то коряво объяснил идею.
Etki
envvars нельзя поменять снаружи в рантайме
Etki
я думаю про это
G72K
Ну так это ничем не отличается от " читаем файл при старте приложения один раз", как у них судя по коду и было
Etki
Приложение может быть не только от них
G72K
Они про свои говорят, патчили их чтобы перетащить на env vars
G72K
Хак про разные limits чтобы размазать OOMKiller по времени крутой :)
Andor
мне кажется для этого надо хакать репликасет контроллер
Dmytro
А vertical pod scaler не сможет это сделать?
Andor
не уверен
Andor
хороший кадр
𝚔𝚟𝚊𝚙𝚜
Гугальнул: git-secret, git-crypt, Mozilla sops, bitnami sealed secrets operator
Поигрался сегодня с ними, в итоге выбрал git-crypt. Удобно то, что он не требует никаких дополнительных телодвижений. Один раз настроил .gitattributes, после чего все нужные файлы автоматически добавляются и шифруются прямо в git. Для Ksonnet я настроил фильтр на secrets.libsonnet Теперь если есть какие-то данные которые мне нужно зашифровать, я просто создаю secrets.libsonnet в environment затем делаю include его так-же как и globals.libsonnet.
𝚔𝚟𝚊𝚙𝚜
Допустим, у тебя пять админов с тремя уровнями доступа. Получается, что у самых ответственных (и ссамых загруженных) будет три разных ключа, при использовании коих они будут сильно материться.
Как оказалось это тоже не проблема. В git-crypt можно иметь несколько ключей под каждый уровень доступа и шифровать их для разных пользователей: https://github.com/AGWA/git-crypt/blob/master/doc/multiple_keys.md
Danila
Longhorn в проде кто-то использует?
Danila
https://github.com/rancher/longhorn/
𝚔𝚟𝚊𝚙𝚜
https://github.com/rancher/longhorn/
Он вроде OpenEBS теперь
Andrey
Он вроде OpenEBS теперь
судя по ридми, это самостоятельный проект
Andrey
да и обновлялся недавно
𝚔𝚟𝚊𝚙𝚜
судя по ридми, это самостоятельный проект
Ну да, просто судя по всему OpenEBS - это наиболее жизнеспособный его форк
𝚔𝚟𝚊𝚙𝚜
Ой прикольно, он целиком на bash написан
Etki
#проклято даже не заглядывая в репозиторий
𝚔𝚟𝚊𝚙𝚜
Не, походу я гоню, в репе кода то нет)
𝚔𝚟𝚊𝚙𝚜
https://github.com/rancher/longhorn-engine - вот основная репа, таки на го
Timur
#проклято даже не заглядывая в репозиторий
Если не секрет, какой критерий "проклятости"? :)
Max
Ребят, подскажите, можно ли как-нибудь ускорить запуск подов в кубе? может какие параметры кубелета и apiserver'a подкрутить?
bebebe
Never
у вас какой k8s? managed, hosted?
Max
self hosted on bare metal
bebebe
self hosted on bare metal
поды stateless, stateful?
Max
поды stateless, stateful?
Если имеется ввиду использование каких-либо volumes и долгую инициализацию самого приложения в поде то этого нет
Max
сам контейнер на голом докере запускается за секунду
Max
в кубе же секунд 15-20
Sergey
может все таки имеджи виноваты?
Max
нет-нет, они спуллены на все машины
Max
туплю, можно ли в kubectl run задать tolerations?
Max
прям аргументом
bebebe
да, через` —override`
Max
Поправочка: --overrides
Max
c image pull policy never 2.397
Max
вроде бы cri-o самый быстрый
никогда с ним дело не имел. Он обратно совместим с докером?
𝚔𝚟𝚊𝚙𝚜
хм, может и нет
𝚔𝚟𝚊𝚙𝚜
https://hsto.org/webt/q8/vv/zf/q8vvzfa4zw7ydge80hhj_higkhi.png
𝚔𝚟𝚊𝚙𝚜
в любом случае можешь попробовать containerd - без докера
𝚔𝚟𝚊𝚙𝚜
Max
Да тут проблема явно не в докере. У меня стоит задача быстро по требованию пользователя или стороннего сервиса запускать поды и ждать пока статус у пода станет Ready
Max
я предполагаю kubernetes делает все poolinгом
Max
или по крайней мере обновление статусов подов
𝚔𝚟𝚊𝚙𝚜
ты можешь посмотреть на что больше всего времени уходит
𝚔𝚟𝚊𝚙𝚜
time kubectl run alpine-test --restart Never --rm -it --image alpine:latest --command /bin/sh -it -- -c id?
запусти тоже самое, только без --rm, затем посмотри kubectl describe pod
Max
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 21s default-scheduler Successfully assigned default/alpine-test to msk4 Normal Pulled 18s kubelet, msk4 Container image "alpine:latest" already present on machine Normal Created 16s kubelet, msk4 Created container Normal Started 15s kubelet, msk4 Started container
𝚔𝚟𝚊𝚙𝚜
что-то у тебя шедуллер долго думает
Max
3 секунды, ага
Max
ой, не, тут по-другому нужно считать
bebebe
так, я тут немного подшаманил 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 смотреть
Max
нужно посчитать время от момента принятия команды run, до появления ивента Scheduled
bebebe
ща
выберутся все ноды в статусе ready и на них запустится alpine, и покажется время запуска
bebebe
только вы все так поаккуратнее, а то так в чейнибудь ботнет попадете
Max
у меня на всех нодах запрещен запуск всего кроме того, что я хочу и системных daemonsetoв)
Max
всякие дашборды на отдельных мастерах
bebebe
я
Вам тут помойму уже советовали немного поменять оркестрацию и держать горячие поды