Что такое Request у Pod в Kubernetes?

«Что такое Request у Pod в Kubernetes?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Request (запрос) в спецификации Pod — это гарантированное количество вычислительных ресурсов (CPU и памяти), которое Kubernetes резервирует для контейнера. Это минимальное количество, которое контейнеру будет доступно на ноде.

Основная цель: Планировщик Kubernetes использует requests, чтобы выбрать ноду, на которой можно разместить под, исходя из доступных (незарезервированных) ресурсов.

Пример определения в манифесте:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: app-container
    image: myapp:1.0
    resources:
      requests:
        cpu: "250m"     # 250 милли-CPU (0.25 ядра)
        memory: "512Mi"  # 512 Мебибайт
      limits:
        cpu: "500m"
        memory: "1Gi"

Ключевые аспекты:

  • Гарантия: Kubernetes гарантирует, что контейнер получит как минимум указанный объём ресурсов.
  • Отличие от Limit: limit — это максимальный объём ресурсов, который контейнер может использовать. Контейнер может потреблять больше, чем request, но не больше, чем limit.
  • Влияние на QoS (Quality of Service): Значения requests и limits определяют класс качества обслуживания пода (Guaranteed, Burstable, BestEffort), что влияет на приоритет при нехватке ресурсов на ноде.
  • Оверсабскрайбинг: Если requests не указаны или занижены, нода может быть перегружена (oversubscribed), что приведёт к нехватке ресурсов и возможному убийству (eviction) подов.