目录

  • 一、 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格式的单一文件,方便传输和存储)。

redis helm chart使用 helm部署redis_redis


真机将helm-v3版本的包发送给server2;

Helm V3 与 V2 最大的区别在于去掉了tiller

redis helm chart使用 helm部署redis_命名空间_02


server2创建目录,并在该目录下解压helm安装包;

将解压后的helm文件复制到/usr/local/bin下,使其可执行

redis helm chart使用 helm部署redis_上传_03


添加环境变量,重新应用

redis helm chart使用 helm部署redis_redis helm chart使用_04


成功设置helm命令补齐

redis helm chart使用 helm部署redis_上传_05


查看helm仓库列表,当前没有添加库

redis helm chart使用 helm部署redis_上传_06


搜索官方helm hub chart库

redis helm chart使用 helm部署redis_redis_07


Helm添加第三方Chart 库,记为bitname

redis helm chart使用 helm部署redis_命名空间_08


查看repo源,可以看到添加成功

redis helm chart使用 helm部署redis_redis_09

1.helm部署redis

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

查询redis应用;

拉取redis-cluster应用到本地

redis helm chart使用 helm部署redis_linux_10


加 -l 选项可以查看历史版本

redis helm chart使用 helm部署redis_redis_11


将拉取到的包移动到helm/里方便管理;

删除之前helm目录的包删掉;

解压,之后进入解压得到的目录,编辑values.yaml文件,该文件内包括大量的变量

redis helm chart使用 helm部署redis_redis_12


redis helm chart使用 helm部署redis_redis_13


指定仓库地址

redis helm chart使用 helm部署redis_上传_14


将之前实验的pvc都删掉

redis helm chart使用 helm部署redis_命名空间_15


仓库新建一个项目bitnami

redis helm chart使用 helm部署redis_linux_16


真机将redis-cluster.tar发送给server1

redis helm chart使用 helm部署redis_redis_17


server1导入、修改标签后上传镜像至仓库

redis helm chart使用 helm部署redis_命名空间_18


redis helm chart使用 helm部署redis_redis helm chart使用_19


server2使用helm命令安装redis-cluster

redis helm chart使用 helm部署redis_命名空间_20


安装完redis-cluster后查看pod信息’

可以看到下图,六个pod都running了

redis helm chart使用 helm部署redis_上传_21


server2查看当前安装的charts

redis helm chart使用 helm部署redis_命名空间_22


卸载redis-cluster,之后pod节点会慢慢停掉

redis helm chart使用 helm部署redis_redis_23

二、构建一个 Helm Chart

在helm目录下创建mychart;

使用yum安装tree命令后,可以看到mychart的目录结构

redis helm chart使用 helm部署redis_redis helm chart使用_24


修改Chart.yaml应用描述信息

redis helm chart使用 helm部署redis_redis_25


redis helm chart使用 helm部署redis_redis_26


修改values.yaml应用部署文件,指定镜像为myapp,版本v1

redis helm chart使用 helm部署redis_redis_27


redis helm chart使用 helm部署redis_redis helm chart使用_28


修改之后用helm lint .查看是否正确

redis helm chart使用 helm部署redis_命名空间_29


将应用打包为mychart-0.1.0.tgz

redis helm chart使用 helm部署redis_上传_30


仓库新建一个名为charts的项目

redis helm chart使用 helm部署redis_命名空间_31


Helm添加第三方Chart 库(chartrepo是默认地址必须加),显示认证失败信息

redis helm chart使用 helm部署redis_redis_32


添加认证密钥

redis helm chart使用 helm部署redis_linux_33


更新ca证书,添加chart仓库;

此时可以列出刚刚添加的仓库

redis helm chart使用 helm部署redis_redis helm chart使用_34


接着需要上传包,所以需要安装push的插件;

真机将helm push插件发送给server2

redis helm chart使用 helm部署redis_命名空间_35


查看helm环境变量获取插件目录

redis helm chart使用 helm部署redis_上传_36


在指定插件目录下创建push文件夹

redis helm chart使用 helm部署redis_命名空间_37


sever2将helm-push插件解压到helm插件目录下的push目录

redis helm chart使用 helm部署redis_命名空间_38


上传mychart到仓库中

redis helm chart使用 helm部署redis_redis helm chart使用_39


直接push显示出错

redis helm chart使用 helm部署redis_redis_40


使用非安全方式

redis helm chart使用 helm部署redis_上传_41


push的时候必须指定用户名和密码

redis helm chart使用 helm部署redis_上传_42


现在可以在harbor仓库中看到

redis helm chart使用 helm部署redis_上传_43


redis helm chart使用 helm部署redis_linux_44


helm repo update进行更新后就可以search到mychart

redis helm chart使用 helm部署redis_redis_45


安装部署仓库中的mychart

redis helm chart使用 helm部署redis_命名空间_46


可以看到mychart部署成功

redis helm chart使用 helm部署redis_redis_47


访问生成的IP

redis helm chart使用 helm部署redis_上传_48


编辑Chart.yaml应用描述信息进行版本升级

redis helm chart使用 helm部署redis_上传_49


编辑values.yaml文件,将镜像标签改为v2

redis helm chart使用 helm部署redis_redis_50


redis helm chart使用 helm部署redis_redis_51


