Никита
Велкам!)
Grisha
Ребзя, привет! Подскажите, можно ли при rolling update в deployments указать pre_stop хук?
Denis
Denis
Grisha
spec:
containers:
- image: nginx:1.9.4
imagePullPolicy: IfNotPresent
lifecycle:
preStop:
exec:
command:
- sleep 60
Запилил вот так, но когда запускаю апдейт например релиза nginx , контейнер перезагружается сразу же
Никита
Куда копать или с чем это связанно?
tls_config есть и в секции kubernetes_sd_configs, там попробуй указать свой ca_file.
Судя по тому, что он не может ничего листить - проблема ещё и с RBAC, добавь туда же bearer_token аккаунта с правами на листинг нужных ресурсов.
Никита
С дивана решение выглядит так)
Никита
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config
Denis
Никита
А, я думал, вопрос про поход снаружи.
Denis
А, я думал, вопрос про поход снаружи.
Я его переношу из кластера, наружу. Сейчас вот думаю как сделать.
scrape_configs:
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
api_server: https://10.10.54.88:6443
scheme: https
tls_config:
ca_file: /etc/prometheus/ca.crt
bearer_token_file: /etc/prometheus/token
relabel_configs:
- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https
Так не работает. x509: certificate signed by unknown authority выдает
Denis
sbog
Доброго вечера, коллеги. Есть инсталляция k8s, 8 нод под workload, nginx ingress, сервис за ним. Перед k8s внешний балансер. Идем в сервис за данными - тот отдает их за 2мс вне зависимости от количества реквестов (по сути, если идешь с однотипным запросом, он один раз берет данные из базы, а остальное время отдает из кэша). Идем в k8s - держит 550 rps, дальше начинает терять пакеты, чем дальше, тем больше. На балансере нагрузка около 40% по CPU при этом (разворачиваем https), на сервисе нагрузка минимальна, на ингрессе, судя по всему, теряем запросы, но нагрузка на нем тоже невысокая. Стандартная инсталляция прометеуса несильно помогает понять, в чем дело. Есть предположения, куда и как копать, если есть желание получить на сервисе, скажем, 10k rps?
Никита
Никита
scrape_configs:
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
api_server: https://10.10.54.88:6443
tls_config:
ca_file: /etc/prometheus/ca.crt
bearer_token_file: /etc/prometheus/token
scheme: https
tls_config:
ca_file: /etc/prometheus/ca.crt
Никита
См. секцию kubernetes_sd_configs
Никита
Мне кажется, проблема в этом.
Denis
Andor
у тебя даже таргеты не находятся из кубе-апи?
Denis
Никита
В смысле, в веб-интерфейсе.
Denis
Andor
Denis
Denis
Даже меньше
Никита
Ага, если ендпоинты задискаверились, то секция kubernetes_sd_configs правильная) Дальше надо смотреть, почему метрики не приезжают.
Andor
ну если в таргетах есть хоть что-то, значит кубе-апи работает
Andor
если оно всё красное - с этим уже надо разбираться отдельно
Andor
зависит от настроек, может что-то собирать, а что-то скипать
Stas
Доброго вечера, коллеги. Есть инсталляция k8s, 8 нод под workload, nginx ingress, сервис за ним. Перед k8s внешний балансер. Идем в сервис за данными - тот отдает их за 2мс вне зависимости от количества реквестов (по сути, если идешь с однотипным запросом, он один раз берет данные из базы, а остальное время отдает из кэша). Идем в k8s - держит 550 rps, дальше начинает терять пакеты, чем дальше, тем больше. На балансере нагрузка около 40% по CPU при этом (разворачиваем https), на сервисе нагрузка минимальна, на ингрессе, судя по всему, теряем запросы, но нагрузка на нем тоже невысокая. Стандартная инсталляция прометеуса несильно помогает понять, в чем дело. Есть предположения, куда и как копать, если есть желание получить на сервисе, скажем, 10k rps?
а ингресс нодпортом торчит к балансеру?
Никита
В твоём конфиге есть - role: endpoints, значит, он будет собирать только эндпоинты.
sbog
sbog
И технически балансер очень близко расположен к кластеру, там TTL<1ms
Stas
Да, каждой нодой просто
я бы начал с того что заэкспоузил сервис нод портом и потестил, после этого когда стало юы точно понятно что это нджинкс пошел бы читать статьи
sbog
Норм идея, пасиб
Stas
Норм идея, пасиб
после этого я бы начал с этого https://danielfm.me/posts/painless-nginx-ingress.html
sbog
Угу, тоже вот нашел это. Попробую сейчас сервис выставить нодпортом
Hello
какая допустимая задержка для федерализации не больше 50мс?
Dmitry
гайс, а кому-то прилетал инвайт на k8s от digitalocean ?
Andor
летом прилетал
Serega
Доброго вечера, коллеги. Есть инсталляция k8s, 8 нод под workload, nginx ingress, сервис за ним. Перед k8s внешний балансер. Идем в сервис за данными - тот отдает их за 2мс вне зависимости от количества реквестов (по сути, если идешь с однотипным запросом, он один раз берет данные из базы, а остальное время отдает из кэша). Идем в k8s - держит 550 rps, дальше начинает терять пакеты, чем дальше, тем больше. На балансере нагрузка около 40% по CPU при этом (разворачиваем https), на сервисе нагрузка минимальна, на ингрессе, судя по всему, теряем запросы, но нагрузка на нем тоже невысокая. Стандартная инсталляция прометеуса несильно помогает понять, в чем дело. Есть предположения, куда и как копать, если есть желание получить на сервисе, скажем, 10k rps?
нжинкс-ингресс в дефолтной конфигруации тысячи запросов не напрягаясь пережовывает. Я бы начал с того, что снимал бы метрики с кластера и ингресс контролера (особенно удобно это делать с последними версиями nginx-ingress где даже графана дашборда из коробки вполне вменяемая, там используется lua вместо vts для метрик). Далее можно делать лоадтест как самого нжинкса (какой-нибудь статус ендпоинт дергать) так и лоадтест “эхо” сервиса, после этого лоадтесты уже рабочего сервиса.
Ну и для лоад тестов брать нормальные приблуды, например, wrk,tank,vegeta.
Grisha
Может сегодня повезет, ребзя подскажите, как при rolling update в deployments сделать так чтобы перед обновлением пода он дождался когда все службы внутри пода заерщаться?
Dmytro
EFS ещё амазоновский можно
Dmytro
Dmytro
Кто-то вроде тоже собирался, дошёл?
Terry
оо забыл
Terry
а стрим уже начался
Dmytro
Доброго вечера, коллеги. Есть инсталляция k8s, 8 нод под workload, nginx ingress, сервис за ним. Перед k8s внешний балансер. Идем в сервис за данными - тот отдает их за 2мс вне зависимости от количества реквестов (по сути, если идешь с однотипным запросом, он один раз берет данные из базы, а остальное время отдает из кэша). Идем в k8s - держит 550 rps, дальше начинает терять пакеты, чем дальше, тем больше. На балансере нагрузка около 40% по CPU при этом (разворачиваем https), на сервисе нагрузка минимальна, на ингрессе, судя по всему, теряем запросы, но нагрузка на нем тоже невысокая. Стандартная инсталляция прометеуса несильно помогает понять, в чем дело. Есть предположения, куда и как копать, если есть желание получить на сервисе, скажем, 10k rps?
Вы сначала разберитесь где пакеты теряются - в ингрессе или в оверлей сети
V
Grisha
Grisha
тут сложность еще в том что я не управляю балансигом им занимается другой процесс nodejs
Grisha
есть CC - command center у ноды, которые рулит трафом
Vadim
V
я имею ввиду балансинг на уровне service
Andor
А Service занимается балансировкой?
Denis
bebebe
вы потом расскажите чем мир дышит
Denis
Denis
Может кто подскажет в чем может быть проблема?
Denis
kubectl describe clusterrole -n prometheus-monitoring prometheus
PolicyRule:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
endpoints [] [] [get list watch]
nodes/proxy [] [] [get list watch]
nodes [] [] [get list watch]
pods [] [] [get list watch]
services [] [] [get list watch]
ingresses.extensions [] [] [get list watch]
[/metrics] [] [get]
Denis
Вроде как с RBAC все в порядке.
Dmitry
Сделай копию текущих и дай полные
Denis
Сделай копию текущих и дай полные
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups:
- ""
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
- nonResourceURLs:
- /metrics
verbs:
- get
Dmytro
Вроде бы не было в этом чате https://kubedex.com/google-gke-vs-microsoft-aks-vs-amazon-eks/
sbog
sbog
Как она вообще их теряет, если технически она является просто набором iptables правил и Veth пар?
sbog
В моей практике обычный бридж не теряет в принципе ничего. Он нагрузку может колоссальную держать. А у меня тут 550 rps всего-то
bebebe
Dmytro