观察和管理 Kubernetes 集群的性能对于维护应用程序运行状况、识别问题和确保高可用性至关重要。我将引导您使用 kubectl 和 Helm 设置全面的监控解决方案,将 Grafana、Loki 和 Prometheus 部署到集群,以及设置 Ingress 以进行外部访问。
我们将介绍以下关键步骤:
先决条件
在开始之前,请确保您具备以下条件:
第 1 步:创建监控命名空间
命名空间可帮助您逻辑地划分和组织 Kubernetes 资源。为了避免冲突并保持监控资源独立,我们将为监控工具创建专用的命名空间。
1。应用监控命名空间:将以下内容保存到monitoring-namespace.yml文件中:
api版本:v1
种类:命名空间
元数据:
名称:监控
标签:
app.kubernetes.io/name: 监控
app.kubernetes.io/instance:监控
2.使用 kubectl 应用命名空间:
kubectl apply -f reporting-namespace.yml
此命令在 Kubernetes 集群中创建一个名为“monitoring”的新命名空间。
第 2 步:安装 Helm 并添加 Grafana 存储库
Helm 是 Kubernetes 包管理器,可以更轻松地部署 Grafana、Loki 和 Prometheus 等复杂应用程序。以下是如何安装 Helm 并设置必要的存储库。
sudo snap install helm --classic
此命令使用 Snap(Linux 的包管理系统)安装 Helm。
helm 仓库添加 grafana https://grafana.github.io/helm-charts
helm 仓库更新
这可确保 Helm 拥有 Grafana 存储库中的最新图表。
第 3 步:使用 Helm 部署 Loki、Prometheus 和 Grafana
现在 Helm 已安装并配置完毕,我们将使用 Grafana Helm 图表部署 Loki、Prometheus 和 Grafana。
1。运行Helm安装命令:
helm 升级 --install loki --namespace=monitoring grafana/loki-stack \
--set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false,loki.persistence.enabled=true,loki.persistence.storageClassName=gp2 ,loki.persistence.size=100Gi --set nodeSelector.name=node.kubernetes.io/description=all_product
A:Grafana:**这将在 Helm 图表中启用监控仪表板工具 Grafana。
**B:Prometheus:**启用 Prometheus 来收集指标,同时禁用 Alertmanager 和 Prometheus 服务器的持久卷以简化存储配置。
**C: Loki: Loki,日志聚合工具,使用 gp2 存储类启用 100Gi 的持久卷存储。
--install 标志确保在之前未部署堆栈的情况下安装该堆栈。 --upgrade 标志将堆栈更新到最新版本(如果已安装)。
2.验证安装:安装成功后,检查监控命名空间中运行的pod的状态:
kubectl get pods -n 监控
您应该会看到 Grafana、Prometheus、Loki 和 Promtail(将日志发送到 Loki)的 pod。
第 4 步:设置外部访问的入口
要从集群外部访问 Grafana、Prometheus 或 Loki,您需要配置 Ingress 资源。这允许外部 HTTP/S 访问监控服务。
*1。创建 Ingress 资源:将以下示例保存到 monitoring-ingress.yml 文件:
*
api版本:networking.k8s.io/v1
种类:入口
元数据:
名称:监控入口
命名空间:监控
注释:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer:letencrypt
规格:
tls:
- 主持人:
- your-domain.com
秘密名称:证书名称
规则:
- 主机:your-domain.com
http:
路径:
- 小路: /
路径类型:前缀
后端:
服务:
名称:loki-grafana
港口:
数量:80
此 Ingress 配置在域名 {your-domain.com} 下为 Grafana、Prometheus 和 Loki 设置路由。您需要将 your-domain.com 替换为您的实际域,并配置 DNS 以指向集群的外部 IP。
2.申请Ingress资源:
kubectl apply -f reporting-ingress.yml
一旦应用,入口控制器将根据主机名将流量路由到适当的服务。
kubectl get ingress -n 监控
确保您的 ADDRESS 列具有外部 IP,以便外部可以访问服务。
第 5 步:访问监控仪表板
正确配置 Ingress 并且 DNS 指向您的集群后,您就可以访问 Grafana、Prometheus 和 Loki。
结论
只需几个命令,您就可以在 Kubernetes 集群上使用 Helm 成功部署完整的监控堆栈。通过利用 Helm 图表,您可以简化 Grafana、Loki 和 Prometheus 等复杂应用程序的部署,同时还集成 Ingress 以方便访问。您现在拥有强大的可观察性设置,可让您实时监控日志和指标,帮助您更有效地管理和优化 Kubernetes 应用程序。
这种基于 Helm 的部署可确保可扩展性并简化升级或配置更改,从而更轻松地管理生产环境中的可观察性。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3