Кубернетичек
1.06K subscribers
14 photos
229 links
Download Telegram
Если у user или sa есть права на создание ролей в кубе, но в создаваемой роли навесить права, которых у данного user или sa нету, то куб не даст их назначить. Это часть RBAC privilege escalation prevention. Но так как я не ИБ и рубрику вредные советы люблю, то
есть два verbs которые позволяют это обойти: escalate и bind.

https://kubernetes.io/docs/concepts/security/rbac-good-practices/#escalate-verb
👍11
30 сентября 2025 должен произойти релиз kubernetes in action. Second edition. В 2018 году, когда я только начал изучать кубернетес, вышло первое издание этой замечательной книги. Когда ее прочитал, ко мне пришло представление как этот ваш кубирнтес работает. С выходом первой книги часть апи изменилось, часть нет, например мало что поменялось в структуре стейтфулсета. Только поведение самого контроллера, он на момент выхода книги, ещё занимался шедулингом подов. Куб и из не очень простой системы, стал еще сложнее. Но концепция и взаимодействие компонетов не сильно. Думаю, для новичков с кубом, второе издание будет так же полезным, как и когда-то первое.
👍8🫡2
Кубернетичек
65k nodes in k8s https://cloud.google.com/blog/products/containers-kubernetes/gke-65k-nodes-and-counting Из прикольного, чтобы достичь этого, конечно же выкинули etcd из куба. И взяли Spanner. На этом можно и закончить, в целом. Кажется это главная причина…
Все, 65к нод не модно. Eks говорит, мы предоставляем кластера со 100к нод https://aws.amazon.com/blogs/containers/under-the-hood-amazon-eks-ultra-scale-clusters/. Для этого нужно: использовать tmpfs, шардировать ключи (разделить кластера etcd по ключам в kube api), пенести транзакционную модель на кастомный плагин, дождать изменений в кубе 1.31 и 1.33 с констистентным чтением и стриминг пакетов, поправить индексацию в популярных куб контроллер. И вуаля)
🔥9😁4👀21
Немного про хуки выполняемые кубелетом и их гарантии. Я в целом всегда их избегал. Но однажды появилась идея, выводить реплику из кластера приложения не через оператора, а с использованием preStop (кстати, даже есть действие sleep у него https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/3960-pod-lifecycle-sleep-action/README.md). Планировали это сделать ненадолго. Но если зайдет - то нет ничего постоянного чем что-то временное. Но не в этот раз.
Первый случай, хук не отработает если кубелет упал, или удалили ресурс ноды из куба. Второй - иногда могут быть приседания с deletionGracePeriodSeconds, если хук может выполняться долго (не наш случай, но хозяйке на заметку). Третий - была бага у кубелета, когда он просто не выполнял его (сходу не нашел ишью к посту, но тут на доверии же?)). Четвёртый - https://github.com/kubernetes/kubernetes/issues/129907.

В целом для себя вывод сделал как и раньше, что это скорее возможность костылять, как например со слипом для грейсфул шатдауна пока под не уберется из эндпоинтов, чем реальное средство в реальной эксплуатации.
5👍3
Судя по тредам этот кеп https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/961-maxunavailable-for-statefulset, которому уже почти 6 лет, имеет шансы перейти в бету в этом году (в 1.34 его не будет, но в 1.35, кто знает). Для пользователей kruise controller она уже доступна несколько лет как. К слову.
https://github.com/cloudnativelabs/kube-router/issues/1715

kube-router - один из простых и надёжных cni, похоже потихоньку умирает. К этому шло, за последние годы фич не появлялось, только фиксы. Да и весь проект живёт, по-сути, на плечах одного человека.
💔6🤯4
https://xn--r1a.website/ittales/674
Я понимаю, после стольких насмешек сидеро над ссш, им религия не позволит добавить его к себе в ось.
Решение классное с точки зрения инженерной смекалки. Когда есть набор ограничений, а что-то делать нужно.
Но осущестлять подключение через nc для дебага, напоминает анекдот про то, что ёжики плачут, колются, но продолжают есть кактус :)
😢5👍3
Не то, чтобы я плохо относился бы к kubespray. Скорее никак, но это выглядит крайней забавно https://github.com/kubean-io/kubean/blob/7db0f824e9acd58c882c94600092c0c1c394dfe8/pkg/util/entrypoint/entrypoint.go#L135

