Kube-router 是围绕观察者和控制器的概念构建的。观察者使用 Kubernetes 观察 API 获取与创建、更新、删除 Kubernetes 对象相关的事件通知。每个观察者会收到与某个特定 API 对象相关的通知。当收到事件时,观察者会广播事件。控制器注册者以获取到来自观察者的事件更新,并对事件做出反应。
如下图所示,Kube 路由器由 3 个核心控制器和多个监视器组成。
每个控制器遵循如下结构:
func Run() {
for {
Sync() // control loop that runs for ever and perfom sync at periodic interval
}
}
func OnUpdate() {
Sync() // on receiving update of a watched API object (namespace, node, pod, network policy etc)
}
Sync() {
//re-concile any state changes
}
Cleanup() {
// cleanup any changes (to iptables, ipvs, network etc) done to the system
}