Kubernetes笔记:深入kubernetes---日志和监控( Prometheus、Helm、PrometheusOperator、Grafana)
2023-09-11 14:15:39 时间
Prometheus
Prometheus架构和原理
Prometheus起源
- 与Kubernetes同源
- 2016.5加入CNCF
- 2018.8从CNCF毕业
Prometheus是什么
- 一系列服务的组合
- 系统和服务的监控报警平台
Prometheus特征
- 由metric名称和kv标识的多维数据模型
- 灵活的查询语言(PromQL)
- 支持pull、push两种方式添加数据
- 支持基于Kubernetes服务发现的动态配置
Prometheus架构
Prometheus数据类型
- Counter(计数器)
- Guage(仪表盘)
- Histogram(直方图)
- Summary(摘要)
Prometheus数据来源
数据来源-服务器基础指标
- 服务器基础指标:cpu、内存、网络、磁盘等
- NodeExporter
数据来源-docker容器指标
每个worker节点内置一个kubelet服务(cAdvisor),采集容器信息,并提供一个http服务供Prometheus拉取数据
数据来源-Kubernetes组件
组件的metrics
Prometheus部署
部署方案选择
- 手动部署
- Helm
- Prometheus Operator
- Helm+Prometheus Operator
Helm
- Ubuntu的apt-get、Centos的yum
- Kubernetes的包管理器
- 一包一Chart(一个目录)
Helm架构
![](https://img-blog.csdnimg.cn/20191021090751646.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZseTkxMDkwNQ==,size_16,color_FFFFFF,t_70)
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
离线方式
- gti clone https://github.com/helm/charts.git (下载)
- cp -r charts/statle/prometheus-operator . (复制到当前文件夹)
- helm install ./prometheus-operator/ --name fly-prom --namespace monitoring
- 还需要复制 kube-state-metrics,prometheus-node-exporter,grafana
- kubectl get crd | grep coreos(Operator的原理是利用Kubernetes的CRD资源)
- 遇到安装问题(如镜像下载失败),可以通过以下方式排查,修改镜像下载地址
- 升级: helm uprate
相关文章
- CPU: 在Docker和kubernetes的运用
- Prometheus监控Kubernetes的3个配置挑战
- Minikube:搭建部署单机 Kubernetes
- kubernetes 部署工具:sealos
- kubernetes实战练习1
- 小女孩也能看懂的插画版 Kubernetes 指南
- docker/kubernetes国内源/镜像源解决方式
- Prometheus Operator 监控Kubernetes
- 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——第1章 使用Docker对应用进行容器化 1.1了解容器化应用的优缺点
- Kubernetes教程之探索 Kubernetes 容器的艺术与科学
- 快速部署Kubernetes监控系统Kube-Prometheus
- kubernetes之监控Operator部署Prometheus
- 基于Docker本地运行Kubernetes
- Kubernetes概述