Флаг Kubernetes: max-endpoints-per-slice — что это и как использовать

Когда в Kubernetes сервисах работает сотни или тысячи подов, важно эффективно управлять их сетевыми адресами.
Для этого используются EndpointSlice.
А один из главных параметров настройки — это флаг max-endpoints-per-slice.


Что это такое?

  • Kubernetes группирует адреса подов в объекты EndpointSlice.
  • В каждом слайсе хранится до N эндпоинтов (по умолчанию: 100).
  • Флаг --max-endpoints-per-slice задаёт этот максимум.

Иными словами: он определяет, сколько подов попадает в один EndpointSlice.


Зачем это нужно?

  1. Производительность

    • Чем больше значение — тем меньше объектов создаётся, ниже нагрузка на API server.
    • Чем меньше значение — тем больше объектов, но обновления становятся “локальнее”.
  2. Масштабируемость

    • Для сервисов с тысячами подов настройка может снизить нагрузку на control plane.
  3. Стабильность сети

    • Маленькие слайсы означают, что при изменениях затрагивается меньше эндпоинтов.
    • Это уменьшает риск резких скачков при релизах.

Когда менять значение?

  • Значение по умолчанию (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.
  • Уменьшайте — для динамичных нагрузок.
  • Увеличивайте — для очень больших сервисов.
  • Настройку лучше проверять в тестовом окружении, прежде чем менять в проде.