架构
Last updated
Last updated
安装完 Knative 之后,来梳理下安装的组件
注:
istiod、istio-ingressgateway 和 cluster-local-gateway 是 istio 相关组件,暂不过多说明
很多二进制都叫 webhook、controller,但他们并无联系,只不过都是通用的 webhook/controller 模型
除了上述组件之外,serving 还会给用户 pod 插入一个 queue-proxy 的容器
serving 整体架构是:
其中:
kn client 封装了网络调用
webhook/controller 负责 serving 内部各种 CRD 的初始化、校验和流程管理
istio-webhook/networking-istio 负责 Knative-istio 间 CRD 的转换,以调用 istio 的能力
当副本为0时,ingress gateway 会将请求转发至 activator,触发 pod 0->1 的扩容
queue-proxy 会采集容器 metrics,并上报给 autoscaler
autoscaler 处理扩缩相关逻辑,包括根据 metrics,完成 pod 动态扩缩
eventing 整体架构是:
其中:
webhook、controller 相关组件基本工作于控制面
eventing-webhook/eventing-controller 负责 eventing 大部分 CRD 的处理
mt-broker-controller(mt: multi tenant) 负责 broker 相关的逻辑
xxc-controller 负责对应 channel 相关逻辑,缺省安装的是 imc(imc: in memory channel)
其它组件工作于数据面
mt-broker-ingress 是 broker 的入口,mt-broker-filter 负责按用户配置做分发过滤
xxc-dispatcher 负责 event 的接收、转发,而 xxc 则是对应的 channel provider,如 kafka。imc 比较特殊,相应功能直接在 dispatcher 里实现的
在使用小节会结合实例来详细说明
namespace
pod
命令
源码 repo
knative-serving
istio-webhook
webhook
networking-istio
controller
net-istio
webhook
webhook
serving
controller
controller
serving
activator
activator
serving
autoscaler
autoscaler
serving
knative-eventing
eventing-webhook
webhook
eventing
eventing-controller
controller
eventing
imc-controller
channel_controller
eventing
imc-dispatcher
channel_dispatcher
eventing
mt-broker-controller
mtchannel_broker
eventing
mt-broker-filter
filter
eventing
mt-broker-ingress
ingress
eventing
istio-system
istiod
pilot-discovery
istio-ingressgateway
pilot-agent
istio
cluster-local-gateway
pilot-agent
istio