# kube-apiserver — API-сервер

← [Раздел](README.md) · [Главная](../README.md)

**Уровень:** **Junior**

## Цель

Глубоко понять **kube-apiserver — API-сервер**: назначение, архитектура, практика, типичные ошибки.

## Предварительно

- [03 Junior Komponenty](README.md)
- Предыдущие страницы раздела

## Время

**1–3 часа**

---

**kube-apiserver** — центральная точка control plane. Все клиенты (kubectl, контроллеры, scheduler, kubelet) общаются **только** через REST API.

### Цепочка запроса

1. Authentication (cert, bearer token, OIDC)
2. Authorization (RBAC, ABAC)
3. Admission (Mutating / Validating webhooks)
4. Persist в etcd
5. Watch-уведомления подписчикам

### API-группы

| Путь | Примеры ресурсов |
|------|------------------|
| `/api/v1` | Pod, Service, ConfigMap, Secret |
| `/apis/apps/v1` | Deployment, StatefulSet, DaemonSet |
| `/apis/networking.k8s.io/v1` | Ingress, NetworkPolicy |
| `/apis/autoscaling/v2` | HorizontalPodAutoscaler |

### Пример

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: demo
spec:
  containers:
    - name: app
      image: nginx:1.25
```

### Команды

```bash
kubectl cluster-info
kubectl get --raw /healthz
kubectl auth can-i create pods --as=system:serviceaccount:default:default
kubectl api-resources
```

### HA

Несколько инстансов apiserver за L4 LB; все читают/пишут в один etcd cluster.

## Типичные ошибки

- Диагностика без `kubectl describe` и Events
- Игнорирование RBAC при «permission denied»
- Путаница spec (desired) и status (actual)

## Связь с уровнями

| Уровень | Фокус |
|---------|-------|
| Junior | Что это и базовые команды |
| Middle | Интеграция с autoscaling, GitOps, observability |
| Senior | Эксплуатация control plane, SRE, DR |

---

## Самопроверка

1. Объясните kube-apiserver — API-сервер за 30 секунд.
2. Где компонент в архитектуре?
3. Команда диагностики?

---

## Дальше

→ [etcd — хранилище состояния](etcd.md)
