Prober CRD

Prober CRD 在 kubeprober 中描述探测集,用于执行具体的探测任务,并上报探测状态。

主要结构

Prober CRD 的主要定义都包含在 spec 字段中,如下:

  1. // ProbeSpec defines the desired state of Probe
  2. type ProbeSpec struct {
  3. Policy Policy `json:"policy,omitempty"`
  4. Template apiv1.PodSpec `json:"template,omitempty"`
  5. Configs []Config `json:"configs,omitempty"`
  6. }
  7. type Policy struct {
  8. // unit: minute
  9. RunInterval int `json:"runInterval,omitempty"`
  10. }
  11. // Checker defines the desired state of Checker
  12. type Config struct {
  13. Name string `json:"name,omitempty"`
  14. Env []apiv1.EnvVar `json:"env,omitempty"`
  15. }

其中,policy 和 template 在 编写第一个 Prober 中已经简单描述过。

运行策略 policy

如果未定义,则 prober 将会以 job 的形式,只运行一次;如果定义,则将以 cronjob 的形式,按照指定的时间间隔(默认单位:分钟)周期性运行。

模版定义 template

由 Prober CRD 的定义可以看出,template 就是定义 podSpec, 用于描述 prober 运行时负载 pod。

自定义配置 configs

在 kubeprober 中,一个 prober 实际上是支持将多个执行探测的二进制文件打包到一个容器镜像中的,这样可以通过一个 pod 运行原本需要多个 pod 运行的探测任务,节省了很多资源和容器调度时间。

而每个二进制探测任务可能需要各自的自定义配置,为了避免将所有的配置放在一起,导致混乱,kubeprober 支持为每个二进制探测任务分别指定自定义配置。

  1. apiVersion: kubeprober.erda.cloud/v1
  2. kind: Probe
  3. metadata:
  4. name: prober-demo-example
  5. namespace: kubeprober
  6. spec:
  7. policy:
  8. # unit: minute
  9. runInterval: 5
  10. template:
  11. containers:
  12. - name: prober-demo-example
  13. image: kubeprober/demo-example:v0.0.1
  14. resources:
  15. requests:
  16. cpu: 10m
  17. memory: 50Mi
  18. restartPolicy: Never
  19. configs:
  20. - name: demo-checker1
  21. env:
  22. - name: CHECKER1_ENV1
  23. value: "CHECKER1_VAL1"
  24. - name: CHECKER1_ENV2
  25. value: "CHECKER1_VAL2"
  26. - name: demo-checker2
  27. env:
  28. - name: CHECKER2_ENV1
  29. value: "CHECKER2_VAL1"
  30. - name: CHECKER2_ENV2
  31. value: "CHECKER2_VAL2"