В каком namespace существуют системные ресурсы Kubernetes?

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

Ответ

Системные ресурсы Kubernetes по умолчанию размещаются в namespace kube-system. В этом пространстве имен работают критически важные для функционирования кластера компоненты.

Типичные компоненты в kube-system:

  • coredns (или kube-dns): Обеспечивает сервис обнаружения и DNS внутри кластера.
  • kube-proxy: Отвечает за сетевую маршрутизацию и балансировку нагрузки на уровне сети.
  • kube-apiserver, kube-controller-manager, kube-scheduler: Компоненты control plane (если они запущены как Pods в самоуправляемом кластере).
  • etcd: Хранилище ключ-значение для данных кластера (если развернут внутри кластера).
  • metrics-server: Собирает метрики использования ресурсов (CPU, memory) для kubectl top и горизонтального автомасштабирования (HPA).
  • Сетевые плагины (CNI), такие как calico-node или flannel.
  • Ingress-контроллеры, если они установлены как системные (например, nginx-ingress-controller).

Просмотр системных Pods:

kubectl get pods -n kube-system

Важное правило: Пользовательские приложения не следует разворачивать в kube-system. Это пространство имен зарезервировано для системного ПО, и работа в нем может привести к конфликтам и проблемам с безопасностью. Для пользовательских workload следует создавать отдельные namespaces (например, production, staging).