随着容器化技术的飞速发展,Kubernetes已成为企业级容器编排的事实标准。为了确保容器化应用的稳定性和性能,有效的监控和告警系统显得尤为重要。因容器监控需要,某公司拟在k8s集群中搭建prometheus,计划通过Helm进行部署。
Kubernetes原生应用程序拥有一系列YAML文件,允许用户在部署应用时自定义应用程序的一些元数据,以便于应用程序的分发。而Helm则是Kubernetes生态系统中的一个软件包管理工具,类似于Ubuntu的apt、CentOS的yum或Python的pip,专门负责管理Kubernetes应用资源,它主要作用包括应用程序封装、版本管理、依赖检查以及便于应用程序分发,使得用户能够以一种标准化和自动化的方式部署、升级和回滚应用程序。
以下是详细部署教程:
下载二进制文件安装:
[root@k8s-master~]wget -c https://get.helm.sh/helm-v3.14.1-linux-amd64.tar.gz
[root@k8s-master ~] tar zxvf helm-v3.14.1-linux-amd64.tar.gz [root@k8s-master ~] cd linux-amd64/
[root@k8s-master linux-amd64] ls helm LICENSE README.md
[root@k8s-master linux-amd64] mv helm /usr/local/bin
#查看版本
[root@k8s-master ~] helm version
version.BuildInfo{Version:"v3.13.0",GitCommit:"825e86f6a7a38cef1112bfa606e4127a706749b1", GitTreeState:"clean", GoVersion:"go1.20.8"}
#查看命令帮助
[root@k8s-master ~] helm --help
[root@k8s-master]# helm repo add bitnami https://charts.bitnami.com/bitnami [root@k8s-master ~]# helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
[root@k8s-master ~]# helm search repo bitnami | grep prometheus
[root@k8s-master ~] helm pull bitnami/prometheus
[root@k8s-master ~] cd prometheus/
修改prometheus中的value.yaml文件(prometheus/templates/下k8s构建的 资源对象,就是引用的value.yaml的值):
[root@k8s-master ~] vi value.yaml
修改svc资源的type方式:
注意:
1. 如果使用了storageclass就将文件中的storageclass改变成自己本地的storageclass的名字
2. 将svc的type改为NodePort( NodePort就是映射主机端口,进行访问用的)
3. 可以将pv的值调大点
[root@k8s-master ~] helm install 自定义应用名称 -f values.yaml bitnami/prometheus
[root@k8s-master ~] kubectl get svc
使用浏览器访问ip:30331即可:
检查资源对象是否成功:
查看开放端口:
至此,整个部署过程结束。
从部署过程看,使用Helm部署Prometheus并不复杂,甚至对比其他部署方式,
使用Helm部署Prometheus到Kubernetes集群还具有以下优势:
1.模板化和参数化:Helm使用模板化配置,允许用户在部署时自定义应用程序的参数,从而适应不同的部署需求和环境。
2.版本控制和回滚:Helm支持应用的版本管理,可以轻松回滚到先前的版本,如果新版本出现问题,增强了部署的安全性和灵活性。
3.依赖管理:Helm能够自动处理应用的依赖关系,确保所有必需的组件都能正确安装和配置,减少了手动管理依赖的复杂性。
4.安全性:Helm 3移除了服务端组件Tiller,使用Kubernetes原生的RBAC进行权限控制,简化了安全模型。
5.配置的一致性和可维护性:通过Helm管理的配置,可以确保不同环境中配置的一致性,同时便于维护和更新配置。
这些优势使得Helm成为Kubernetes集群中部署和管理Prometheus及其他应用的强大工具。
错误信息