Автор разработал Smith, многоузловой оркестратор контейнеров на языке Go, чтобы изучить внутреннее устройство Kubernetes. Система состоит из примерно 30 исходных файлов, что позволяет удерживать архитектуру всей системы в памяти.
Архитектура Smith включает управляющий контур с хранением состояния в SQLite и цикл согласования. Агенты на узлах управляют жизненным циклом контейнеров через containerd. Взаимодействие между узлами защищено mTLS (TLS 1.3), где все сертификаты подписаны собственным CA.
Сеть построена на CNI с использованием моста smith0 и IPAM-плагина host-local. Управляющий контур распределяет пул 10.22.0.0/16, выделяя каждому узлу подсеть /24. Балансировка трафика Service реализована через iptables, поддерживаются ClusterIP и NodePort.
Система работает на Proxmox: одна виртуальная машина управляющего контура и пять узлов с агентами. Используются реальные DNS-записи в Route 53. Реализованы постепенные обновления реплик с учетом лимита MaxUnavailable без использования центральных блокировок или lease.
В процессе разработки автор пришел к выводу о необходимости согласования по текущему состоянию (level-triggered) вместо событийного (edge-triggered) для устойчивости при перезагрузках. Также подтвердилась важность разделения зон ответственности CNI и применения маскарадинга для корректной работы сервисов.