Оператор запускающий kubespray в виде кубернетес джоб

И является частью cncf
https://www.cncf.io/projects/kubean/
https://isovalent.com/blog/post/isovalent-load-balancer/

Так вот почему фичи по ингресс гейтвею в опенсорсе у cilium просели. :) Не осуждаю, это вполне логичное решение. Особенно с ростом количества компаний ориентированых на этот сегмент. Те же tetrate как пример.
https://github.com/nebius/helmrelease-trigger-operator

У fluxcd есть небольшой недостаток один - если изменить конфигмапу/секрет которые указаны в valueFrom - то флакс не заедеплоит его. Тут нужно ручное вмешательство. Данный оператор закрывает данный гап, в момент изменения конфигмапа, триггерит деплой helm контроллера флакса.
Кстати, у козистека есть похожая логика в их контроллере https://github.com/cozystack/cozystack/blob/main/internal/controller/system_helm_reconciler.go
👍5
https://github.com/kubernetes-sigs/controller-runtime/issues/3044

https://github.com/kubernetes-sigs/controller-runtime/issues/532

Прям неприятно был удивлён реализации пагинации с кешом контроллер рантайма. Оно как кот Шрёдингера.
И на скольких объектах я не экспериментировал, и сколько бы лимит не выставлял, получал Cached clients return incomplete object lists for paginated list calls. Стоило выкрутить CacheSyncTimeout (2 минут по-умолчанию) повыше, например на 5, 10 минут - пагинация начинает работать с кешом. Пока не понял до конца откуда эта магия появляется. Не сильно глубоко копал (может кто знает ответ?). Но довольно неприятный момент.
😁1
Кубернетичек
https://isovalent.com/blog/post/isovalent-load-balancer/ Так вот почему фичи по ингресс гейтвею в опенсорсе у cilium просели. :) Не осуждаю, это вполне логичное решение. Особенно с ростом количества компаний ориентированых на этот сегмент. Те же tetrate как…
https://isovalent.com/blog/post/isovalent-load-balancer-technical-deep-dive/
Подъехали технические детали, и я немного ... разочарован.
Пока все современноеые человечество контроллеры, даже энтерпрайз, идут в gateway api, изовалент стало делать свой crd. Kind: LBVIP - это аналог Kind: Gateway в рамках которого через Gateway.Spec.Addresses можно назначит любой VIP адрес. Ну, сделали и сделали.
Если посмотреть на архитектуру, то там ничего такого, чего бы нельзя было бы сделать в условном cilium + envoy/istio gateway в community edition. Ну ладно, добавили ipip между tier'ами (хотя kube-router это и в режиме dsr делал 7 лет назад).
Ну и ipip это как-то не молодежно, вон флара использует Foo-Over-UDP https://blog.cloudflare.com/high-availability-load-balancers-with-maglev/.
То есть продают они оператор, который может настраивать балансировку между нодами разного назначения tier-1 l4 balancer, и tier-2 l7.

Пызы:
https://highload.ru/2017/abstracts/2946
Видео 2017 года. Что назыается найдите отличия (кроме того, что в статье используется кубернетес и ebpf).
7
https://github.com/kubernetes/kubernetes/pull/127525
С 1.33 при static policy, процессы а подах теперь не будут попадать под cfs quotas. Останется подтюнить cpu manager чтобы изолировал не только кубовые процессы, но и системные- тогда заживём!
https://kubernetes.io/blog/2025/09/04/kubernetes-v1-34-introducing-psi-metrics-beta/

Я хотел написать про psi, но погуглил, кажется вот в этих постах написали более интересно, чем сделал бы я.
https://xn--r1a.website/azalio_tech/5
https://xn--r1a.website/troubleperf/73

То есть теперь нативно можно получать более подробную информацию о том, как ваши поды контейнеры процессы контролируемые кубом "страдают" от нехватки ресурсов, и страдают ли.
👍9🔥52
http://github.com/bchess/k8s-1m

Ну, почему бы и да

Ps: single instance с in-memory etcd без постинга лиз и ивентов, а целом, удивился, что не стал лизы и ивенты в отделный етцд выносить, ну да ладно.
👍1