Vova
---
Всем привет.
Есть задача запрофайлить jvisualvm'ом микросервис который бежит внутри К8с кластера.
Что уже попробовал?
1) Добавил проперти для jmx и rmi (а-ля "com.sun.management.jmxremote" и иже с ними), вместе с "jmxremote" и "jmxremote.rmi" портами в Dockerfile, пробросил их через EXPOSE
2) В K8s yaml добавил этот порт в описание деплоймента
3) Через "kubectl port-forward" пробрасываю локальный порт на jmx порт с деплоймента
4) Пытаюсь подключится jvisualvm через Connecton -> Add JMX Connecton и получаю ошибку
"Cannot connect to localhost:9010 using service:jmx:rmi:///jndi/rmi://localhost:9010/jmxrmi"
Грешу что пропертя "java.rmi.server.hostname=localhost" не подходит для кластера.
Кто-то решал подобную задачу? Что можете посоветовать?
Спасибо
---
V
𝚔𝚟𝚊𝚙𝚜
напрямую без логсташа
𝚔𝚟𝚊𝚙𝚜
докер и так в json все пишет
𝚔𝚟𝚊𝚙𝚜
ну смотри, вот мой конфиг
https://gist.github.com/kvaps/aeab50b5654752a8c1444a6c5503a120
𝚔𝚟𝚊𝚙𝚜
а, или ты про json в логах самого приложения?
V
вот у тебя type docker а у меня стоит type: log
𝚔𝚟𝚊𝚙𝚜
если так, то можно sidecar контейнер с logstash который будет логи приложения парсить и передавить в эластик.
𝚔𝚟𝚊𝚙𝚜
для приложений который просто в stdout пишу, этого вполне достаточно
V
ну я и поставил logstash но там фильтр получается ругается так как не все ведь контейнеры пишут в json , например есть тот же redis он не пишет в json и парсинг logstahs ругается
Sergei
Господа, а пробовал ли кто-нибудь oklog?
Andrey
вопрос. А можно ли configmap использовать в spec для deployment?
Andrey
как часть спека
𝚔𝚟𝚊𝚙𝚜
PsyDebug
Почему Persistent Volume может не удаляться?
𝚔𝚟𝚊𝚙𝚜
PsyDebug
удалён
𝚔𝚟𝚊𝚙𝚜
а что за сторадж?
PsyDebug
там цеф поцеплен
𝚔𝚟𝚊𝚙𝚜
не удаляется потому что finalizers в манифесте не дает, по идее провижионер должен снести волум в цефе затем удалить pv
PsyDebug
ага, понял.
𝚔𝚟𝚊𝚙𝚜
смотри логи провижионера, или попробуй удалить вручную, удалив волум в цефе, затем поле finalizers в манифесте
PsyDebug
а, всё, снеслось.
Aleksandr
Возможно у кого-то было что-то подобное. Поставил калико, у сервиса есть два endpoints скажем 10.0.1.234 и 10.0.11.32, но в правилах iptables только одна запись для DNAT добавляется tcp to:10.0.1.234:80
Vadim
https://banzaicloud.com/blog/mysql-on-kubernetes/
Nata
Привет. скажите, может кто сталкивался: появляется на 2-3 минуты Node kube-test-03 status is now: NodeHasDiskPressure failed to garbage collect required amount of images. Wanted to free 4925275340 bytes, but freed 0 bytes Но на сервере при этом ~70g на разделе (всего 100, раздел один, корневой). Что может давать такую ошибку, кроме отсутствия места?
Artem
иноды ?
Artem
df -i
посмотри
Nata
смотрела, нормально
Nata
ну всмысле около 95% свободно
Nata
и буквально через 2-3 минуты он находит внезапно место, и перезапускает под.
Andrey
Andrey
--eviction-minimum-reclaim опция влияет явно на то, что ты видишь в логах. Подкрутить надо.
Andrey
Или её друзья из eviction* опций.
Nata
/usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt --cadvisor-port=0 --rotate-certificates=true --cert-dir=/var/lib/kubelet/pki --feature-gates=ReadOnlyAPIDataVolumes=false
Nata
такой опции нету
Nata
щас почитаю
Andrey
щас почитаю
https://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/
Вот это читать очень внимательно.
Nata
thanks
Slava
подскажите кто-нибудь как можно организовать pv+pvc для работы с хранилищем подам с двух нод (один из них мастер) не используя при этом внешние API (e.g. aws, azure) ?
Slava
ткните носом в доку, если такая есть)
Slava
куб развёрнут на виртуалках kvm
Juriy
Juriy
Slava
да, то что нужно
Slava
спасибо!
Andrey
Ох, в какую яму ты сейчас спустишься...
Slava
верю)
Juriy
Andrey
Мы активно его используем, но дышать глубже можно, когда AWS EBS под рукой.
Slava
принято
Andrey
посоветуйте способ делать инициализацию приложения в deployment. init containers не совсем вписываются, по многим причинам
1) они выполняются при создании пода, а мне надо при создании/обновлении deployment
2) они выполняются при создании каждого пода, а мне надо только один раз
3) они могут начать выполняться в параллель
4) инит контейнер из одного пода может работать тогда, когда началось выполнение приложения в другом поде
если 1 и 2 ещё терпимо, то 3 и 4 могут привести к неприятным последствиям
Rainbow
Andrey
типа того
Rainbow
Это cd делает обычно
Rainbow
$ run migrations
$ kubectl apply
Rainbow
К разрабам требование - миграции не должны ломать работающие инстансы. типа не делать drop column
Etki
инструмент миграций не поддерживает локи?
Andrey
то есть обратная совместимость в пределах апгрейда
Rainbow
Причем тут локи?
Rainbow
zero downtime deployment же. Никаких локов в принципе не может быть
Artem
если используете helm то там есть пост пре и прочие хуки
Etki
она в любом случае у вас так или иначе залочена на время миграций
Etki
Причем тут локи?
чтобы только один инстанс мог взять лок и выполнять миграции
Rainbow
с чего она лочится? Простые операции вроде alter column без default или сознание новой таблицы не лочит базу.
Etki
У вас приложение возьмет лок, увидит отсутствие новых миграций, пойдет дальше. Это две секунды, ну может быть пять.
Andrey
ненене, даже не уговаривайте. миграции это не часть нормального функционирования приложения, это часть апгрейда
Etki
кк
Rainbow
rails/django всегда делали миграции и потом меняли воркеры. Тут также, только сменой воркеров занимается k8n. Годами проверенная практика.
Rainbow
(остальные фреймворки тоже скорее всего, я для примера)
Sergei
$ run migrations
$ kubectl apply
а как быть если миграция должна новый столбец сделать, на базе уже существующих? ты накатишь миграцию, сделается столбец с содержимым, а код еще старый работает, изменит старый столбец и данные разъедутся
Etki
да хоть триггерами
Rainbow
Это договорённость с программистами. Все должны понимать, как миграции приедут на прод. Есть куча статей на эту тему.
Rainbow
да хоть триггерами
Я всеми руками за критическию бизнес логику в триггерах (особенно операции с баблом, количество товара и тп). Только этот подход куча людей критикуют, типа бизнесухе не место в базе.
Etki
Не место. Просто один из вариантов решения проблемы.