当前位置: 代码迷 >> 综合 >> Kubernetes 15 (helm应用包管理工具---部署redis、nfs、metrics-server、构建Helm Chart)
  详细解决方案

Kubernetes 15 (helm应用包管理工具---部署redis、nfs、metrics-server、构建Helm Chart)

热度:28   发布时间:2023-12-24 23:03:16.0

目录

  • 一、 Helm安装部署
    • 1.helm部署redis
  • 二、构建一个 Helm Chart
  • 三、 Helm部署nfs
  • 四、Helm部署metrics-server

一、 Helm安装部署

1、Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。

2、对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库;
对于使用者而言,使用 Helm 后不需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。

很多人都使用过Ubuntu下的ap-get或者CentOS下的yum, 这两者都是Linux系统下的包管理工具。采用apt-get/yum,应用开发者可以管理应用包之间的依赖关系,发布应用;用户则可以以简单的方式查找、安装、升级、卸载应用程序。
可以将Helm看作Kubernetes下的apt-get/yum。Helm是Deis (https://deis.com/) 开发的一个用于kubernetes的包管理器。每个包称为一个Chart,一个Chart是一个目录(一般情况下会将目录进行打包压缩,形成name-version.tgz格式的单一文件,方便传输和存储)。

在这里插入图片描述
真机将helm-v3版本的包发送给server2;
Helm V3 与 V2 最大的区别在于去掉了tiller
请添加图片描述
server2创建目录,并在该目录下解压helm安装包;
将解压后的helm文件复制到/usr/local/bin下,使其可执行
请添加图片描述
添加环境变量,重新应用
请添加图片描述
成功设置helm命令补齐
请添加图片描述
查看helm仓库列表,当前没有添加库
请添加图片描述
搜索官方helm hub chart库
在这里插入图片描述
Helm添加第三方Chart 库,记为bitname
请添加图片描述
查看repo源,可以看到添加成功
请添加图片描述

1.helm部署redis

redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。

查询redis应用;
拉取redis-cluster应用到本地
请添加图片描述
加 -l 选项可以查看历史版本
在这里插入图片描述
将拉取到的包移动到helm/里方便管理;
删除之前helm目录的包删掉;
解压,之后进入解压得到的目录,编辑values.yaml文件,该文件内包括大量的变量
请添加图片描述
请添加图片描述
指定仓库地址
请添加图片描述
将之前实验的pvc都删掉
请添加图片描述
仓库新建一个项目bitnami
请添加图片描述
真机将redis-cluster.tar发送给server1
请添加图片描述
server1导入、修改标签后上传镜像至仓库
在这里插入图片描述
请添加图片描述
server2使用helm命令安装redis-cluster
请添加图片描述
安装完redis-cluster后查看pod信息’
可以看到下图,六个pod都running了
请添加图片描述
server2查看当前安装的charts
请添加图片描述
卸载redis-cluster,之后pod节点会慢慢停掉
请添加图片描述

二、构建一个 Helm Chart

在helm目录下创建mychart;
使用yum安装tree命令后,可以看到mychart的目录结构
请添加图片描述
修改Chart.yaml应用描述信息
在这里插入图片描述
请添加图片描述
修改values.yaml应用部署文件,指定镜像为myapp,版本v1
请添加图片描述
请添加图片描述
修改之后用helm lint .查看是否正确
在这里插入图片描述
将应用打包为mychart-0.1.0.tgz
请添加图片描述
仓库新建一个名为charts的项目
请添加图片描述
Helm添加第三方Chart 库(chartrepo是默认地址必须加),显示认证失败信息
请添加图片描述
添加认证密钥
请添加图片描述
更新ca证书,添加chart仓库;
此时可以列出刚刚添加的仓库
请添加图片描述
接着需要上传包,所以需要安装push的插件;
真机将helm push插件发送给server2
请添加图片描述
查看helm环境变量获取插件目录
请添加图片描述
在指定插件目录下创建push文件夹
请添加图片描述
sever2将helm-push插件解压到helm插件目录下的push目录
请添加图片描述
上传mychart到仓库中
请添加图片描述
直接push显示出错
请添加图片描述
使用非安全方式
请添加图片描述
push的时候必须指定用户名和密码
请添加图片描述
现在可以在harbor仓库中看到
请添加图片描述
请添加图片描述
helm repo update进行更新后就可以search到mychart
请添加图片描述
安装部署仓库中的mychart
请添加图片描述
可以看到mychart部署成功
请添加图片描述
访问生成的IP
请添加图片描述
编辑Chart.yaml应用描述信息进行版本升级
请添加图片描述
编辑values.yaml文件,将镜像标签改为v2
请添加图片描述
请添加图片描述
检查依赖和模板配置是否正确
请添加图片描述
将mychart打包
请添加图片描述
上传打包后的mychart,更新仓库信息
请添加图片描述
查看仓库mychart的版本,加 -L之后可以查看到全部的版本!
请添加图片描述
请添加图片描述
通过helm命令直接更新现在的mychart;
测试访问,可以看到更新成功
请添加图片描述
查看mychart的历史
请添加图片描述
回滚到第一个版本;
访问测试,回滚成功
请添加图片描述

三、 Helm部署nfs

查看k8s的存储类
请添加图片描述
查看之前手动部署的nfs-client-provisioner命名空间;
helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找 Charts。该命令基于本地数据进行搜索,无需连接互联网。
请添加图片描述
helm search hub 从 Artifact Hub 中查找并列出 helm charts,Artifact Hub中存放了大量不同的仓库。
请添加图片描述
添加第三方charts到本地仓库请添加图片描述
在helm下创建新的nfs目录
在这里插入图片描述
server2拉取chart
请添加图片描述
解压
请添加图片描述
真机将nfs-provisioner压缩包发送给server1
请添加图片描述
在仓库中创建新项目sig-storage
请添加图片描述
server1导入镜像并上传至仓库
请添加图片描述
请添加图片描述
编辑values.yaml文件
请添加图片描述
修改镜像文件,nfs服务器以及路径
请添加图片描述
allowVolumeExpansion字段设置成true:开启扩容
archiveOnDelete:删除时是否存档,false表示不存档,即删除数据
请添加图片描述
删除之前手动部署的nfs-client-provisioner
请添加图片描述
将之前实验的mychart清除
请添加图片描述
相关pvc和pv都清理干净
请添加图片描述
通过helm部署nfs-client-provisioner;
查看nfs-client-provisioner命名空间信息,可以看到部署成功
请添加图片描述
查看默认sc已配置成功
请添加图片描述
编写test-pvc.yaml文件
在这里插入图片描述
应用test-pvc.yaml文件,创建pvc
在这里插入图片描述
可以看到创建成功,功能正常
请添加图片描述
请添加图片描述
删除pvc,pv自动回收
请添加图片描述

四、Helm部署metrics-server

删除之前手动部署的metrics-server,看不到cpu和mem的指标了
在这里插入图片描述
真将metrics-server包发送给server2
请添加图片描述
解压metrics-server包
请添加图片描述
编辑values.yaml应用部署文件
请添加图片描述
添加仓库信息
请添加图片描述
正确修改镜像路径和标签
在这里插入图片描述
打开api接口
在这里插入图片描述

请添加图片描述
server1拉取metrics-server镜像
请添加图片描述
修改标签,上传到私有仓库
请添加图片描述
创建命名空间metrics-server
请添加图片描述
通过helm部署metrics-server,指定命名空间metrics-server;
注意:如果在values.yaml文件中没有打开api接口,就会出现以下报错
请添加图片描述
请添加图片描述
根据提示信息,通过以下命令即可成功部署metrics-server
请添加图片描述
使用上图提示指令获取信息
请添加图片描述
查看metrics-server命名空间的详细信息,可以看到pod、svc都正常启动,并且成功监测cpu和mem核心指标
请添加图片描述
请添加图片描述
kubectl top node现在可以看到所有节点资源使用情况,部署成功
请添加图片描述

  相关解决方案