”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Kubernetes、Helm 和 Ingress 部署监控堆栈

使用 Kubernetes、Helm 和 Ingress 部署监控堆栈

发布于2024-11-08
浏览:310

Deploying a Monitoring Stack with Kubernetes, Helm, and Ingress

观察和管理 Kubernetes 集群的性能对于维护应用程序运行状况、识别问题和确保高可用性至关重要。我将引导您使用 kubectl 和 Helm 设置全面的监控解决方案,将 Grafana、Loki 和 Prometheus 部署到集群,以及设置 Ingress 以进行外部访问。

我们将介绍以下关键步骤:

  1. 应用 Kubernetes 命名空间进行监控。
  2. 安装 Helm 并设置必要的存储库。
  3. 使用 Helm 部署 Loki、Prometheus 和 Grafana。
  4. 应用 Ingress 规则向外部公开服务。

先决条件
在开始之前,请确保您具备以下条件:

  1. 配置了 kubectl 的 Kubernetes 集群。
  2. Helm 安装在您的本地计算机上。
  3. 应用 YAML 配置和安装图表的正确访问权限。

第 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 并设置必要的存储库。

  1. 安装 Helm(如果尚未安装):

sudo snap install helm --classic

此命令使用 Snap(Linux 的包管理系统)安装 Helm。

  1. 添加 Grafana Helm 图表存储库:

helm 仓库添加 grafana https://grafana.github.io/helm-charts

  1. 更新 Helm 存储库:

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

一旦应用,入口控制器将根据主机名将流量路由到适当的服务。

  1. 验证 Ingress 设置:检查 Ingress 资源的状态以确保其配置正确:

kubectl get ingress -n 监控

确保您的 ADDRESS 列具有外部 IP,以便外部可以访问服务。

第 5 步:访问监控仪表板

正确配置 Ingress 并且 DNS 指向您的集群后,您就可以访问 Grafana、Prometheus 和 Loki。

结论

只需几个命令,您就可以在 Kubernetes 集群上使用 Helm 成功部署完整的监控堆栈。通过利用 Helm 图表,您可以简化 Grafana、Loki 和 Prometheus 等复杂应用程序的部署,同时还集成 Ingress 以方便访问。您现在拥有强大的可观察性设置,可让您实时监控日志和指标,帮助您更有效地管理和优化 Kubernetes 应用程序。

这种基于 Helm 的部署可确保可扩展性并简化升级或配置更改,从而更轻松地管理生产环境中的可观察性。

