目录
- 一、 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现在可以看到所有节点资源使用情况,部署成功