• Kubernetes Helm的应用


    Helm的概述

    Yum是Linux系统中的包管理工具,那么Helm就是Kubernetes集群中的包管理工具了。

    Helm为Kubernetes集群提供了软件部署、删除、升级、回滚应用等强大的功能。
    在我们还没有使用Helm的时候,都是通过deployment、service来部署应用的,部署的步骤比较繁琐。使用Helm来部署应用,只需要将准备好的yaml文件进行打包,然后使用Helm来部署应用即可

    通过Helm部署的应用,都是动态的,我们可以进行自由的修改配置文件,供k8s集群调度使用

    Helm三个重要的概念

    chart
    相当于一个软件包(如:mysql就是一个chart),主要包含对象配置的模板、参数定义、依赖关系、文档说明等
    release
    是chart运行的实例,只有当chart运行了,就会自动生成一个release,当然,一个chart可以生成多个不同的release(相当于一个镜像可以生成多个不同的容器)
    repository
    helm的软件仓库(和Yum源定义的仓库地址差不多)

    Helm的两个组件

    Helm客户端
    Helm客户端主要负责chart和release的创建和管理,和tiller服务端进行交互
    Tiller服务端
    tiller服务端运行在kubernetes集群中,负责接收并处理Helm客户端的请求,和kubernetes api 进行交互

    注:
    Helm 3.0 以下的版本,安装需要安装Helm客户端和tiller服务端
    Helm 3.0 以上的版本,安装只需要安装Helm客户端即可,无须安装服务端,Helm直接和kubernetes api进行交互,(安装完成首先需要自行添加仓库地址,默认是没有的)

    Helm下载地址:https://github.com/helm/helm/releases

    测试环境

    主机IP地址
    master192.168.1.100
    node1192.168.1.200
    node2192.168.1.250

    Helm的部署

    安装Helm

    1. 选择对应的版本来进行下载
    2. [root@master ~]# wget https://get.helm.sh/helm-v3.0.3-linux-amd64.tar.gz
    3. [root@master ~]# chmod a+x helm
    4. [root@master ~]# cp helm /usr/local/bin/
    5. [root@master ~]# helm version
    6. version.BuildInfo{Version:"v3.0.3", GitCommit:"ac925eb7279f4a6955df663a0128044a8a6b7593", GitTreeState:"clean", GoVersion:"go1.13.6"}

    添加仓库地址

    1. 配置国内Chart仓库
    2. 微软仓库(http://mirror.azure.cn/kubernetes/charts/)基本上官网有的chart这里都有。
    3. 阿里云仓库(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    4. 官方仓库(https://hub.kubeapps.com/charts/incubator)官方chart仓库
    5. [root@master ~]# helm repo add t1 http://mirror.azure.cn/kubernetes/charts/
    6. [root@master ~]# helm repo add t2 https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    7. [root@master ~]# helm repo add t3 https://apphub.aliyuncs.com
    8. 查看添加是否成功
    9. [root@master ~]# helm repo list
    10. NAME URL
    11. t1 http://mirror.azure.cn/kubernetes/charts/
    12. t2 https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
    13. t3 https://apphub.aliyuncs.com

    Helm常用命令

    helm version
    查看helm的版本信息
    helm repo list
    列出当前helm仓库信息
    helm repo add 名称 仓库地址
    新增仓库
    helm repo remove 仓库名称
    删除指定仓库
    helm search repo 仓库名称
    查看指定仓库中的软件信息
    helm repo update
    更新仓库中的信息
    helm pull 仓库名称/软件名称
    从指定的仓库中下载指定的软件
    helm install 名称 仓库名称/软件名称 or helm install 名称 解压后的软件包
    安装指定的软件
    helm delete chart的名称
    删除chart(删除软件)

    Prometheus的构建

    下载Prometheus 软件

    1. [root@master ~]# helm search repo prometheus-operator
    2. NAME CHART VERSION APP VERSION DESCRIPTION
    3. t1/prometheus-operator 9.3.2 0.38.1 DEPRECATED Provides easy monitoring definitions...
    4. t3/prometheus-operator 8.7.0 0.35.0 Provides easy monitoring definitions for Kubern...
    5. 下载操作
    6. [root@master ~]# helm pull t1/prometheus-operator
    7. [root@master ~]# ls
    8. prometheus-operator-9.3.2.tgz

    安装PrometheUS

    1. 先创建一个名称空间用于prometheus安装
    2. [root@master ~]# kubectl create ns ceshi
    3. namespace/ceshi created
    4. [root@master ~]# tar -xf prometheus-operator-9.3.2.tgz
    5. [root@master ~]# cd prometheus-operator/
    6. [root@master ~]# helm install mon prometheus-operator -n ceshi
    7. NAME: mon
    8. LAST DEPLOYED: Thu Jan 7 12:04:45 2021
    9. NAMESPACE: ceshi
    10. STATUS: deployed
    11. REVISION: 1
    12. NOTES:

    查看Pod的运行情况

    1. [root@master ~]# kubectl get pods -n ceshi
    2. NAME READY STATUS RESTARTS AGE
    3. alertmanager-mon-prometheus-operator-alertmanager-0 2/2 Running 0 2m42s
    4. mon-grafana-8d6fb588f-wswlr 2/2 Running 0 22m
    5. mon-kube-state-metrics-556646779d-78cvx 1/1 Running 0 22m
    6. mon-prometheus-node-exporter-cfcw6 1/1 Running 0 22m
    7. mon-prometheus-node-exporter-nqlgx 1/1 Running 0 22m
    8. mon-prometheus-node-exporter-xsksz 1/1 Running 0 22m
    9. mon-prometheus-operator-operator-76595557dd-h7jbr 2/2 Running 0 22m
    10. prometheus-mon-prometheus-operator-prometheus-0 3/3 Running 1 2m18s

    查看service的运行情况

    1. [root@master ~]# kubectl get svc -n ceshi
    2. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    3. alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m29s
    4. mon-grafana ClusterIP 10.97.182.154 <none> 80/TCP 23m
    5. mon-kube-state-metrics ClusterIP 10.98.166.210 <none> 8080/TCP 23m
    6. mon-prometheus-node-exporter ClusterIP 10.108.162.95 <none> 9100/TCP 23m
    7. mon-prometheus-operator-alertmanager ClusterIP 10.99.211.26 <none> 9093/TCP 23m
    8. mon-prometheus-operator-operator ClusterIP 10.102.250.165 <none> 8080/TCP,443/TCP 23m
    9. mon-prometheus-operator-prometheus ClusterIP 10.110.249.210 <none> 9090/TCP 23m
    10. prometheus-operated ClusterIP None <none> 9090/TCP 3m4s

    默认状态下mon-grafana没有开启对外访问的权限,我们需要将类型设置为NodePort

    修改service的类型

    1. [root@master ~]# kubectl edit svc -n ceshi mon-grafana
    2. 61 type: NodePort
    3. [root@master ~]# kubectl get svc -n ceshi
    4. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    5. alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 5m47s
    6. mon-grafana NodePort 10.97.182.154 <none> 80:32279/TCP 25m
    7. mon-kube-state-metrics ClusterIP 10.98.166.210 <none> 8080/TCP 25m
    8. mon-prometheus-node-exporter ClusterIP 10.108.162.95 <none> 9100/TCP 25m
    9. mon-prometheus-operator-alertmanager ClusterIP 10.99.211.26 <none> 9093/TCP 25m
    10. mon-prometheus-operator-operator ClusterIP 10.102.250.165 <none> 8080/TCP,443/TCP 25m
    11. mon-prometheus-operator-prometheus ClusterIP 10.110.249.210 <none> 9090/TCP 25m
    12. prometheus-operated ClusterIP None <none> 9090/TCP
    13. 对外暴露的端口为32279

    浏览器访问测试


    获取用户名以及密码

    1. [root@master ~]# kubectl get secret -n ceshi | grep mon-grafana
    2. mon-grafana Opaque
    3. [root@master ~]# kubectl get secret -n ceshi mon-grafana -o yaml
    4. apiVersion: v1
    5. data:
    6. admin-password: cHJvbS1vcGVyYXRvcg==
    7. admin-user: YWRtaW4=
    8. 解密操作:
    9. [root@master ~]# echo -n "cHJvbS1vcGVyYXRvcg==" | base64 -d
    10. prom-operator
    11. [root@master ~]# echo -n "YWRtaW4=" | base64 -d
    12. admin

    用户名:admin 密码:prom-operator

    浏览器输入用户名以及密码登录测试


    查询监控


    监控的Pod

  • 相关阅读:
    【开发】安防监控/视频存储/视频汇聚平台EasyCVR优化播放体验的小tips
    Java的日期与时间之java.time.ZonedDateTime简介说明
    python自动解析301、302重定向链接
    直播倒计时,PyTorch Conference 2022 今晚开启
    JS前端开发框架常用的有哪些?
    Android SensorManager学习
    撂荒耕地变“希望良田” 国稻种芯:平远县热柘镇以企带村
    【如何重燃程序人生】
    面试算法 三个数的最大乘积整型数组nums,在数组中找出由三个数字组成的最大乘积,并输出这个乘积。乘积不会越界
    【计算机基础】数据结构一览
  • 原文地址:https://blog.csdn.net/qq_39458487/article/details/124889040