当前位置: 首页 > news >正文

kubernetes应用的包管理Helm工具

helm简介

    Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。

    Helm Chart是用来封装Kubernetes原生应用程序的一系列YAML文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

  对于应用发布者而言

    通过Helm打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。

  对于使用者而言

    使用Helm后能以简单的方式在Kubernetes上查找、安装、升级、回滚、卸载应用程序

部署helm

安装helm

# tar zxf /root/helm/helm-v3.15.4-linux-amd64.tar.gz

# cd /root/helm/linux-amd64/

# ls

# cp -p helm /usr/local/bin/

配置helm命令补齐

# echo "source <(helm completion bash)" >> ~/.bashrc

# source ~/.bashrc

# helm version 查看结果:

helm常用操作

  create       创建一个 chart 并指定名字                                     

  dependency   管理 chart 依赖                                               

  get          下载一个 release。可用子命令:all、hooks、manifest、notes、values  

  history      获取 release 历史                                             

  install      安装一个 chart                                                

  list         列出 release                                                  

  package      将 chart 目录打包到 chart 存档文件中                          

  pull         从远程仓库中下载 chart 并解压到本地 # helm pull stable/mysql -- untar  

  repo         添加,列出,移除,更新和索引 chart 仓库。可用子命令:add、index、 list、remove、update  

  rollback     从之前版本回滚                                                

  search       根据关键字搜索 chart。可用子命令:hub、repo                   

  show         查看 chart 详细信息。可用子命令:all、chart、readme、values   

  status       显示已命名版本的状态                                          

  template     本地呈现模板                                                  

  uninstall    卸载一个 release                                              

  upgrade      更新一个 release                                              

  version      查看 helm 客户端版本                                          

查询官方应用中心

# helm search hub nginx        #在官方仓库中搜索

# helm search repo nginx          #在本地仓库中搜索

管理第三方repo源

# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 【添加阿里云】

# helm repo add bitnami https://charts.bitnami.com/bitnami   【添加bitnami仓库】

# helm repo add miscro http://mirror.azure.cn/kubernetes/charts/   【微软仓库】

# helm repo list   【查看仓库信息】

# helm search repo aliyun    【查看仓库存储helm清单】

# helm repo remove aliyun   【删除第三方存储库】

helm的使用方法

# helm search repo nginx    【查找chart】

# helm show chart bitnami/nginx    【查看chart信息】

安装chart 包

# helm install mariadb miscro/mariadb

# helm list 查看结果:

# kubectl get pods

# helm status mariadb    【查看项目的发布状态】

# helm uninstall mariadb      【卸载项目】

# helm list 查看结果:

安装项目前预定义项目选项

# helm pull bitnami/nginx

# docker load -i /root/nginx-1.27.1-debian-12-r2.tar

# docker tag bitnami/nginx:1.27.1-debian-12-r2 reg.timinglee.org/bitnami/nginx:1.27.1-debian-12-r2

# docker push reg.timinglee.org/bitnami/nginx:1.27.1-debian-12-r2

# cd ~

# tar zxf nginx-18.1.11.tgz

# cd nginx/

# vim values.yaml 【项目变量文件】

# helm install timinglee /root/nginx

# kubectl get svc

# kubectl get pods 查看结果:

# vim values.yaml 【更新变量文件】

# helm upgrade timinglee .

# kubectl get svc 查看结果:

# kubectl get ingress

# vim /etc/hosts

# curl www.timinglee.org

# helm history timinglee

# helm uninstall timinglee    【删除项目】

# helm list 查看结果:

构建helm中的chart包

Helm Chart目录结构

# helm create timinglee    【简历chart项目】

# tree timinglee/

构建方法

# cd /root/helm/linux-amd64/timinglee/

# vim Chart.yaml

# vim values.yaml

#更改内容

image:

  repository: myapp

  pullPolicy: IfNotPresent

  tag: "v1"

ingress:

  enabled: true

  className: "nginx"

  annotations: {}

    # kubernetes.io/ingress.class: nginx

    # kubernetes.io/tls-acme: "true"

  hosts:

    - host: www.timinglee.org

      paths:

        - path: /

          pathType: ImplementationSpecific

