Как определить размер узла (node) в Kubernetes?

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

Ответ

Размер узла в Kubernetes определяется его ресурсами: CPU, памятью (RAM) и иногда ephemeral storage. Для получения этой информации я использую несколько команд kubectl.

Основные команды:

  1. kubectl describe node <node-name> Показывает детальную информацию. Ключевые разделы:

    • Capacity: Общие физические ресурсы узла.
    • Allocatable: Ресурсы, доступные для планирования подов (за вычетом системных резервов).
    kubectl describe node node-01 | grep -A 5 -B 2 "Capacity|Allocatable"
  2. kubectl get node <node-name> -o json Позволяет программно извлечь точные значения с помощью jq.

    kubectl get node node-01 -o json | jq '.status.capacity'
    # Вывод: {"cpu":"4","memory":"16302152Ki","pods":"110"}
  3. kubectl top node Показывает текущее (реальное) использование ресурсов, а не лимиты. Требует установленного и запущенного metrics-server в кластере.

    kubectl top node node-01
    # NAME      CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
    # node-01   410m         10%    2456Mi          15%

Практический пример анализа: Если узел имеет capacity.cpu: "4", это означает 4 ядра CPU. Память 16302152Ki нужно перевести в гигабайты: 16302152 / 1024 / 1024 ≈ 15.5 GiB. Эти цифры критичны для понимания, сколько рабочих нагрузок можно разместить на узле.