版本声明 本文转载于:https://dev.to/seewhy/deploying-a-monitoring-stack-with-kubernetes-helm-and-ingress-cp5?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何吸引顶尖 Python 开发人员到你的公司
    如何吸引顶尖 Python 开发人员到你的公司
    在竞争激烈的技术领域,吸引顶级 Python 开发人员对于任何希望利用这种多功能编程语言的力量的组织来说至关重要。随着 Python 继续在 Web 开发、数据科学和机器学习等领域占据主导地位,对熟练 Python 开发人员的需求空前高涨。如果您想聘请能够推动创新并为您的项目做出有意义贡献的 Pyt...
    编程 发布于2024-11-08
  • **JavaScript 中 `location = URL` 和 `location.href = URL` 有什么区别?**
    **JavaScript 中 `location = URL` 和 `location.href = URL` 有什么区别?**
    JavaScript:“location = URL”和“location.href = URL”的区别在 JavaScript 中,操作网页的 URL 可以通过以下方式实现两种类似的方法:直接设置 location 属性或设置 location.href 属性。虽然功能可能看起来相同,但这两种方法...
    编程 发布于2024-11-08
  • 如何有效地将PHP变量插入字符串?
    如何有效地将PHP变量插入字符串?
    将 PHP 变量插入字符串将 PHP 变量合并到字符串中时,注意语法以确保所需的输出是至关重要的获得。为了解决这个问题,让我们检查一下提示中显示的代码:目标是包含 $ width 变量在宽度样式属性中,并确保其后跟“px”。不幸的是,尝试用空格分隔变量和“px”或将它们连接在一起会导致错误。解决方案...
    编程 发布于2024-11-08
  • 了解 JavaScript 中下划线 (`_`) 的使用
    了解 JavaScript 中下划线 (`_`) 的使用
    在 JavaScript 中编码时,您可能会遇到用作变量名称的下划线字符 (_),特别是在函数参数中。虽然乍一看似乎很不寻常,但由于各种原因,这种做法在开发人员中很常见。在这篇博文中,我们将探讨下划线代表什么,为什么使用它,以及它在现实示例中的显示方式,例如 coalesceES6 函数。 ...
    编程 发布于2024-11-08
  • 像程序员一样思考:学习 C 基础知识
    像程序员一样思考:学习 C 基础知识
    以程序员思维学习 C 语言:基本语法:变量、数据类型、常量、运算符、控制流。实战案例:计算两个数的平均值,输入两个整数并计算其平均值。以程序员思维思考:用 C 语言学习基础引言学习编程并不难,尤其是当你以程序员思维思考时。本文将从基础开始,用 C 语言引导你逐步了解编程入门知识。C 语言基本语法变量...
    编程 发布于2024-11-08
  • Python 中的列表理解语法何时需要三元运算符?
    Python 中的列表理解语法何时需要三元运算符?
    列表理解难题:可迭代对象中的条件过滤在 Python 中,列表理解提供了一种基于现有可迭代对象创建列表的简洁方法。然而,出现了一个关于涉及 if 语句的列表理解的问题。目标是比较两个可迭代对象 a 和 b,并仅打印两者中出现的元素。预期的代码如下所示:print([y if y not in b f...
    编程 发布于2024-11-08
  • 使用 MetaTrader 订单管理和市场数据收集进行自动交易
    使用 MetaTrader 订单管理和市场数据收集进行自动交易
    Your AsimovMT class provides a comprehensive interface for interacting with MetaTrader5 (MT5) using Python. However, there are several areas in your c...
    编程 发布于2024-11-08
  • Python 列表的最大大小是多少以及它如何影响功能?
    Python 列表的最大大小是多少以及它如何影响功能?
    Python列表的最大大小:综合分析在Python中,列表是基本的数据结构,可以容纳多个不同类型的元素。它们的多功能性和灵活性使得了解它们的局限性至关重要,特别是在处理大型数据集时。本文探讨了 Python 列表可以达到的最大大小及其对其功能的影响。最大列表大小Python 列表的最大大小已定义通过...
    编程 发布于2024-11-08
  • 托管平台列表:综合指南
    托管平台列表:综合指南
    在数字时代,可靠的托管平台对于任何在线展示都至关重要,无论是个人博客、电子商务网站还是公司网站。有无数的选项可供选择,选择合适的托管平台可能会令人畏惧。本指南将帮助您浏览当今一些最好的托管平台,比较它们的功能、价格和对不同需求的适用性。 1. 蓝色主机 概述:Bluehost 是最受...
    编程 发布于2024-11-08
  • 在浏览器中将视频压缩为 webm
    在浏览器中将视频压缩为 webm
    ?增强您的网络视频:使用 React 将 MP4 压缩为 WebM 工作中没有任何有趣的事情感到无聊吗?好吧,就在那时我决定抓紧时间修补浏览器 API 的当前状态。我们可以直接通过 Web API 压缩视频吗?在这篇博客中,我将向您展示如何使用现代浏览器功能将 MP4 视频压缩为 ...
    编程 发布于2024-11-08
  • 现代 PHP 中的 PHP Fiber 并发性
    现代 PHP 中的 PHP Fiber 并发性
    PHP Fibers 在 PHP 8.1 中引入,带来了一种令人兴奋的新方法来处理 PHP 中的并发和异步编程。纤维允许您在执行过程中暂停和恢复函数,使开发人员能够更好地控制非阻塞操作,例如处理 I/O、数据库查询或 HTTP 请求,而无需停止整个脚本。 在本博客中,我们将探讨 PHP 纤维、它们的...
    编程 发布于2024-11-08
  • Laravel 的新时代:Accel 的百万美元 A 轮融资——这就是为什么它改变了游戏规则!
    Laravel 的新时代:Accel 的百万美元 A 轮融资——这就是为什么它改变了游戏规则!
    各位,请戴好帽子! Laravel 刚刚发布了一些激动人心的消息,震惊了开发界——由 Accel 领投的 A 轮融资 5700 万美元。作为一名热情的 Laravel 用户和企业家同事,这一公告在整个 PHP 社区引起了震动,我感到非常兴奋!那么,让我们来分析一下为什么这项投资意义重大,以及为什么 ...
    编程 发布于2024-11-08
  • C++11 的 `string::c_str()` 仍然以 Null 终止吗?
    C++11 的 `string::c_str()` 仍然以 Null 终止吗?
    C 11 的 string::c_str() 是否消除空终止?在 C 11 中,string::c_str 不再保证产生一个以 null 结尾的字符串。原因:在 C 11 中, string::c_str 的定义与 string::data 相同,而 string::data 又被定义相当于 *(b...
    编程 发布于2024-11-08
  • 数据分析师清单
    数据分析师清单
    SQL 清单 Excel女士清单 Power BI 清单 Tableau 清单 Python 清单 关注此 WhatsApp 频道以获取更多资源
    编程 发布于2024-11-08
  • 如何在 Go 中将 YAML 字段动态解析为有限结构集?
    如何在 Go 中将 YAML 字段动态解析为有限结构集?
    在 Go 中将 YAML 字段动态解析为有限结构体集简介在 Go 中将 YAML 解析为结构体非常简单。但是,当 YAML 字段可以表示多个可能的结构时,任务就会变得更加复杂。本文探讨了使用 Go 的 YAML 包的动态方法。使用 YAML v2 进行动态解组对于 Yaml v2,可以使用以下方法:...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3