系统架构
OpenKruise 的整体架构如下:

API
所有 OpenKruise 的功能都是通过 Kubernetes API 来提供, 比如:
- 新的 CRD 定义,比如
$ kubectl get crd | grep kruise.ioadvancedcronjobs.apps.kruise.io 2021-09-16T06:02:36Zbroadcastjobs.apps.kruise.io 2021-09-16T06:02:36Zclonesets.apps.kruise.io 2021-09-16T06:02:36Zcontainerrecreaterequests.apps.kruise.io 2021-09-16T06:02:36Zdaemonsets.apps.kruise.io 2021-09-16T06:02:36Zimagepulljobs.apps.kruise.io 2021-09-16T06:02:36Znodeimages.apps.kruise.io 2021-09-16T06:02:36Zpodunavailablebudgets.policy.kruise.io 2021-09-16T06:02:36Zresourcedistributions.apps.kruise.io 2021-09-16T06:02:36Zsidecarsets.apps.kruise.io 2021-09-16T06:02:36Zstatefulsets.apps.kruise.io 2021-09-16T06:02:36Zuniteddeployments.apps.kruise.io 2021-09-16T06:02:37Zworkloadspreads.apps.kruise.io 2021-09-16T06:02:37Z# ...
- 资源对象中的特定标识(labels, annotations, envs 等),比如
apiVersion: v1kind: Namespacemetadata:labels:# 保护这个 namespace 下的 Pod 不被整个 ns 级联删除policy.kruise.io/delete-protection: Cascading
Manager
Kruise-manager 是一个运行 controller 和 webhook 中心组件,它通过 Deployment 部署在 kruise-system 命名空间中。
$ kubectl get deploy -n kruise-systemNAME READY UP-TO-DATE AVAILABLE AGEkruise-controller-manager 2/2 2 2 4h6m$ kubectl get pod -n kruise-system -l control-plane=controller-managerNAME READY STATUS RESTARTS AGEkruise-controller-manager-68dc6d87cc-k9vg8 1/1 Running 0 4h6mkruise-controller-manager-68dc6d87cc-w7x82 1/1 Running 0 4h6m
逻辑上来说,如 cloneset-controller/sidecarset-controller 这些的 controller 都是独立运行的。不过为了减少复杂度,它们都被打包在一个独立的二进制文件、并运行在 kruise-controller-manager-xxx 这个 Pod 中。
除了 controller 之外,kruise-controller-manager-xxx 中还包含了针对 Kruise CRD 以及 Pod 资源的 admission webhook。Kruise-manager 会创建一些 webhook configurations 来配置哪些资源需要感知处理、以及提供一个 Service 来给 kube-apiserver 调用。
$ kubectl get svc -n kruise-systemNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkruise-webhook-service ClusterIP 172.24.9.234 <none> 443/TCP 4h9m
上述的 kruise-webhook-service 非常重要,是提供给 kube-apiserver 调用的。
Daemon
这是从 Kruise v0.8.0 版本开始提供的一个新的 daemon 组件。
它通过 DaemonSet 部署到每个 Node 节点上,提供镜像预热、容器重启等功能。
$ kubectl get pod -n kruise-system -l control-plane=daemonNAME READY STATUS RESTARTS AGEkruise-daemon-6hw6d 1/1 Running 0 4h7mkruise-daemon-d7xr4 1/1 Running 0 4h7mkruise-daemon-dqp8z 1/1 Running 0 4h7mkruise-daemon-dv96r 1/1 Running 0 4h7mkruise-daemon-q7594 1/1 Running 0 4h7mkruise-daemon-vnsbw 1/1 Running 0 4h7m
当前内容版权归 OpenKruise 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 OpenKruise .
