zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Kubernetes笔记:深入kubernetes---日志和监控( Prometheus、Helm、PrometheusOperator、Grafana)

Kubernetes监控日志笔记 深入 --- Prometheus Grafana
2023-09-11 14:15:39 时间

Prometheus

Prometheus架构和原理

Prometheus起源

  1. 与Kubernetes同源
  2. 2016.5加入CNCF
  3. 2018.8从CNCF毕业

Prometheus是什么

  1. 一系列服务的组合
  2. 系统和服务的监控报警平台

Prometheus特征

  1. 由metric名称和kv标识的多维数据模型
  2. 灵活的查询语言(PromQL)
  3. 支持pull、push两种方式添加数据
  4. 支持基于Kubernetes服务发现的动态配置

 Prometheus架构

Prometheus数据类型

  1. Counter(计数器)
  2. Guage(仪表盘)
  3. Histogram(直方图)
  4. Summary(摘要)

Prometheus数据来源

数据来源-服务器基础指标

  1.  服务器基础指标:cpu、内存、网络、磁盘等
  2. NodeExporter

 数据来源-docker容器指标

每个worker节点内置一个kubelet服务(cAdvisor),采集容器信息,并提供一个http服务供Prometheus拉取数据

 数据来源-Kubernetes组件

组件的metrics

Prometheus部署

部署方案选择

  1. 手动部署
  2. Helm
  3. Prometheus Operator
  4. Helm+Prometheus Operator

Helm

  1. Ubuntu的apt-get、Centos的yum
  2. Kubernetes的包管理器
  3. 一包一Chart(一个目录)

Helm架构

Helm架构

 

Helm部署文档

首先你需要保证部署helm的节点必须可以正常执行kubectl

1. Helm客户端安装

下载

Helm是一个二进制文件,我们直接到github的release去下载就可以,地址如下: https://github.com/helm/helm/releases

由于国内网络原因,无法科学上网的同学可以到我的网盘上下载,版本是2.13.1-linux-amd64。
链接: https://pan.baidu.com/s/1bu-cpjVaSVGVXuWvWoqHEw
提取码: 5wds

安装

# 解压
$ tar -zxvf helm-v2.13.1-linux-amd64.tar.gz
$ mv linux-amd64/helm /usr/local/bin/

# 没配置环境变量的需要先配置好
$ export PATH=$PATH:/usr/local/bin/

# 验证
$ helm version

2. Tiller安装

Tiller 是以 Deployment 方式部署在 Kubernetes 集群中的,由于 Helm 默认会去 storage.googleapis.com 拉取镜像,我们这里就默认无法科学上网的情况:

# 指向阿里云的仓库
$ helm init --client-only --stable-repo-url https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts/
$ helm repo add incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
$ helm repo update

# 因为官方的镜像无法拉取,使用-i指定自己的镜像
$ helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1  --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
 
# 创建TLS认证服务端
$ helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --tiller-tls-cert /etc/kubernetes/ssl/tiller001.pem --tiller-tls-key /etc/kubernetes/ssl/tiller001-key.pem --tls-ca-cert /etc/kubernetes/ssl/ca.pem --tiller-namespace kube-system --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

3. 给Tiller授权

因为 Helm 的服务端 Tiller 是一个部署在 Kubernetes 中的 Deployment,它会去访问ApiServer去对集群进行操作。目前的 Tiller 部署时默认没有定义授权的 ServiceAccount,这会导致访问 API Server 时被拒绝。所以我们需要明确为 Tiller 部署添加授权。

# 创建serviceaccount
$ kubectl create serviceaccount --namespace kube-system tiller
# 创建角色绑定
$ kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

4. 验证

# 查看Tiller的serviceaccount,需要跟我们创建的名字一致:tiller
$ kubectl get deploy --namespace kube-system tiller-deploy -o yaml|grep serviceAccount

# 验证pods
$ kubectl -n kube-system get pods|grep tiller

# 验证版本
$ helm version

Operator实现原理

  • 自定义资源类型(CRD)+ 自定义控制器

Prometheus 安装

在线方式

(需要连接Google仓库)helm install --name fly-prom stabel/prometheus-operator

离线方式

  1. gti clone https://github.com/helm/charts.git  (下载)
  2. cp -r charts/statle/prometheus-operator .  (复制到当前文件夹)
  3. helm install ./prometheus-operator/ --name fly-prom --namespace monitoring

  4. 还需要复制 kube-state-metrics,prometheus-node-exporter,grafana 
  5. kubectl get crd | grep coreos(Operator的原理是利用Kubernetes的CRD资源)
  6. 遇到安装问题(如镜像下载失败),可以通过以下方式排查,修改镜像下载地址
  7. 升级: helm uprate