k8s_day10_03
helm 与operator 的关系虽然operator 与helm 都可以方便我们部署应用。但是它们还有本质的区别。
部署etcd 集群时 ,只要编写etcd-operator 所引进的etcdCluster 资源,指明几个节点。就能帮助我们创建集群
helm 除了部署之外,没有别的其他作用,只是一个纯粹的部署工具,它底层依赖的是控制器或者是operator 。
但是operator 部署只是它的功能之一,它的核心作用是确保资源符合k8s api资源规范的基础上,确保用户定义的实际状态符合期望状态 ,它会含有大量的业务代码, 来确保声明池的内容得以实现。
部署Prometheus 的2种方式helm部署原生版Prometheus Server, 要借助于StatefulSet完成;helm部署prometheus-operator, 再operator部署prometheus server ,好处是operator 提供了CRD,提供了更多的功能 手动部署prometheus
未完成
global:
scrape_interval: 10s #指标抓取间隔
scrape_timeout: 10s #指标抓取时长
evaluation_interval: 10s #多久重载rules
- role: endpoints
#只是为了抓apiserver 自己的
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token #联系到api的认证信息
- source_labels: [__meta_kubernetes_namespace,__meta_kubernetes_service_name,__meta_kubernetes_endpoint_port_name]
action: keep
regex: default;kubernetes;https
# 意义是 如果采集的ep资源标签 ns 是defaut,svc 是kubernetes,ep是http 协议 就保留下来
#保留 k8s 在default 名称空间访问的端点
- job_name: kubernetes-cadvisor
#cadvisor 是kubelet 内置的内建的容器指标输出程序。每一个kubelet 在节点上管理着大量的pod,cadvisor 负责统计pod 使用的内存、cpu、等等 并且把它暴露出来
kubelet 所能收集的节点指标,是直接发给apiserver保存的。所以apiserver 本身就是一个指标服务器。它存了很多指标,因此promethus 抓取节点指标时不用 kubelet 进程上去抓,而是去连apiserver 去抓。为什么要到apiserver 上去抓 ,因为你不可能认证到每一个kubelet 上,主要是因为node 太多的话认证太麻烦。
真正的指标数据一定是在kubelet 上没错,但是kubelet 自身是要做双向认证的,你要想到kubelet 上抓指标必须认证到kubelet 上才行 而apiserver 是可以直接认证到kubelet 上去的。 https://kubernetes.default.svc:443/api/v1/nodes/node01/proxy/metrics 这个链接所代表的意思是 以apiserver 代理认证到这个节点上 去抓取指标数据的。 也可以在每个节点装exporter 去抓。这2者 抓取重叠部分指标的时候可以靠exporter 去抓,可以减轻apiserver 压力。 但是,有些指标二者是不重叠的,所以有人 同时采取2种方式
helm 部署prometheushelm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
更改value.yaml 的值。
主要改 使用的sc 、ingress 等等
server:
ingress:
enabled: true
annotations: {}
kubernetes.io/ingress.class: nginx
extraLabels: {}
hosts:
- mon.magedu.com
[root@node01 tmp]# helm install prom prometheus-community/prometheus -f /tmp/prom-values.yaml -n monitoring



