TGViewer
DevOps 413 DevOps 413 @devops413 · 459 subscribers
Post #49 1.28K
Если вы никогда не админили куб 🖼️ - вы, скорее всего, никогда не сталкивались с зеркальными подами. Но даже если админили - есть ряд объектов, с которыми вы не взаимодействовали напрямую. Я собрала свой список неочевидных абстракций, с которыми вы могли не сталкиваться или сталкивались, но не знаете, что это.

1️⃣. Finalizer
Это поле в метаданных любого ресурса. Пока оно не пустое - Kubernetes не удалит объект, даже если вы уже выполнили kubectl delete. Он просто висит в статусе Terminating и ждёт дополнительного события. Встречается в операторах и CRD - контроллер должен сначала почистить внешние ресурсы, и только потом разрешить удаление. Часто при мне начинающие инженеры спотыкались об него и ломали голову почему откат helm релиза завис 😅


2️⃣. Ephemeral container
Временный контейнер, который можно добавить в уже запущенный под без его перезапуска командой kubectl debug. Используется только для отладки - особенно когда основной образ собран на distroless и внутри нет ни bash, ни curl, вообще ничего. Добавляешь эфемерный контейнер с нужными инструментами, дебажишь, после удаляем.


3️⃣. Pause container
Первый контейнер, который создаётся в каждом поде без исключения еще до старта основного. Он держит network и PID namespace для всех остальных контейнеров в поде. Именно поэтому все контейнеры в поде видят один и тот же localhost. Его можно увидеть в crictl ps как pause.


4️⃣. Sidecar container
Начиная с Kubernetes 1.29 - это уже не паттерн, а отдельный тип контейнера в поде (initContainer с restartPolicy: Always, init контейнер в отличие от Sidecar запускается только при старте пода один раз). Он стартует до основных контейнеров и живёт столько же, сколько под. Раньше так называли просто контейнер-компаньон рядом с основным - агент логов или рестарт сервис.

5️⃣. Static pod
По сути это контейнер, которым управляет kubeletнапрямую, читая манифест из директории на ноде и минуя контроллеры и kube-scheduler. И никакого управления через kube-api: вы не можете его удалить командой kubectl delete. Именно так, например, запущен kube-apiserver, что позволяет повысить его отказоустойчивость.


6️⃣. Mirror pod
Когда kubelet запускает static pod, он создаёт в API-сервере его "зеркальную" копию - mirror pod. Это readonly-представление: вы видите его через kubectl get pods. Если удалить такой под, то пропадет сам объект kube-api, но фактически контейнер статик пода будет продолжать работать.


7️⃣. PDB (Pod Disruption Budget)
Объект, который используется не так часто, как deployment. Он говорит кластеру: "не трогай больше N подов одновременно". Срабатывает при запланированных эвикциях (дрейн ноды, rolling update). Без PDB при kubectl drain все реплики вашего приложения могут упасть одновременно. С PDB - кластер подождёт, пока где-то поднимется новый под, и только потом продолжит.


8️⃣. Lease
Объект в группе coordination.k8s.io, механизм распределённой блокировки. Используется для leader election - когда у вас несколько реплик контроллера, но активно работать должна только одна. Именно через Lease kube-controller-manager и kube-scheduler выбирают лидера. Ещё kubelet обновляет свой Lease каждые несколько секунд - это его heartbeat, по которому API-сервер понимает, что нода жива.


9️⃣. EndpointSlice
Замена старому объекту Endpoint. Хранит маппинг сервиса на IP-адреса конкретных подов, но разбитый на слайсы по 100 записей. Появился потому, что в больших кластерах один Endpoints на сервис с тысячами подов - это огромный объект, который при каждом изменении перегружает etcd и сеть. EndpointSlice решает эту проблему. Когда трафик идёт не туда - идёте проверять именно его.


1️⃣0️⃣. SubjectAccessReview
API-объект для проверки RBAC-прав. Отправляешь запрос: "может ли пользователь X выполнить действие Y на ресурсе Z?" - получаешь yes/no. Именно это делает kubectl auth can-i под капотом. Полезно знать при написании операторов или admission webhook-ов, которым нужно самим проверять права перед тем, как что-то сделать.


Сколько пунктов из 10 тебе приходилось дебажить?) Мне семь 😅
  • ❤‍🔥 10
  • 🔥 3
  • ❤ 1
  • 👍 1
  • 😁 1
More from @devops413
  1. Oct 10, 2026Мой личный роадмап по DevOps Вчера выступала на SysAdmin conf с докладом про переход в Dev…
  2. Oct 8, 2026Есть такой легендарный человек @kruchkov_alexandr, который известен инженерному комьюнити…
  3. Oct 6, 2026Не знаешь кубер 🖼️ - не инженер Это частое заблуждение. Инженеры бывают разными и в новом…
  4. Sep 9, 2026Post #56
  5. Sep 3, 2026Осень встречает нас большим количеством интересных бесплатных конференций 🍂. Иду на них с…
  6. Sep 2, 2026Уже через неделю в следующую среду 9 сентября я приму участие в круглом столе на тему «Кри…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →