Флаг Kubernetes: max-endpoints-per-slice
— что это и как использовать
Когда в Kubernetes сервисах работает сотни или тысячи подов, важно эффективно управлять их сетевыми адресами.
Для этого используются EndpointSlice.
А один из главных параметров настройки — это флаг max-endpoints-per-slice
.
Что это такое?
- Kubernetes группирует адреса подов в объекты EndpointSlice.
- В каждом слайсе хранится до N эндпоинтов (по умолчанию: 100).
- Флаг
--max-endpoints-per-slice
задаёт этот максимум.
Иными словами: он определяет, сколько подов попадает в один EndpointSlice.
Зачем это нужно?
Производительность
- Чем больше значение — тем меньше объектов создаётся, ниже нагрузка на API server.
- Чем меньше значение — тем больше объектов, но обновления становятся “локальнее”.
Масштабируемость
- Для сервисов с тысячами подов настройка может снизить нагрузку на control plane.
Стабильность сети
- Маленькие слайсы означают, что при изменениях затрагивается меньше эндпоинтов.
- Это уменьшает риск резких скачков при релизах.
Когда менять значение?
- Значение по умолчанию (100) подходит для большинства кластеров.
Менять стоит если:
- У вас очень динамичные сервисы, где поды часто стартуют и останавливаются → можно уменьшить.
- У вас огромные сервисы (1000+ подов) → можно увеличить, чтобы уменьшить количество объектов.
Как настроить?
Флаг указывается в kube-controller-manager:
kube-controller-manager \
--max-endpoints-per-slice=150
Или в кластерах kubeadm редактируется /etc/kubernetes/manifests/kube-controller-manager.yaml:
spec:
containers:
- command:
- kube-controller-manager
- --max-endpoints-per-slice=150
Итог
- max-endpoints-per-slice управляет количеством подов в одном EndpointSlice.
- Значение по умолчанию: 100.
- Уменьшайте — для динамичных нагрузок.
- Увеличивайте — для очень больших сервисов.
- Настройку лучше проверять в тестовом окружении, прежде чем менять в проде.