#背景#
在多个原生的k8s集群里面安装部署Prometheus-operater后,需要将Prometheus的数据发送至主Prometheus统一管理。发现使用Prometheus-Operater安装的组件受k8s的CRD影响,无法直接修改Prometheus的配置文件。
一、理解CRD(以下结果来自AI)
在 Kubernetes(K8s)中,CRD(Custom Resource Definition)是一种强大的扩展机制,允许用户自定义新的资源类型。这就是说,除了 Kubernetes 自带的资源类型(如 Pod、Deployment、ReplicaSet 等),用户还可以通过 CRD 创建自己定义的资源类型。
CRD 的全称为 CustomResourceDefinitions,即自定义资源。你可以把 CRD 理解成两部分,Customer Resource 和 Customer Controller。Customer Resource 可以让用户简单地存储和获取结构化数据,将这种对象动态地注册到 Kubernetes 集群中。
如果你的资源是个 CRD,因为没有对应的控制器,你就得为它自己写 Controller。Controller 是「控制器」,控制 Kubernetes 的资源实体。它通过监听资源变化事件来控制。这个事件可能是用户发起的(他希望把资源从 A 状态更新到 B 状态),Controller 就会获取这个事件并处理事件,即更新目标资源。
分析:也就是说,在部署整个Prometheus-Operater过程中,Prometheus的相关配置全部都通过自定义资源来控制,包括自定kind类型:
[root@kubemaster01 ~]# kubectl -n monitoring get crd
NAME CREATED AT
alertmanagerconfigs.monitoring.coreos.com 2023-09-18T09:39:32Z
alertmanagers.monitoring.coreos.com 2023-09-18T09:39:32Z
bgpconfigurations.crd.projectcalico.org 2020-12-04T06:31:26Z
bgppeers.crd.projectcalico.org 2020-12-04T06:31:26Z
blockaffinities.crd.projectcalico.org 2020-12-04T06:31:26Z
clusterinformations.crd.projectcalico.org 2020-12-04T06:31:26Z
felixconfigurations.crd.projectcalico.org 2020-12-04T06:31:26Z
globalnetworkpolicies.crd.projectcalico.org 2020-12-04T06:31:26Z
globalnetworksets.crd.projectcalico.org 2020-12-04T06:31:26Z
hostendpoints.crd.projectcalico.org 2020-12-04T06:31:26Z
ipamblocks.crd.projectcalico.org 2020-12-04T06:31:26Z
ipamconfigs.crd.projectcalico.org 2020-12-04T06:31:26Z
ipamhandles.crd.projectcalico.org 2020-12-04T06:31:26Z
ippools.crd.projectcalico.org 2020-12-04T06:31:26Z
networkpolicies.crd.projectcalico.org 2020-12-04T06:31:26Z
networksets.crd.projectcalico.org 2020-12-04T06:31:26Z
podmonitors.monitoring.coreos.com 2023-09-18T09:39:33Z
probes.monitoring.coreos.com 2023-09-18T09:39:33Z
prometheusagents.