OpenKruise 组件
当在一个 K8s 集群中安装了 Kruise,其实是创建了一些 Kruise 的 CRD
和相关组件。
CRDs
:
以下的 CRD
会安装到集群中:
kubectl get crd | grep kruise.io
advancedcronjobs.apps.kruise.io 2021-03-11T01:46:56Z
broadcastjobs.apps.kruise.io 2021-03-11T01:46:56Z
clonesets.apps.kruise.io 2021-03-11T01:46:56Z
daemonsets.apps.kruise.io 2021-03-11T01:46:56Z
imagepulljobs.apps.kruise.io 2021-03-11T01:46:56Z
nodeimages.apps.kruise.io 2021-03-11T01:46:56Z
sidecarsets.apps.kruise.io 2021-03-11T01:46:56Z
statefulsets.apps.kruise.io 2021-03-11T01:46:56Z
uniteddeployments.apps.kruise.io 2021-03-11T01:46:56Z
Kruise-manager
:
Kruise-manager
是一个运行 controller
和 webhook
中心组件,它通过 Deployment
部署在 kruise-system
命名空间中。
kubectl get deploy -n kruise-system
NAME READY UP-TO-DATE AVAILABLE AGE
kruise-controller-manager 2/2 2 2 6m33s
kubectl get pod -n kruise-system
NAME READY STATUS RESTARTS AGE
kruise-controller-manager-5cd9c5b5dd-hb7z9 1/1 Running 0 6m48s
kruise-controller-manager-5cd9c5b5dd-mfdxz 1/1 Running 0 6m48s
kruise-daemon-29wc4 1/1 Running 0 6m47s
kruise-daemon-9jvjb 1/1 Running 0 6m47s
kruise-daemon-m4nmk 1/1 Running 0 6m47s
kruise-daemon-q8vzl 1/1 Running 0 6m48s
逻辑上来说,如 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-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kruise-webhook-service ClusterIP 10.100.86.89 <none> 443/TCP 7m23s
上述的 kruise-webhook-server-service
非常重要,是提供给 kube-apiserver
调用的。
Kruise-daemon
:
这是从 Kruise v0.8.0 版本开始提供的一个新的 daemon 组件。
它通过 DaemonSet
部署到每个 Node
节点上,提供镜像预热、容器重启等功能。
kubectl get pod -n kruise-system -l control-plane=daemon
NAME READY STATUS RESTARTS AGE
kruise-daemon-29wc4 1/1 Running 0 13m
kruise-daemon-9jvjb 1/1 Running 0 13m
kruise-daemon-m4nmk 1/1 Running 0 13m
kruise-daemon-q8vzl 1/1 Running 0 13m