Prober CRD

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

其主要定义均包含在 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

即运行策略。若未定义,则 Prober 将以 Job 形式仅运行一次;若已定义,则将以 Cronjob 形式,根据指定的时间间隔(默认单位为分钟)周期性运行。

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"