# helm lint .  检测查看:

# helm install timinglee .

# kubectl get deployments.apps

项目打包

# cd /root/helm/linux-amd64

# helm package timinglee/

# ls

项目可以通过各种分享方式发方为任何人后部署即可

# helm install timinglee timinglee-0.1.0.tgz

构建helm仓库

在harbor仓库中构建一个公开的项目

安装helm push插件

如果网络没问题情况下直接安装即可

# cd ~

# dnf install git -y

# helm plugin install https://github.com/chartmuseum/helm-push

离线安装

# mkdir -p ~/.local/share/helm/plugins/helm-push

# tar zxf helm-push_0.10.4_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push

# ls ~/.local/share/helm/plugins/helm-push

查看helm调用命令是否成功

# helm cm-push --help 查看结果:

上传项目到仓库

# helm repo add timinglee https://reg.timinglee.org/chartrepo/timinglee    【添加仓库】

为helm添加证书

# cp /etc/docker/certs.d/reg.timinglee.org/ca.crt /etc/pki/ca-trust/source/anchors/

# update-ca-trust   【更新本地ca认证库】

再次添加仓库

# helm repo add timinglee https://reg.timinglee.org/chartrepo/timinglee

上传本地项目

命令执行格式:helm  cm-push  <项目名称>  <仓库名称>  -u  admin  -p  lee

# helm cm-push timinglee-0.1.0.tgz timinglee -u admin -p lee

查看项目上传情况

# helm search repo timinglee 【上传后数据未更新】

# helm repo update timinglee 【更新仓库】

# helm search repo timinglee 查看结果:

安装项目

# helm install timinglee timinglee/timinglee 【安装】

# curl www.timinglee.org 查看运行:

helm的版本迭代

从新构建新版本项目

# vim /root/helm/linux-amd64/timinglee/Chart.yaml

# vim /root/helm/linux-amd64/timinglee/values.yaml

# helm package timinglee

上传项目到helm仓库中

# helm cm-push timinglee-0.2.0.tgz timinglee -u admin -p lee

# helm repo update timinglee 【更新仓库】

# helm search repo timinglee -l 查看结果:

更新应用

# helm upgrade timinglee timinglee/timinglee

# curl http://www.timinglee.org/

显示项目版本

# helm history timinglee

应用回滚

# helm rollback timinglee

# helm history timinglee

# curl www.timinglee.org 查看运行:

Prometheus简介

    Prometheus是一个开源的服务监控系统和时序数据库

    其提供了通用的数据模型和快捷数据采集、存储和查询接口

    它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据

    新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中

Prometheus架构

组件功能:

  监控代理程序:如node_exporter:收集主机的指标数据,如平均负载、CPU、内存、磁盘、网络等等多个维度的指标数据。

  kubelet(cAdvisor):收集容器指标数据,也是K8S的核心指标收集,每个容器的相关指标数据包括:CPU使用率、限额、文件系统读写限额、内存使用率和限额、网络报文发送、接收、丢弃速率等等。

  API Server:收集API Server性能指标数据,包括控制队列的性能、请求速率和延迟时长等

  etcd:收集etcd存储集群的相关指标数据

  kube-state-metrics:该组件可派生出k8s相关多个指标数据,主要是资源类型相关的计数器和元数据信息,包括制定类型的对象总数、资源限额、容器状态以及Pod资源标签系列等。

    每个被监控的主机都可以通过专用的`exporter`程序提供输出监控数据的接口,并等待`Prometheus`服务器周期性的进行数据抓取

    如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到`Alertmanager`完成告警的汇总和分发

    当被监控的目标有主动推送数据的需求时,可以以`Pushgateway`组件进行接收并临时存储数据,然后等待`Prometheus`服务器完成数据的采集

    任何被监控目标都要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示

    监控目标可以通过配置信息以静态形式指定,也可以让Prometheus通过服务发现的机制进行动态管理

在k8s中部署Prometheus

下载部署Prometheus所需资源

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

在helm中添加Prometheus仓库

# mkdir -p prometheus

