Ответ
kube-apiserver — это центральный управляющий компонент и единственный входной пункт в API Kubernetes. Все запросы на управление кластером (от kubectl, дашборда, других контроллеров или самих нод) проходят через него.
Его ключевые функции:
- API-шлюз: Предоставляет RESTful API для всех операций с ресурсами Kubernetes (Pods, Deployments, Services и т.д.).
- Аутентификация и авторизация: Проверяет подлинность запросов (с помощью сертификатов, токенов) и права доступа через механизмы вроде RBAC.
- Валидация и мутация: Проверяет корректность конфигурационных манифестов (YAML/JSON) и может модифицировать их через Admission Controllers (например, для автоматического добавления sidecar-контейнеров).
- Фронтенд для etcd: Является единственным компонентом, который напрямую взаимодействует с хранилищем состояний кластера (etcd). Все изменения состояния кластера записываются и читаются через API-сервер.
Практический пример: Когда вы выполняете kubectl apply -f deployment.yaml, kubectl формирует HTTP-запрос и отправляет его на kube-apiserver. Тот аутентифицирует запрос, валидирует манифест и, если всё в порядке, записывает желаемое состояние деплоймента в etcd. После этого другие компоненты (как kube-controller-manager и kube-scheduler) «видят» это новое состояние через тот же API-сервер и начинают работу по его реализации.