helm——工具使用举例
时间:2022-07-25
本文章向大家介绍helm——工具使用举例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、helm支持的四种安装方法
- 安装仓库中的chart包,命令举例:helm install stable/xxx;
- 通过tar包安装,命令举例:helm install xxx-1.tgz(不推荐使用);
- 通过chart本地目录安装,命令举例:helm install xxx/xxx(一般是使用helm fetch stable/xxxxx 下载相应的模板,然后使用tar zxf 解压,修改解压后的目录中的valumes.yaml文件中的值,就是自定义服务了,这种方式比较常用);
- 通过URL安装,不太常用,命令举例:helm install https://xxxx/charts/xxx-1.gz 。
二、自定义Chart包举例
//创建testchart包
[root@docker-k8s01 ~]# helm create testchart
//可以看到生成的目录下各种模板都有了,根据业务需求进行更改即可
[root@docker-k8s01 ~]# tree testchart/
testchart/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
[root@docker-k8s01 ~]# helm install testchart/ --dry-run --debug
//“--dry-run”:模拟安装;“--debug” :检测输出
//执行上述命令后,即可输出该目录模板的yaml文件内容
//对该目录的内容进行语法检测
[root@docker-k8s01 ~]# helm lint testchart/
==> Linting testchart/
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, no failures
https://hub.helm.sh/ ,这是一个helm模板仓库的网站,上面有大量的helm模板,可以自行查看。
三、运行一个MySQL服务进行示例
1、部署NFS服务
[root@docker-k8s01 ~]# yum -y install nfs-utils
[root@docker-k8s01 ~]# cat /etc/exports
/nfsdata *(rw,sync,no_root_squash)
[root@docker-k8s01 ~]# systemctl restart rpcbind
[root@docker-k8s01 ~]# systemctl restart nfs-server
[root@docker-k8s01 ~]# showmount -e
Export list for docker-k8s01:
/nfsdata *
2、创建一个PV
[root@docker-k8s01 ~]# cat mysql-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 8Gi
persistentVolumeReclaimPolicy: Retain
nfs:
path: /nfsdata/mysql-pv //指定本地的挂载目录
server: 192.168.171.151
[root@docker-k8s01 ~]# mkdir -p /nfsdata/mysql-pv
[root@docker-k8s01 ~]# kubectl apply -f mysql-pv.yaml
//确定pv运行状态
[root@docker-k8s01 ~]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
mysql-pv 8Gi RWO Retain Available 3s
3、helm部署MySQL
//在线安装MySQL,并设置mysql的root密码为123.com,“-n”表示指定其名称
[root@docker-k8s01 ~]# helm install stable/mysql --set mysqlRootPassword=123.com -n test-mysql
//使用helm查看
[root@docker-k8s01 ~]# helm list
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
test-mysql 1 Sun Dec 1 21:22:56 2019 DEPLOYED mysql-0.3.5 default
[root@docker-k8s01 ~]# kubectl get pod -o wide #查看mysql所对应的pod
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test-mysql-mysql-dfb9b6944-4kmgv 1/1 Running 0 9m16s 10.244.2.2 node02 <none> <none>
//可以登录数据库进行测试
[root@dokcer-k8s01 ~]# kubectl exec -it test-mysql-mysql-dfb9b6944-4kmgv -- mysql -uroot -p123.com
当install安装后,会输出一些提示信息,其中就包括了查看MySQL数据库密码的命令,如果没有使用“--set”命令设置数据库的root密码,那么可以通过此命令查看出默认的数据库root与用户密码,提示命令如下:
也可以通过以下命令查看到关于test-mysql实例的详细状态信息
//查看test-mysql的实例信息
[root@docker-k8s01 ~]# helm status test-mysql
//在线升级MySQL镜像操作
[root@docker-k8s01 ~]# helm upgrade --set imageTag=5.7.16 test-mysql stable/mysql
#其中test-mysql是实例名称;
#还是需要指定初次运行时指定的stable/mysql文件,如果初次运行时指定的是目录,那么这里就换成目录
#验证镜像是否更新成功
[root@docker-k8s01 ~]# kubectl describe pod test-mysql-mysql-68484cd8db-59wm5
上述命令执行后,输出的结果如下(可以看到镜像的版本已经更新):
[root@docker-k8s01 ~]# helm list #再次查看实例,可以发现“REVISION”字段为2,而初次创建实例时,该列为1,
#每更新一次,该数值就会+1.
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
test-mysql 2 Sun Dec 1 21:53:00 2019 DEPLOYED mysql-0.3.5 default
[root@docker-k8s01 ~]# helm history test-mysql #查看该实例的历史版本
REVISION UPDATED STATUS CHART DESCRIPTION
1 Sun Dec 1 21:22:56 2019 SUPERSEDED mysql-0.3.5 Install complete
2 Sun Dec 1 21:53:00 2019 DEPLOYED mysql-0.3.5 Upgrade complete
//进行test-mysql实例的版本回滚
[root@docker-k8s01 ~]# helm rollback test-mysql 1 #回滚到版本1
Rollback was a success.
[root@docker-k8s01 ~]# helm list #再次查看,可以看到“REVISION”的值变成了3
NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE
test-mysql 3 Sun Dec 1 22:12:25 2019 DEPLOYED mysql-0.3.5 default
#查看MySQL对应的容器详细信息
[root@docker-k8s01 ~]# kubectl describe pod test-mysql-mysql-dfb9b6944-8hfj4
返回的信息如下,可以看到镜像的版本已经回滚到初次创建的版本了,如下:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ABAP面试问题 - 不使用加减乘除等操作比较两个整数大小
- SAP订单上Shipping抬头和行项目字段的持久化实现原理
- SAP CRM订单模型CRMD_SHIPPING的单元测试方法
- 给SAP WebClient UI的表格行项目增添PDF预览功能
- 如何将ABAP透明表的内容导入PostgreSQL数据库
- 使用代理模式改善SAP UI5应用的图片加载体验
- 如何使用ABAP open SQL的locator
- dotnet 新 SDK Style 项目格式如何使用 InternalsVisibleToAttribute 功能
- WPF dotnet core 如何开启 Pointer 消息的支持
- web Storage的特点
- 四、实现跨域访问
- hadoop集群搭建
- java和node.js使用md5算法实现对数据的加密与加盐操作
- 反射--调用构造方法
- ABAP,Java和JavaScript的local class