检查依赖和模板配置是否正确

redis helm chart使用 helm部署redis_redis helm chart使用_52


将mychart打包

redis helm chart使用 helm部署redis_redis helm chart使用_53


上传打包后的mychart,更新仓库信息

redis helm chart使用 helm部署redis_上传_54


查看仓库mychart的版本,加 -L之后可以查看到全部的版本!

redis helm chart使用 helm部署redis_redis helm chart使用_55


redis helm chart使用 helm部署redis_上传_56


通过helm命令直接更新现在的mychart;

测试访问,可以看到更新成功

redis helm chart使用 helm部署redis_redis_57


查看mychart的历史

redis helm chart使用 helm部署redis_redis helm chart使用_58


回滚到第一个版本;

访问测试,回滚成功

redis helm chart使用 helm部署redis_命名空间_59

三、 Helm部署nfs

查看k8s的存储类

redis helm chart使用 helm部署redis_上传_60


查看之前手动部署的nfs-client-provisioner命名空间;

helm search repo 从你添加(使用 helm repo add)到本地 helm 客户端中的仓库中进行查找 Charts。该命令基于本地数据进行搜索,无需连接互联网。

redis helm chart使用 helm部署redis_linux_61


helm search hub 从 Artifact Hub 中查找并列出 helm charts,Artifact Hub中存放了大量不同的仓库。

redis helm chart使用 helm部署redis_命名空间_62


添加第三方charts到本地仓库

redis helm chart使用 helm部署redis_命名空间_63


在helm下创建新的nfs目录

redis helm chart使用 helm部署redis_redis helm chart使用_64


server2拉取chart

redis helm chart使用 helm部署redis_linux_65


解压

redis helm chart使用 helm部署redis_上传_66


真机将nfs-provisioner压缩包发送给server1

redis helm chart使用 helm部署redis_redis_67


在仓库中创建新项目sig-storage

redis helm chart使用 helm部署redis_linux_68


server1导入镜像并上传至仓库

redis helm chart使用 helm部署redis_redis_69


redis helm chart使用 helm部署redis_redis_70


编辑values.yaml文件

redis helm chart使用 helm部署redis_linux_71


修改镜像文件,nfs服务器以及路径

redis helm chart使用 helm部署redis_上传_72


allowVolumeExpansion字段设置成true:开启扩容

archiveOnDelete:删除时是否存档,false表示不存档,即删除数据

redis helm chart使用 helm部署redis_linux_73


删除之前手动部署的nfs-client-provisioner

redis helm chart使用 helm部署redis_linux_74


将之前实验的mychart清除

redis helm chart使用 helm部署redis_linux_75


相关pvc和pv都清理干净

redis helm chart使用 helm部署redis_redis helm chart使用_76


通过helm部署nfs-client-provisioner;

查看nfs-client-provisioner命名空间信息,可以看到部署成功

redis helm chart使用 helm部署redis_上传_77


查看默认sc已配置成功

redis helm chart使用 helm部署redis_上传_78


编写test-pvc.yaml文件

redis helm chart使用 helm部署redis_redis helm chart使用_79


应用test-pvc.yaml文件,创建pvc

redis helm chart使用 helm部署redis_上传_80


可以看到创建成功,功能正常

redis helm chart使用 helm部署redis_命名空间_81


redis helm chart使用 helm部署redis_命名空间_82


删除pvc,pv自动回收

redis helm chart使用 helm部署redis_redis helm chart使用_83

四、Helm部署metrics-server

删除之前手动部署的metrics-server,看不到cpu和mem的指标了

redis helm chart使用 helm部署redis_linux_84


真将metrics-server包发送给server2

redis helm chart使用 helm部署redis_命名空间_85


解压metrics-server包

redis helm chart使用 helm部署redis_linux_86


编辑values.yaml应用部署文件

redis helm chart使用 helm部署redis_redis_87


添加仓库信息

redis helm chart使用 helm部署redis_redis helm chart使用_88


正确修改镜像路径和标签

redis helm chart使用 helm部署redis_命名空间_89


打开api接口

redis helm chart使用 helm部署redis_redis helm chart使用_90

redis helm chart使用 helm部署redis_命名空间_91


server1拉取metrics-server镜像

redis helm chart使用 helm部署redis_redis helm chart使用_92


修改标签,上传到私有仓库

redis helm chart使用 helm部署redis_redis helm chart使用_93


创建命名空间metrics-server

redis helm chart使用 helm部署redis_linux_94


通过helm部署metrics-server,指定命名空间metrics-server;

注意:如果在values.yaml文件中没有打开api接口,就会出现以下报错

redis helm chart使用 helm部署redis_命名空间_95


redis helm chart使用 helm部署redis_redis_96


根据提示信息,通过以下命令即可成功部署metrics-server

redis helm chart使用 helm部署redis_linux_97


使用上图提示指令获取信息

redis helm chart使用 helm部署redis_linux_98


查看metrics-server命名空间的详细信息,可以看到pod、svc都正常启动,并且成功监测cpu和mem核心指标

redis helm chart使用 helm部署redis_redis_99


redis helm chart使用 helm部署redis_上传_100


kubectl top node现在可以看到所有节点资源使用情况,部署成功

redis helm chart使用 helm部署redis_redis helm chart使用_101