# cd prometheus/

# tar zxf kube-prometheus-stack-62.6.0.tgz

# ls kube-prometheus-stack/

# tar zxf prometheus-adapter-4.11.0.tgz

# ls prometheus-adapter/

根据所有项目中的values.yaml中指定的image路径下载容器镜像并上传至harbor仓库

容器镜像prometheus推送

# docker load -i prometheus-62.6.0.tar

# docker tag  quay.io/prometheus/prometheus:v2.54.1 reg.timinglee.org/prometheus/prometheus:v2.54.1

# docker tag quay.io/thanos/thanos:v0.36.1 reg.timinglee.org/thanos/thanos:v0.36.1

# docker tag quay.io/prometheus/alertmanager:v0.27.0 reg.timinglee.org/prometheus/alertmanager:v0.27.0

# docker tag quay.io/prometheus-operator/admission-webhook:v0.76.1 reg.timinglee.org/prometheus-operator/admission-webhook:v0.76.1

# docker tag quay.io/prometheus-operator/prometheus-operator:v0.76.1 reg.timinglee.org/prometheus-operator/prometheus-operator:v0.76.1

# docker tag registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20221220-controller-v1.5.1-58-g787ea74b6 reg.timinglee.org/ingress-nginx/kube-webhook-certgen:v20221220-controller-v1.5.1-58-g787ea74b6

# docker tag quay.io/prometheus-operator/prometheus-config-reloader:v0.76.1 reg.timinglee.org/prometheus-operator/prometheus-config-reloader:v0.76.1

# docker push reg.timinglee.org/prometheus/prometheus:v2.54.1

# docker push reg.timinglee.org/thanos/thanos:v0.36.1

# docker push reg.timinglee.org/prometheus/alertmanager:v0.27.0

# docker push reg.timinglee.org/prometheus-operator/admission-webhook:v0.76.1

# docker push  reg.timinglee.org/prometheus-operator/prometheus-operator:v0.76.1

# docker push reg.timinglee.org/ingress-nginx/kube-webhook-certgen:v20221220-controller-v1.5.1-58-g787ea74b6

# docker push reg.timinglee.org/prometheus-operator/prometheus-config-reloader:v0.76.1

# docker load -i node-exporter-v1.8.2.tar

# docker tag reg.timinglee.org/prometheus/node-exporter:v1.8.2 reg.timinglee.org/prometheus/node-exporter:v1.8.2

# docker push reg.timinglee.org/prometheus/node-exporter:v1.8.2

容器镜像grafana推送

# docker load -i grafana-11.2.0.tar

# docker tag grafana/grafana:11.2.0 reg.timinglee.org/grafana/grafana:11.2.0

# docker tag grafana/grafana-image-renderer:latest reg.timinglee.org/grafana/grafana-image-renderer:latest

# docker tag quay.io/kiwigrid/k8s-sidecar:1.27.4 reg.timinglee.org/kiwigrid/k8s-sidecar:1.27.4

# docker tag bats/bats:v1.4.1 reg.timinglee.org/bats/bats:v1.4.1

# docker push reg.timinglee.org/grafana/grafana:11.2.0

# docker push reg.timinglee.org/grafana/grafana-image-renderer:latest

# docker push reg.timinglee.org/kiwigrid/k8s-sidecar:1.27.4

# docker push reg.timinglee.org/bats/bats:v1.4.1

容器镜像nginx-exporter推送

# docker load -i nginx-exporter-1.3.0-debian-12-r2.tar

# docker tag bitnami/nginx-exporter:1.3.0-debian-12-r2 reg.timinglee.org/bitnami/nginx-exporter:1.3.0-debian-12-r2

# docker push reg.timinglee.org/bitnami/nginx-exporter:1.3.0-debian-12-r2

容器镜像kube-state-metrics推送

# docker load -i kube-state-metrics-2.13.0.tar

# docker tag registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.13.0 reg.timinglee.org/kube-state-metrics/kube-state-metrics:v2.13.0

# docker tag quay.io/brancz/kube-rbac-proxy:v0.18.0 reg.timinglee.org/brancz/kube-rbac-proxy:v0.18.0

