Cluster CRD

Cluster CRD 在 Kubeprober 中描述集群对象,用于管理海量集群信息以及查看集群的诊断信息。

主要结构

  1. type ClusterSpec struct {
  2. K8sVersion string `json:"k8sVersion,omitempty"`
  3. ClusterConfig ClusterConfig `json:"clusterConfig,omitempty"`
  4. ExtraInfo []ExtraVar `json:"extraInfo,omitempty"`
  5. }
  6. type ExtraVar struct {
  7. Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
  8. Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"`
  9. }
  10. type ClusterConfig struct {
  11. Address string `json:"address"`
  12. Token string `json:"token"`
  13. CACert string `json:"caCert"`
  14. CertData string `json:"certData"`
  15. KeyData string `json:"keyData"`
  16. ProbeNamespaces string `json:"probeNamespaces"`
  17. }
  18. // ClusterStatus defines the observed state of Cluster
  19. type ClusterStatus struct {
  20. HeartBeatTimeStamp string `json:"heartBeatTimeStamp,omitempty"`
  21. NodeCount int `json:"nodeCount,omitempty"`
  22. AttachedProbes []string `json:"attachedProbes,omitempty"`
  23. Checkers string `json:"checkers,omitempty"`
  24. OnceProbeList []OnceProbeItem `json:"onceProbeList,omitempty"`
  25. }
  26. type OnceProbeItem struct {
  27. ID string `json:"id,omitempty"`
  28. CreateTime string `json:"createTime,omitempty"`
  29. FinishTime string `json:"finishTime,omitempty"`
  30. Probes []string `json:"probes,omitempty"`
  31. }
  32. // Cluster is the Schema for the clusters API
  33. type Cluster struct {
  34. metav1.TypeMeta `json:",inline"`
  35. metav1.ObjectMeta `json:"metadata,omitempty"`
  36. Spec ClusterSpec `json:"spec,omitempty"`
  37. Status ClusterStatus `json:"status,omitempty"`
  38. }

配置信息

配置信息包含 K8sVersion、ClusterConfig 和 ExtraInfo, 其中 K8sVersion 与 ClusterConfig 信息由 probe-agent 上报,将 K8s 的版本信息、连接 ApiServer 所需 Token 或者密钥对信息写入 Cluster 资源的 Spec 中。

ClusterConfig

ClusterConfig 用于存储 probe-agent 从受纳管集群中采集的 K8s 信息,包括 api-server 内网地址、认证所需 Token、CA、Cert、Key 以及 probe-agent 所在的 namespace。上报的 ApiServer 认证信息所具备的 RBAC 权限由部署在受纳管集群的 kuberprober ns 下的 kubeprober ServiceAcount 权限决定,如需更多权限,可修改对应的 ClusterRole。

ExtraInfo

ExtraInfo 用于存储每个集群的特性化配置,也可理解为环境变量,通过增加、修改或删除 Cluster 资源中的 ExtraInfo 环境变量,probe-master 将最新变量同步至对应集群名为 extra-config 的 ConfigMap 中,随后即可在对应 Probe 诊断程序中使用变量,示例如下:

  1. extraInfo:
  2. - name: LOGIN_USER
  3. value: "xxxxxxx"
  4. - name: LOGIN_PASSWORD
  5. value: "xxxxxxxxxxx"

状态信息

Cluster 的 Status 用于存储集群的诊断状态数据,包括节点数量、该集群关联的 Probe 列表、所有 Checker 的诊断结果数据(以总数/Error 数量呈现),以及 OnceProbeList 一次性诊断历史记录。