#cilium #external_nodes #kubernetes
Начальные условия: Есть кластер(а) kubernetes с cilium в режиме VxVLAN. Мастер ноды никак не входят в кластер k8s.
Надо: Настроить control plane так, чтобы kube-apiserver мог общаться с k8s node(s), вебхуками и расширенным апи (например, метрик сервер), но не был нодой kubernetes.
Сколько вариантов это сделать вы можете придумать используя стандартные средства (без написания чего-то своего)?
Я пока вижу 3 нормальных.
1. VTEP (Virtual Tunnel Endpoint)
https://docs.cilium.io/en/stable/network/vtep/
- Как работает: Поднимается vxvlan устройство на мастер-ноде, которое подключается ко всем нодам кластера, а весь трафик на поды направляется через это устройство.
- Плюсы: Легко настроить.
- Минусы: Требует обновления конфигурации при каждом изменении состава нод, увеличивает количество broadcast-пакетов, что может создавать проблемы на больших кластерах.
2. Cilium External Workloads
https://docs.cilium.io/en/stable/network/external-workloads/
- Как работает: Создаётся vxvlan интерфейс для Cilium сети и подключается Cilium Agent на внешней ноде с clustermesh API.
- Плюсы: Позволяет настраивать L3-связь без broadcast, а Cilium управляет всей связностью.
- Минусы: Требуется LoadBalancer или NodePort для clustermesh API, что может добавить сложности и расходы. Требуется надежное хранение в etcd.
3. Konnectivity Service
https://kubernetes.io/docs/tasks/extend-kubernetes/setup-konnectivity/
- Как работает: Konnectivity сервер разворачивается на мастер-ноде и позволяет контроллеру взаимодействовать с ресурсами нод через прокси.
- Плюсы: Работает и через NAT, поддерживает любые CNI.
- Минусы: Требуются дополнительные ресурсы на агенты и сервер Konnectivity, а также балансировщик для отказоустойчивости.
Есть еще вариант с выносом вебхуков и расширенного апи на хостовую сеть, но это не удобно.
Post #37
730

- ❤ 2