В Kubernetes есть мощный механизм под названием API Aggregation Layer.
Он помогает добавлять кастомные API в кластер.
Это означает, что вы можете создавать собственные типы ресурсов и заставлять Kubernetes делать больше, чем он умеет из коробки.
Классический пример использования Aggregation Layer в Kubernetes - это реализация Metrics Server.
Metrics Server реализует Metrics API как дополнительный API-сервер, используя Aggregation Layer.
Это означает, что хоть Metrics Server и является отдельным сервисом, к его API можно обращаться так, как будто он - нативная часть Kubernetes API.
В целом, поток запросов выглядит так:
- Когда вы запускаете
kubectl get pods, запрос уходит на /api/v1/pods и маршрутизируется в Core API Server.- Когда вы запускаете
kubectl top pods, запрос уходит на /apis/metrics.k8s.io/v1beta1/ и маршрутизируется в Metrics Server.Prometheus Adapter также использует этот механизм, чтобы отдавать кастомные метрики по адресу
/apis/custom.metrics.k8s.io/👉 DevOps Portal
