如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 2

在 Part 1 中,我们一起了解了什么是 Prometheus 和 Grafana,以及使用这些工具的前提条件和优势。在本部分,将继续带您学习如何安装 Helm 以及如何使用 Prometheus Helm Charts。

 

开始使用 Helm 和 Helm Chart

ArtifactHub 为 Helm Chart 提供了公共和私有资源库。我们将使用这些 Helm Chart 来设置 Kubernetes 集群中的 pod 和服务。

 

Helm 社区为各种 Kubernetes 应用程序创建、管理和维护 Helm Chart,这些资源会时常更新。Helm Chart 可重复使用,安装简单。想要使用 Helm 在 Kubernetes 上集成 Prometheus 和 Grafana,让我们从安装 Helm 开始。

 

安装 Helm

安装 Helm 之前,必须使用以下命令启动 Minikube Kubernetes:

 

minikube start --driver=docker

 

下图显示 Minikube 正在运行。Kubectl 工具现已配置为使用 Minikube。

 

image.png

 

接下来,使用以下命令(根据你使用的操作系统使用对应的命令)安装 Helm:

 

在 Linux 上安装 Helm

 

sudo apt-get install helm

 

在 Windows 上安装 Helm

 

choco install Kubernetes-helm

 

在 macOS 系统上安装 Helm

 

brew install helm

 

提示:如果遇到问题,可以查看 Helm 官方文档指南 https://helm.sh/docs/intro/install/。

 

下图显示了 Helm 在 Windows 机器上的安装情况:

 

image.png

 

Helm 命令

要获取所有 Helm 命令,请运行此命令:

 

helm

 

命令输出结果:

 

The Kubernetes package managerCommon actions for Helm:- helm search:    search for charts
- helm pull:      download a chart to your local directory to view
- helm install:   upload the chart to Kubernetes
- helm list:      list releases of chartsUsage:helm [command]Available Commands:completion  generate autocompletion scripts for the specified shellcreate      create a new chart with the given namedependency  manage a chart's dependenciesenv         helm client environment informationget         download extended information of a named releasehelp        Help about any commandhistory     fetch release historyinstall     install a chartlint        examine a chart for possible issueslist        list releasespackage     package a chart directory into a chart archiveplugin      install, list, or uninstall Helm pluginspull        download a chart from a repository and (optionally) unpack it in local directorypush        push a chart to remoteregistry    login to or logout from a registryrepo        add, list, remove, update, and index chart repositoriesrollback    roll back a release to a previous revisionsearch      search for a keyword in chartsshow        show information of a chartstatus      display the status of the named releasetemplate    locally render templatestest        run tests for a releaseuninstall   uninstall a releaseupgrade     upgrade a releaseverify      verify that a chart at the given path has been signed and is validversion     print the client version informationUse "helm [command] --help" for more information about a command.

 

最常用的 Helm 命令有

 

  • helm search:在 ArtifactHub 资源库中搜索 Helm Chart。
  • helm pull:从 ArtifactHub 资源库中提取并下载 Helm Chart。
  • helm install:上传 Helm Chart 并将其部署到 Kubernetes 集群。
  • helm list:列出 Kubernetes 集群中部署的所有 Helm Chart。

 

Prometheus Helm Charts

首先,我们将搜索 Prometheus Helm Charts。要搜索 Prometheus Helm,请运行以下命令:

 

helm search hub prometheus

 

该命令列出以下 Prometheus Helm Chart:

 

