Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Системный администратор, DevOps-инженер
Linux
Kubernetes
CI/CD
Redis
Git
Docker
Apache Kafka
Java Spring Framework
Высоконагруженные системы
Elasticsearch
Предлагаю блокировать за оскорбления в комментариях. Это не украшает Вас и нивелирует все предыдущие заслуги перед сообществом. Тем не менее, если есть вопросы по существу, готов ответить.
Привет!
Мы отказались от стандартного autoscaler k8s из-за его нестабильной работы. Рассматриваем интеграцию с victoriametrics через KEDA, но пока это только мысли...
Чтобы снизить нагрузку на CoreDNS k8s, мы используем NodeLocal DNS. Этот компонент развернут на каждой ноде, и все PODы обращаются к нему. Если ответа или кэша нет, запрос перенаправляется к CoreDNS. Проблем с kube api не возникало, всё решалось настройкой вычислительных ресурсов.
При использовании Spring Cloud Kubernetes и включенной discovery через API запросы к DNS не кэшируются (нулевой ttl). Теоретически, кэширование может осуществляться самим Java-приложением, но это требует специфичных настроек. В случае смерти PODa приложение ничего не знает об этом, вся информация поступает из kube api, который управляет выводом из балансировки «мертвых» реплик приложения, что-то типа GLB, но только на уровне PODов. Что касается умной балансировки, как я и писал в статье, нужно использовать специфичные компоненты, типа Spring Cloud LoadBalancer.