В Kubernetes всё крутится вокруг API.
Центральный компонент control plane, с которым общаются все остальные — kubectl, kubelet, scheduler, контроллеры и внешние системы — это kube-apiserver.
👀 Что он делает?
— Единая точка входа
Все операции (создание, чтение, обновление, удаление ресурсов) проходят через API-сервер. Другие компоненты не общаются друг с другом напрямую.
— Аутентификация и авторизация
Проверяет, кто делает запрос (сертификат, токен, OIDC) и имеет ли он права.
— Валидация и мутация
При создании или изменении ресурса API-сервер проверяет корректность манифеста и может изменять его через admission webhooks.
— Хранение состояния
Единственный компонент, который общается с etcd — распределённым хранилищем кластера. API-сервер кэширует данные и обеспечивает согласованность.
— Механизм watch
Клиенты могут подписаться на изменения ресурсов через long polling. Это позволяет мгновенно реагировать на события без постоянных опросов.
⚙️ Как это работает?
➡️ Пользователь выполняет
kubectl create deployment nginx --image=nginx➡️ kubectl преобразует команду в HTTP-запрос (JSON) и отправляет его на kube-apiserver.
➡️ API-сервер аутентифицирует пользователя (например, по сертификату из kubeconfig).
➡️ Проверяет права через RBAC: есть ли разрешение на создание deployment в указанном namespace.
➡️ Запускается цепочка admission controllers: валидация (нет ли синтаксических ошибок), мутация (применяются политики по умолчанию).
➡️ API-сервер сериализует объект в Protobuf/JSON и записывает в etcd.
➡️ Возвращает клиенту успешный ответ.
➡️ Событие о создании deployment’а через watch-механизм получает kube-controller-manager, который создаёт ReplicaSet, а тот — поды. Scheduler назначает поды на ноды, а kubelet их запускает.
Пример
kubectl get pods -v=8
В выводе будут видны HTTP-запросы к
/api/v1/namespaces/default/pods. API-сервер аутентифицирует запрос, проверяет RBAC, затем загружает данные из etcd (или из своего cache), сериализует в JSON и возвращает.kube-apiserver — это не просто «REST API».
Это центральная нервная система Kubernetes, которая совмещает роль шлюза, диспетчера, хранителя состояния и механизма оповещений.
Понимание его работы помогает диагностировать 80% проблем с кластером: от отказа в доступе до зависших ресурсов.
#заметкиИнженера