URL                                                       CHART VERSION         APP VERSION                                           DESCRIPTION
https://artifacthub.io/packages/helm/prometheus...        25.1.0                v2.47.0                                               Prometheus is a monitoring system and time seri...
https://artifacthub.io/packages/helm/truecharts...        13.0.7                2.47.1                                                kube-prometheus-stack collects Kubernetes manif...
https://artifacthub.io/packages/helm/saurabh6-p...        0.2.0                 1.1                                                   This is a Helm Chart for Prometheus Setup.
https://artifacthub.io/packages/helm/prometheus...        13.0.0                2.22.1                                                Prometheus is a monitoring system and time seri...
https://artifacthub.io/packages/helm/wenerme/pr...        25.1.0                v2.47.0                                               Prometheus is a monitoring system and time seri...
https://artifacthub.io/packages/helm/wener/prom...        25.1.0                v2.47.0                                               Prometheus is a monitoring system and time seri...
https://artifacthub.io/packages/helm/romanow-he...        1.3.5                 2.40.0                                                Prometheus collects and stores its metrics as t...
https://artifacthub.io/packages/helm/mach1el-ch...        1.0.1                 v2.47.0                                               Prometheus Helm chart for Kubernetes
https://artifacthub.io/packages/helm/cloudposse...        0.2.1                                                                       Prometheus instance created by the CoreOS Prome...

 

