Как работает Rate limiting в Kubernetes

«Как работает Rate limiting в Kubernetes» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Kubernetes использует API Priority and Fairness (APF) для rate limiting, заменяя старый механизм --max-requests-inflight. APF классифицирует запросы по приоритетам и fairness queues, обеспечивая баланс между важными и фоновыми запросами.

Основные компоненты:

  1. Flow Schemas – определяют классификацию запросов (например, по пользователю или типу операции)
  2. Priority Levels – устанавливают лимиты и очереди для разных категорий запросов

Пример FlowSchema:

apiVersion: flowcontrol.apiserver.k8s.io/v1beta2
kind: FlowSchema
metadata:
  name: healthz
spec:
  priorityLevelConfiguration:
    name: exempt
  rules:
  - resourceRules:
    - apiGroups: [""]
      resources: ["healthz"]
      verbs: ["get"]
    subjects:
    - kind: User
      user: "*"

При превышении лимитов API сервер возвращает HTTP 429 (Too Many Requests). Настройки по умолчанию обычно достаточны, но можно тонко настроить под нагрузку конкретного кластера.