The author developed Smith, a multi-node container orchestrator written in Go, to understand the internal architecture of Kubernetes. The system consists of approximately 30 source files and is designed to be small enough to be fully understood by a single developer.
Smith’s architecture includes a control plane that stores state in SQLite and executes a reconciliation loop. Agents on each node manage container lifecycles via containerd. Communication between nodes is secured using TLS 1.3 with mTLS, where all certificates are signed by a Smith CA.
The networking layer utilizes CNI with a smith0 bridge and host-local IPAM. The control plane manages a 10.22.0.0/16 pool, assigning a /24 subnet to each node. Service traffic is balanced via iptables, supporting ClusterIP and NodePort, while Ingress handles TLS termination using wildcard certificates.
The system currently runs on Proxmox, consisting of one control plane VM and five agent nodes. It is integrated with real DNS records in Route 53. The author implemented features such as gradual updates, which replace replicas while respecting a MaxUnavailable limit without using central locks or leases.
Through the development process, the author identified the necessity of level-triggered reconciliation over edge-triggered events to handle node reboots and network partitions. The project also highlighted the importance of specific architectural choices, such as the separation of CNI responsibilities and the use of masquerading for service traffic.