您还可以前往 ArtifactHub 存储库(https://artifacthub.io/)并搜索官方 Prometheus Helm Chart,如下图所示:

 

image.png

 

列表中的第一个是官方的 Prometheus Helm Chart。要获取此 Helm Chart,请运行以下命令:

 

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

 

输出结果:

 

"prometheus-community" has been added to your repositories
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "grafana" chart repository
...Successfully got an update from the "prometheus-community" chart repository
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈

 

现在,我们已经下载好最新版本的 Prometheus 了。

 

在 K8s 集群上安装 Prometheus Helm Chart

要在 K8s 集群上安装 Prometheus Helm Chart,请运行以下helm install命令:

 

helm install prometheus prometheus-community/prometheus

 

输出结果:

 

NAME: my-prometheus
LAST DEPLOYED: Thu Oct 12 20:06:57 2023
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Prometheus server can be accessed via port 80 on the following DNS name from within your cluster:
my-prometheus-server.monitoring.svc.cluster.localGet the Prometheus server URL by running these commands in the same shell:export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=prometheus,app.kubernetes.io/instance=my-prometheus" -o jsonpath="{.items[0].metadata.name}")kubectl --namespace monitoring port-forward $POD_NAME 9090The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster:
my-prometheus-alertmanager.monitoring.svc.cluster.localGet the Alertmanager URL by running these commands in the same shell:export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=alertmanager,app.kubernetes.io/instance=my-prometheus" -o jsonpath="{.items[0].metadata.name}")kubectl --namespace monitoring port-forward $POD_NAME 9093
#################################################################################
######   WARNING: Pod Security Policy has been disabled by default since    #####
######            it deprecated after k8s 1.25+. use                        #####
######            (index .Values "prometheus-node-exporter" "rbac"          #####
###### .          "pspEnabled") with (index .Values                         #####
######            "prometheus-node-exporter" "rbac" "pspAnnotations")       #####
######            in case you still need it.                                #####
#################################################################################The Prometheus PushGateway can be accessed via port 9091 on the following DNS name from within your cluster:
my-prometheus-prometheus-pushgateway.monitoring.svc.cluster.localGet the PushGateway URL by running these commands in the same shell:export POD_NAME=$(kubectl get pods --namespace monitoring -l "app=prometheus-pushgateway,component=pushgateway" -o jsonpath="{.items[0].metadata.name}")kubectl --namespace monitoring port-forward $POD_NAME 9091For more information on running Prometheus, visit:
https://prometheus.io/

 

现在我们已经在 Kubernetes 集群上安装了 Prometheus。我们可以通过80端口访问 Prometheus 服务器。下一步是查看部署的 Kubernetes 资源,也就是 Helm Chart 在 Kubernetes 集群中创建的 Pod 和服务。

 

要查看已部署的 Kubernetes 资源,请运行以下kubectl命令:

 

kubectl get all

 

输出结果:

 

NAME                                                        READY   STATUS    RESTARTS   AGE
pod/my-prometheus-prometheus-node-exporter-d5l8m            1/1     Running   0          27m
pod/my-prometheus-prometheus-node-exporter-kfbxb            1/1     Running   0          27m
pod/my-prometheus-prometheus-pushgateway-86d6f795cb-mlb7d   1/1     Running   0          27m
pod/my-prometheus-kube-state-metrics-6c4b65c7b9-wbh9r       1/1     Running   0          27m
pod/my-prometheus-prometheus-node-exporter-2z7rp            1/1     Running   0          27m
pod/my-prometheus-alertmanager-0                            1/1     Running   0          27m
pod/my-prometheus-server-795d8fc685-zcfct                   2/2     Running   0          27mNAME                                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/my-prometheus-alertmanager-headless      ClusterIP   None            <none>        9093/TCP   27m
service/my-prometheus-server                     ClusterIP   10.43.186.10    <none>        80/TCP     27m
service/my-prometheus-prometheus-pushgateway     ClusterIP   10.43.154.83    <none>        9091/TCP   27m
service/my-prometheus-alertmanager               ClusterIP   10.43.217.41    <none>        9093/TCP   27m
service/my-prometheus-kube-state-metrics         ClusterIP   10.43.168.65    <none>        8080/TCP   27m
service/my-prometheus-prometheus-node-exporter   ClusterIP   10.43.195.241   <none>        9100/TCP   27mNAME                                                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/my-prometheus-prometheus-node-exporter   3         3         3       3            3           kubernetes.io/os=linux   27mNAME                                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/my-prometheus-prometheus-pushgateway   1/1     1            1           27m
deployment.apps/my-prometheus-kube-state-metrics       1/1     1            1           27m
deployment.apps/my-prometheus-server                   1/1     1            1           27mNAME                                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/my-prometheus-prometheus-pushgateway-86d6f795cb   1         1         1       27m
replicaset.apps/my-prometheus-kube-state-metrics-6c4b65c7b9       1         1         1       27m
replicaset.apps/my-prometheus-server-795d8fc685                   1         1         1       27mNAME                                          READY   AGE
statefulset.apps/my-prometheus-alertmanager   1/1     27m

 

安装 Helm Chart 会创建以下 Kubernetes 资源:

 

  • Pod:托管集群内已部署的 Prometheus Kubernetes 应用程序。
  • Replica Sets:Kubernetes 集群内同一应用程序实例的集合。它提高了应用程序的可靠性。
  • Deployments:这是创建应用程序 Pod 的蓝图。
  • Services:这是公开 Kubernetes 集群内运行的 Pod。我们用它来访问已部署的 Kubernetes 应用程序。

 

下一步是访问并启动 Prometheus Kubernetes 应用程序。这里将使用 Prometheus 的 Kubernetes 服务访问该应用程序。要获取 Prometheus 的所有 Kubernetes 服务,请运行以下命令:

 

kubectl get service

 

输出结果:

 


NAME                                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
my-prometheus-alertmanager-headless      ClusterIP   None            <none>        9093/TCP   28m
my-prometheus-server                     ClusterIP   10.43.186.10    <none>        80/TCP     28m
my-prometheus-prometheus-pushgateway     ClusterIP   10.43.154.83    <none>        9091/TCP   28m
my-prometheus-alertmanager               ClusterIP   10.43.217.41    <none>        9093/TCP   28m
my-prometheus-kube-state-metrics         ClusterIP   10.43.168.65    <none>        8080/TCP   28m
my-prometheus-prometheus-node-exporter   ClusterIP   10.43.195.241   <none>        9100/TCP   28m

 

输出结果列出了 Prometheus 的下列 K8s service:

 

  • prometheus-alertmanager
  • prometheus-alertmanager-headless
  • prometheus-kube-state-metrics
  • prometheus-prometheus-node-exporter
  • prometheus-prometheus-pushgateway
  • prometheus-server

 

我们将使用 prometheus-server Kubernetes service 来访问 Prometheus 应用程序。prometheus-server 是 ClusterIP 类型。您只能在 Kubernetes 集群内访问它。因此我们需要公开这个 Kubernetes service,以便在 Kubernetes 集群外部访问它。公开prometheus-server Kubernetes service 将生成一个 URL。我们可以在浏览器上加载 URL 并访问正在运行的应用程序。

 

公开 prometheus-server Kubernetes service

要公开prometheus-server Kubernetes service,请运行以下命令:

 

kubectl expose service prometheus-server --type=NodePort --target-port=9090 --name=prometheus-server-ext

 

该命令会将ClusterIP类型转换为NodePort类型。这样, prometheus-server就能在 Kubernetes 集群之外通过 9090 端口访问。

 

现在,我们公开了prometheus-server Kubernetes service。接下来使用以下命令访问 Prometheus 应用程序:

 

minikube service prometheus-server-ext

 

该命令生成以下 URL:

 

image.png

 

URL 可能需要稍等一会儿才可用。您需要在浏览器上进行多次重试,直到使用此 URL 访问 Prometheus Kubernetes 应用程序。您还需要保持终端打开并运行命令,以便继续访问服务。

 

image.png

 

到这里,我们已经成功使用 Helm 在 Kubernetes 上安装了 Prometheus。Prometheus 已经在集群内部运行,我们可以使用浏览器或 URL 来进行访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟开关--扩展模拟采集通道需要考虑的问题

2、多通道模拟采集 项目需求多通道的模拟采集&#xff0c;但是MCU内置ADC通道有限&#xff0c;如果外置ADC芯片则会升高成本、增大电路板尺寸等&#xff0c;同时对电路Layout难度也有上升&#xff0c;需要考虑电路板的各种电磁特性和噪声。 所以一般的多通道采集方案&#xff…

Netty开篇——NIO章上(三)

Java NIO基本介绍 java non-blocking I/O 称为NIO(也叫New IO)。JDK4开始提供,同步非阻塞相关内容在 java.nio 包及子包下&#xff0c;对java.io 包中的很多类进行改写。三大核心: Channel(通道)&#xff0c;Buffer(缓冲区),Selector(选择器)NIO是面向缓冲区或者面向块编程的。…

Centos7.9服务器编译安装Nginx1.24.0和php8.3

Centos7.9服务器编译安装Nginx1.24.0和php8.3 服务器nginx原版本有安全漏洞,需要升级,由于原始是yum源安装,通过yum直接升级,无法正常升级完成,故而需要卸载yum源,重新编译安装。 1、查看原来nginx版本,ps查看原来nginx进程,运行状态: ps aux | grep nginx ​ root …

【HuggingFace Transformer库学习笔记】基础组件学习:Evaluate

基础组件学习——Evaluate Evaluate使用指南 查看支持的评估函数 # include_community&#xff1a;是否添加社区实现的部分 # with_details&#xff1a;是否展示更多细节 evaluate.list_evaluation_modules(include_communityFalse, with_detailsTrue)加载评估函数 accuracy…

RK3568驱动指南|第十二篇 GPIO子系统-第135章 GPIO子系统与pinctrl子系统相结合实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

解决ELK日志收集中Logstash报错的关键步

ElK执行日志收集的时候logstash报错&#xff1a; Failed to execute action {:action>LogStash::PipelineAction::Create/pipeline_id:main, :exception>“LogStash::ConfigurationError”, :message>“Expected one of [^\r\n], “\r”, “\n” at line 88, column 4…

ChromeDriver 添加到系统PATH

在软件测试和自动化脚本中&#xff0c;ChromeDriver是一个不可或缺的工具。为了方便使用&#xff0c;将其添加到系统PATH中是一个明智的选择。以下是在Windows、macOS或Linux上完成此任务的详细步骤。 在 Windows 上&#xff1a; 下载并保存 ChromeDriver&#xff1a; 访问Chro…

医院患者满意度调查方案

制定医院患者满意度调查方案是确保调查的有效性和有针对性的关键步骤。以下是一些编制医院患者满意度调查方案的关键步骤和考虑因素&#xff1a; 1. 确定调查目标&#xff1a; 首先&#xff0c;明确调查的主要目标。你希望了解哪些方面的患者满意度&#xff1f;这可能包括医疗…

openEuler安装Docker艰辛路程

文章目录 安装docker测试docker关于windows docker拉取镜像查看所有镜像删除镜像删除不在运行的进程强制删除正在运行的进程 启动docker容器服务-d测试 停止docker容器服务查看docker启动进程更新容器(没有自启动功能&#xff0c;更新为自启动)docker端口映射进入容器修改内容退…

flume

第 1 章 Flume 概述 1.1 Flume 定义 Flume 是 Cloudera 提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的 海量日志采集、聚合和传 输的系统 。 Flume 基于流式架构&#xff0c;灵活简单。 为什么选用 Flume Python 爬虫数据 Java 后台日志数据 服…

Unity AssetBundles资源管理和热更新

项目中的做法&#xff0c;在项目中一般会把资源按照文件目录去划分资源&#xff0c;以文件路径的名字作为AB的名字&#xff0c;一般都是把资源的这些放到预处理中。 一般会分为几个类型&#xff0c;比如把单个文件夹下的每个资源进行打bundle&#xff0c;把单个文件夹下的所有资…

新手练习项目 5:简易计算器(C++)

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼《定风波莫听穿林打叶声》 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#xff09; 目录 一、效果图二、代码&#xff08;带注释&#xff09;三、说明 一、效果图 二、代码&#xff08;带…

HTML--图片

HTML中使用 img标签来显示一张图片 它有三个属性&#xff1a; src alt tiltle src属性&#xff1a; 图片路径建议为相对路径&#xff0c;以免文件移动造成无法正常工作 用法&#xff1a; <img src"图片路径和名字"><!DOCTYPE html> <html> <…

QWebEngineView类方法、属性、信号与槽汇总

文章目录 📖 介绍 📖🏡 环境 🏡📒 使用方法 📒📝 使用示例📝 方法📝 属性📝 信号(Signals)📝 槽(Slots)⚓️ 相关链接 ⚓️📖 介绍 📖 QWebEngineView 是 Qt 提供的一个用于呈现 Web 内容的类,基于 Google 的 Chromium 浏览器引擎。它提供了对现…

算法训练day12Leetcode239滑动窗口最大值347前k个高频元素

今日学习文章链接 https://programmercarl.com/0347.%E5%89%8DK%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.html#%E6%80%9D%E8%B7%AF 239 滑动窗口最大值 题目描述 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只…

小程序自定义添加active类的方法

class"todayBtn {{today true ? btn_isactive : }}"

VCG 拷贝与合并Mesh网格

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 考虑到网格本身的复杂性质,VCG中是严格禁止任何将网格复制为简单对象的尝试;要复制一个网格或者合并两个网格对象,你必须使用Append类。 二、实现代码 合并网格 //VCG #include <vcg/complex/algorithms/crea…

Mac M1 Parallels CentOS7.9 Install Jenkins

官网: https://www.jenkins.io/ 一、Install & Check Java Env Oracle官网下载Java: https://www.oracle.com/cn/ # 拷贝到Jenkins服务器 scp Downloads/jdk-8u391-linux-aarch64.tar.gz root10.211.55.34:~# 解压 mkdir -p /opt/java && tar -zxvf jdk-8u391-li…

电脑上不安装Oracle,但是虚拟机装了Oracle,怎么连接到虚拟机里的Oracle数据库呢?

1、准备工作 1.1、确定数据库版本信息 注&#xff1a;如果知道数据库的版本信息&#xff0c;这个步骤可以跳过。 比较简单的方法&#xff0c;直接看数据库的安装位置&#xff0c;也就是数字&#xff08;但是这个方法确定就是&#xff0c;不好确定是多少位的数据库&#xff09;…

二叉树算法思想和原理:介绍通过递归算法计算二叉树结点个数的基本思路及C#、C++代码示例

二叉树是一种非常常见的数据结构&#xff0c;它由结点组成&#xff0c;每个结点最多有两个子结点&#xff0c;分别称为左子结点和右子结点。在二叉树中&#xff0c;每个结点都有一个数据域和一个指针域&#xff0c;指针域分别指向左子结点和右子结点。二叉树有很多种不同的类型…