文章目录
前言
使用helm安装的优势
使用Helm快速安装Prometheus有几个显著的优势:
快速部署和配置: Helm是一个流行的Kubernetes包管理工具,它允许你通过简单的命令快速部署和配置应用程序。对于Prometheus这样的复杂监控系统,使用Helm可以大大简化安装过程,减少手动配置的需要。
标准化和可重复性: Helm Charts(Helm的包描述文件)定义了如何安装和配置Prometheus及其相关组件。这确保了部署的标准化,使得在不同环境中重复部署变得更加可靠和简单。
版本控制和更新管理: 使用Helm安装Prometheus,你可以方便地管理版本和更新。Helm允许你指定要安装的特定版本或者升级到新版本,同时能够回滚到先前的版本,以便处理升级中可能出现的问题。
依赖管理: Prometheus通常会与其他组件(如Alertmanager、Grafana等)一起使用。Helm Charts可以定义和管理这些组件的依赖关系,确保所有的相关组件能够正确地安装和配置。
社区支持和生态系统: Helm是一个活跃的开源项目,拥有庞大的社区支持和丰富的第三方Charts库。这意味着你可以从社区中获取到各种用于安装和配置Prometheus的最佳实践,同时也能够共享和贡献你自己的经验。
prometheus全家桶包括哪些组件
Prometheus Operator:
Prometheus Operator 是一个运营 Prometheus 和相关工具的 Kubernetes Operator。它简化了在 Kubernetes 上部署和管理 Prometheus 实例的过程。
Prometheus Server:
Prometheus Server 负责收集和存储时间序列数据,支持通过 PromQL 查询语言进行数据分析和查询。
Alertmanager:
Alertmanager 用于处理和路由警报。它能够接收来自 Prometheus Server 的警报,并根据配置的路由规则发送通知。
Grafana:
Grafana 不是 Prometheus 的一部分,但通常包含在 kube-prometheus-stack 中作为可选组件。Grafana 提供了强大的数据可视化和仪表板功能,允许用户创建、查看和管理监控面板。
kube-state-metrics:
kube-state-metrics 是一个用于从 Kubernetes API 服务器提取 Kubernetes 资源状态信息的组件。它为 Prometheus 提供了丰富的 Kubernetes 监控指标。
node-exporter:
node-exporter 是一个用于收集主机系统级别的性能数据的代理。它通过 HTTP 暴露指标,Prometheus 可以从中获取主机级别的指标数据。
kube-rbac-proxy:
kube-rbac-proxy 是一个用于代理和增强 Kubernetes API 请求的反向代理。它有助于在 Prometheus 和其他 Kubernetes 组件之间建立安全的访问。
Prometheus Adapter:
Prometheus Adapter 允许 Kubernetes 的自动伸缩 API (HPA) 使用 Prometheus 的度量数据来进行自动伸缩决策。
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
版本 centos7.9
已部署k8s-1.27
一、负载均衡器metallb部署
1. 修改kube-proxy代理模式
kubectl edit configmap kube-proxy -n kube-syste
更改两处
strictARP 后的flase改为true
node 后添加ipvs
没看见往下翻
重启
kubectl rollout restart daemonset kube-proxy -n kube-system
2. metallb部署
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
服务器连接不了时,可在vpn连接后,浏览器中访问https://raw.githubusercontent.com/metallb/metallb/v0.14.5/config/manifests/metallb-native.yaml
看到内容后复制创建文件
也可以使用离线下载后的文件部署
kubectl apply -f metallb-native.yaml
查看
kubectl -n metallb-system get pod
等待一会,可通过查看描述信息跟踪pod的运行状态,长时间无法完成下载时,各节点重启docker
kubectl -n metallb-system describe pod controller-6b9fd67ff4-rzvg2
3. IP地址池准备
vim ippool.yaml
addresses下是范围
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: ippool
namespace: metallb-system
spec:
addresses:
- 192.168.10.240-192.168.10.250
yaml应用
kubectl apply -f ippool.yaml
若出现故障提示,等上面pod全部运行起来再部署
还不行,各节点重启docker
查看地址池信息
kubectl -n metallb-system describe ipaddresspools.metallb.io ippool
4.开启二层通告
vim L2.yaml
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
应用yaml
kubectl apply -f L2.yaml
二、 服务代理ingress nginx部署
(1)获取ingress nginx部署文件
创建目录
mkdir tsdir
cd tsdir
windows浏览器打开文件:
https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/baremetal/deploy.yaml
复制文件内容到linux中deploy.yaml文件
vim deploy.yaml
(2)修改部署文件deploy.yaml
vim deploy.yaml
修改此行 type: NodePort
为 type: LoadBalancer
修改前
修改后
(3)部署ingress nginx
kubectl apply -f deploy.yaml
稍等几分钟后查看 需要vpn,没有的话查看信息时会显示连接不到镜像仓库
kubectl -n ingress-nginx get pod
可以看到已经成功运行了
注; 经过测试,1.24版本的k8s集群部署会出现错误
解决方法
链接: REK安装K8S后,Ingress-nginx一直状态为ContainerCreating
三、使用helm安装prometheus全家桶
先下载kube-prometheus-stack的values到kube-prometheus-stack.yaml-default文件中
helm show values prometheus-community/kube-prometheus-stack > kube-prometheus-stack.yaml-default
cp kube-prometheus-stack.yaml-default kube-prometheus-stack.yaml
vim kube-prometheus-stack.yaml
把true修改为false
serviceMonitorSelectorNilUsesHelmValues: false
ruleSelectorNilUsesHelmValues: false
注:
kube-prometheus-stack 识别 k8s 集群内所有的 ServiceMonitor 和 PrometheusRule
默认情况下,kube-prometheus-stack 只识别自己创建的 ServiceMonitor,如果 k8s 集群内有多个非 kube-prometheus-stack 创建的 ServiceMonitor,不会被识别到。PrometheusRule 同理。
要识别所有的 ServiceMonitor 和PrometheusRule ,需要在 将相应的值改成false
安装
helm install kps prometheus-community/kube-prometheus-stack -f kube-prometheus-stack.yaml -n monitoring --create-namespace --version 61.2.0 --debug
注:–debug 输出debug调试信息
查看pod状态
kubectl get pod -n monitoring
四、配置prometheus及grafana访问(通过ingress发布)
创建一个目录
mkdir prometheus
cd prometheus
编写ingress对象清单文件
vim prometheus.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-prometheus #自定义ingress名称
namespace: monitoring
spec:
ingressClassName: nginx
rules:
- host: prometheus.test.com # 自定义域名
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: kps-kube-prometheus-stack-prometheus # 对应上面创建的service名称
port:
number: 9090
执行yaml清单文件
kubectl apply -f prometheus.yaml
查看服务
kubectl -n ingress-nginx get svc
在windows中etc/hosts文件添加
192.168.10.240 prometheus.test.com
访问
grafana
vim grafana.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-grafana #自定义ingress名称
namespace: monitoring
spec:
ingressClassName: nginx
rules:
- host: grafana.test.com # 自定义域名
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: kps-grafana # 对应上面创建的service名称
port:
number: 80
执行yaml文件
kubectl apply -f grafana.yaml
查看
kubectl get secret-n monitoring
kubectl get secret kps-grafana -n monitoring -o yaml
获取账号和密码
账号
echo -n "YWRtaW4=" | base64 --decode
admin
密码
echo -n "cHJvbS1vcGVyYXRvcg==" | base64 --decode
prom-operator
在windows中etc/hosts文件添加
192.168.10.240 grafana.test.com
访问
grafana.test.com
根据找到的账号和密码登录
完成