Какие типы узлов (nodes) существуют в Kubernetes?

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

Ответ

В кластере Kubernetes узлы делятся на две основные роли, которые я администрировал.

1. Control Plane Node (Master Node) Это мозг кластера. На моих стендах он включает следующие компоненты:

  • kube-apiserver: Фронтенд кластера, через который я взаимодействую (через kubectl или API).
  • etcd: Распределенное key-value хранилище для всех данных кластера (состояния подов, конфиги). Обеспечивал его бэкапы.
  • kube-scheduler: Принимает решение, на каком worker node запустить под.
  • kube-controller-manager: Запускает контроллеры, которые следят за состоянием кластера (например, контроллер репликаций).

2. Worker Node На этих узлах запускаются рабочие нагрузки (поды). Каждый worker node, который я настраивал, состоит из:

  • kubelet: Агент, который получает спецификации подов от API-сервера и гарантирует, что контейнеры в них запущены и здоровы.
  • kube-proxy: Реализует концепцию Service, поддерживая сетевые правила для маршрутизации трафика к подам.
  • Container Runtime: Обычно это containerd или CRI-O. Раньше использовался Docker, но сейчас стандартом является совместимая с CRI (Container Runtime Interface) реализация.

На практике, особенно в managed-сервисах вроде EKS или GKE, мастер-ноды управляются провайдером, а я работаю в основном с пулами worker-нод, масштабируя их под нагрузку и настраивая taints/tolerations для специфичных рабочих нагрузок.