安装监控组件
本文将介绍使用 Helm 安装监控组件 Prometheus,Loki,Alertmanager 和 Grafana。
前置条件
基础环境
- Kubernetes 集群已经部署好,并且 kubectl 已经安装。
- Helm 已经安装。
- 为 Prometheus、Loki、Alertmanager 和 Grafana 创建了一个 Kubernetes 命名空间。
数据持久化
考虑到监控数据需要持久化,我们使用 NFS 作为 存储类StorageClass
- 安装 nfs 服务软件包
sudo yum -y install nfs-utils
- 修改 nfs 配置文件
# 文件路径 /etc/exports
sudo vim /etc/exports
/home/centos/nfs *(rw,sync,no_subtree_check)
# 保存退出
:wq
- 启动 nfs 服务
sudo systemctl start rpcbind
sudo systemctl start nfs-server
- 开机自启动
sudo systemctl enable rpcbind
sudo systemctl enable nfs-server
说明:
- 其中,
/home/centos/nfs
为共享目录, - * 表示允许所有客户端访问
- rw 表示可读可写
- sync 表示同步写入
- no_subtree_check 表示禁用子目录检查。
安装存储类
Kubernetes 不包含内部 NFS 驱动。你需要使用外部驱动为 NFS 创建 StorageClass,我们选择 NFS subdir 外部驱动
安装
- 官方地址:https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
- 国内地址:https://gitee.com/Julian_cn/nfs-subdir-external-provisioner
说明:仅需要这三个文件即可
- 下载代码
git clone https://gitee.com/Julian_cn/nfs-subdir-external-provisioner
- 进入安装目录
cd nfs-subdir-external-provisioner/deploy
- 修改文件
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfs-client-provisioner
labels:
app: nfs-client-provisioner
# replace with namespace where provisioner is deployed
namespace: default
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: nfs-client-provisioner
template:
metadata:
labels:
app: nfs-client-provisioner
spec:
serviceAccountName: nfs-client-provisioner
containers:
- name: nfs-client-provisioner
# image 地址修改为国内地址: docker hub 上有很多, 选择一个即可
image: dyrnq/nfs-subdir-external-provisioner:v4.0.2
volumeMounts:
- name: nfs-client-root
mountPath: /persistentvolumes
env:
- name: PROVISIONER_NAME
value: k8s-sigs.io/nfs-subdir-external-provisioner
# 修改为你的 NFS 服务地址
- name: NFS_SERVER
value: 10.0.16.16
# 修改为对应的路径
- name: NFS_PATH
value: /home/centos/nfs
volumes:
- name: nfs-client-root
nfs:
# 修改对应的配置
server: 10.0.16.16
path: /home/centos/nfs
- 安装
kubectl apply -f deployment.yaml
kubectl apply -f rbac.yaml
kubeclt apply -f class.yaml
- 检查 StorageClass
kubectl get sc
- 修改默认的存储类
# 首先需要取消默认存储类 local-path 为存储类名称
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
# 设置默认的存储类
kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
安装 Prometheus
- 添加 Prometheus Helm 仓库:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
- 安装 Prometheus:
helm install prometheus prometheus-community/kube-prometheus-stack -n monitor
说明:如需要开启持久化存储需要修改配置, 以下服务配置同理
persistence:
# 开启持久存储
enabled: true
安装 Loki
- 添加 Loki Helm 仓库:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
- 安装 Loki:
helm install loki grafana/loki-stack -n monitor
安装 Alertmanager
- 添加 Alertmanager Helm 仓库:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
- 安装 Alertmanager:
helm install alertmanager prometheus-community/kube-prometheus-stack --set alertmanager.enabled=true -n monitor
安装 Grafana
- 添加 Grafana Helm 仓库:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
- 安装 Grafana:
helm install grafana grafana/grafana -n monitor
配置 Grafana 数据源
在 Grafana 中添加 Prometheus 和 Loki 数据源,以便可以将监控数据可视化。
-
登录 Grafana 管理界面:http://:3000/。
-
在左侧菜单中选择“Configuration”->“Data Sources”。
-
点击“Add data source”,选择“Prometheus”或“Loki”。
-
配置数据源的 URL、命名空间等信息,保存并测试连接。
总结
本文介绍了使用 Helm 安装监控组件 Prometheus,Loki,Alertmanager 和 Grafana 的方法,并简要介绍了如何配置 Grafana 数据源。使用该监控系统,您可以实时监控系统的健康状况,并及时发现和解决问题。