什么是Helm
Kubernetes 包管理器
Helm 是查找、分享和使用软件构件 Kubernetes 的最优方式。
对于Helm,有三个重要的概念:
chart 创建Kubernetes应用程序所必需的一组信息。
config 包含了可以合并到打包的chart中的配置信息,用于创建一个可发布的对象。
release 是一个与特定配置相结合的chart的运行实例。
常用命令
命令 | 作用 |
---|---|
helm repo | 列出、增加、更新、删除 chart 仓库 |
helm search | 使用关键词搜索 chart |
helm pull | 拉取远程仓库中的 chart 到本地 |
helm create | 在本地创建新的 chart |
helm dependency | 管理 chart 依赖 |
helm install | 安装 chart |
helm list | 列出所有 release |
helm lint | 检查 chart 配置是否有误 |
helm package | 打包本地 chart |
helm rollback | 回滚 release 到历史版本 |
helm uninstall | 卸载 release |
helm upgrade | 升级 release |
目录结构
1 |
|
Helm升级
helm upgrade [RELEASE] [CHART] [flags]
Helm回滚
使用 helm ls 的命令查看当前运行的 chart 的 release 版本,并使用下面的命令回滚到历史版本:
helm rollback <RELEASE> [REVISION] [flags]
1 |
|
Helm 命令 Tab 补全
Helm 有很多子命令和参数,为了提高使用命令行的效率,通常建议安装 helm 的 bash 命令补全脚本。
1 |
|
如果出现
[root@k8s-master ~]# helm ge-bash: _get_comp_words_by_ref: command not found
错误可以参考[K8s kubectl 报错 c-bash: _get_comp_words_by_ref: command not found解决过程-CSDN博客](https://blog.csdn.net/qq_29974229/article/details/102890267#:~:text=[root%40master bin]%23 kubectl c-bash%3A _get_comp_words_by_ref%3A command not found,-y 2.执行bash_completion [root%40master bin]%23 source %2Fusr%2Fshare%2Fbash-completion%2Fbash_completion 3.重新加载kubectl completion)解决
实例(安装mysql)
安装NFS Server
1 |
|
启动 NFS Server
1 |
|
验证 NFS Server 是否启动
1 |
|
配置文件共享路径
1 |
|
验证 NFS Server 是否生效
1 |
|
如果执行后出现下面的情况,可以先执行
exportfs -r
重新挂载/etc/exports中的设置重新挂载后
创建namespace
kubectl create namespace mysql
创建PV
1 |
|
1 |
|
1 |
|
创建PVC
1 |
|
1 |
|
1 |
|
下载 chart
执行helm search repo mysql
,搜索mysql
执行helm fetch azure/mysql
下载压缩包
执行tar -zxvf mysql-1.6.9.tgz
解压
进入mysql
文件夹,打开values.yaml
,进行配置
可以在这里设置密码
默认的CluestrIP这个类型在外部无法访问,需要修改
修改后,类型变成了NodePort,外部端口是32000:
创建namespace
创建名为test001的namespace:
1 |
|
配置数据存储
将persistence.storageClass设置为managed-nfs-storage
部署mysql
以上配置完成后,接下来就是运行 MySQL 服务了。
1 |
|
安装redis
修改helm源
1 |
|
搜索readis chart
1 |
|
修改配置安装
1 |
|
查看安装情况
1 |
|
升级
修改value.yaml将password改为123456hhh
执行helm upgrade redis . -n redis
进行升级
进入容器后发现密码已经更改为123456hhh
,但是原来的数据还在
回滚
首先使用helm history redis -n redis
查看历史版本
1 |
|
回滚成功
回滚后密码又改了回去
删除
执行helm delete redis -n redis
删除,删除后发现PVC还在
这里使用helm uninstall redis -n redis
删除也不会删的PVC,delete
和uninstall
的区别如下
helm delete 是 helm uninstall 的别名
执行 helm uninstall … 不仅会删除 pod,还会删除 helm 在安装Chart时创建的所有资源。 对于单个 pod,这可能与使用 kubectl delete 没有任何不同…但是当您有数十或数百个不同的资源和依赖Chart时,通过 kubectl delete 手动完成所有这些…变得麻烦、耗时且容易出错。
一般来说,如果您要从集群中删除某些内容,请使用与最初安装它相同的方法。 也就是说,如果您使用 helm install 或 helm upload –install 将其安装到集群中,请使用 helm uninstall 将其删除(如果您仍在运行 Helm v2,则使用 helm delete –purge); 如果您使用 kubectl create 或 kubectl apply,请使用 kubectl delete 将其删除。