# docker push reg.timinglee.org/kube-state-metrics/kube-state-metrics:v2.13.0

# docker push reg.timinglee.org/brancz/kube-rbac-proxy:v0.18.0

利用helm安装Prometheus

卸载命令(如需要重新安装): helm -n kube-prometheus-stack uninstall kube-prometheus-stack

# kubectl create namespace kube-prometheus-stack

# cd /root/prometheus/kube-prometheus-stack     【在这个目录执行】

# helm -n kube-prometheus-stack install kube-prometheus-stack  .

# kubectl --namespace kube-prometheus-stack get pods 查看结果:

# kubectl -n kube-prometheus-stack get svc

# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-grafana  【修改暴漏方式】

各个svc的作用

    alertmanager-operated 告警管理

    kube-prometheus-stack-grafana 展示prometheus采集到的指标

    kube-prometheus-stack-prometheus-node-exporter     收集节点级别的指标的工具

    kube-prometheus-stack-prometheus  主程序

登陆grafana

查看grafana密码

# kubectl -n kube-prometheus-stack get secrets kube-prometheus-stack-grafana -o yaml

# echo "YWRtaW4=" | base64 -d

# echo -n "cHJvbS1vcGVyYXRvcg==" | base64 -d

prometheus监控

下载prometheus

官网:https://github.com/prometheus-operator/prometheus-operator

登录使用

设置语言

监控使用示例

建立监控项目

# helm pull bitnami/nginx --version 18.1.11   【下载示例所需helm项目】

# vim values.yaml   【修改项目开启监控】

# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-prometheus

# kubectl -n kube-prometheus-stack get svc kube-prometheus-stack-prometheus

查看监控

# kubectl -n kube-prometheus-stack get servicemonitors.monitoring.coreos.com --show-labels

# helm install timinglee .     【安装项目,在安装之前一定要上传镜像到仓库中】

# kubectl get svc 查看结果:

# ab -c 5 -n 100 http://172.25.254.53/index.html    【压力测试】

http://www.dtcms.com/a/361639.html

相关文章:

  • MySql blob转string
  • 15693协议ICODE SLI 系列标签应用场景说明及读、写、密钥认证操作Qt c++源码,支持统信、麒麟等国产Linux系统
  • 【Pycharm】Pychram软件工具栏Git和VCS切换
  • 【数据可视化-102】苏州大学招生计划全解析:数据可视化的五大维度
  • 从零开始实现Shell | Linux进程调度实战
  • AI时代SEO关键词实战解析
  • Scala协变、逆变、上界/下界、隐式参数、隐式转换
  • daily notes[7]
  • Windows系统下如何配置和使用jfrog.exe
  • Ansible变量的定义与使用
  • docker 网络配置
  • MJ Prompt Tool-好用的Midjourney提示词工具
  • uniApp 混合开发全指南:原生与跨端的协同方案
  • 机器学习通关秘籍|Day 05:过拟合和欠拟合、正则化、岭回归、拉索回归、逻辑回归、Kmeans聚类
  • ChatGLM-6B全流程部署:环境搭建→模型加载→API调用(附避坑指南)
  • 【项目思维】这是一份嵌入式软件开发的大纲(简化版)
  • Go 面试题: new 和 make 是什么,差异在哪?
  • window显示驱动开发—监视筛选器驱动程序
  • 如何安装CUDA????
  • 在 Qt 中加载 .qm 翻译文件
  • 基本问题解决--舵机
  • 选择图片转base64格式组件简单封装-Base64ImageInpu
  • nestjs 发起请求 axios
  • Onion-LO(已开源)——LIDAR里程计的统一框架
  • IO进程线程;标准io;文件IO;0901
  • PyTorch 实战(3)—— PyTorch vs. TensorFlow:深度学习框架的王者之争
  • 「日拱一码」075 机器学习——密度泛函理论DFT
  • 在 Unity 中调用腾讯云机器翻译
  • 命名空间级别应用 Pod 安全标准
  • 在 Ubuntu 24.04 LTS 上安装 SSH 并启用服务端实现远程连接