专栏首页小手冰凉helm——工具使用举例

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 

返回的信息如下,可以看到镜像的版本已经回滚到初次创建的版本了,如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • K8s——MySQL实现数据持久化

    5、创建pod+svc(service) 这个pod是提供的MySQL服务,并将其映射到宿主机,可以做和client端通信

    小手冰凉
  • MySQL 之数据备份及恢复

    MySQL备份一般采用全库备份加日志备份的方式,根据业务的需要,可以采用每周日凌晨1点进行完全备份以及每小时进行一次增量备份,这样在MySQL故障后可以使用完全...

    小手冰凉
  • K8s 安装部署

    k8s为什么叫k8s呢? 因为k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s。 k8s最初是在Google公司内部使用了10...

    小手冰凉
  • docker搭建MediaWiki

    MediaWiki 是 Wikipedia 使用的网站解决方案的开源版,以个人观点来看,Wiki 在这个时代显得不够时尚,且不支持 MarkDown 等新兴的标...

    py3study
  • MySQL 在 Windows 下安装教程、避坑指南

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,2008 年被 SUN 公司收购,后 SUN 公司又被 Oracle 公司收购。

    丹枫无迹
  • mysql架构由小变大的演变过程

    老七Linux
  • 把MySQL放进docker总共分几步

    把MySQL放进Docker,总共需要几步?本次就通过社区版容器安装2个mysql实例,看一下部署有多简单。

    July
  • 连接远程Ubuntu服务器的MySQL

    -u 表示选择登陆的用户名, -p 表示登陆的用户密码,现在是mysql数据库是没有密码的,Enter password:处直接回车,就能够进入mysql数据库...

    深浅无解
  • Docker 19.03 设置Docker Hub镜像地址

    在 Docker 19.03 中,通过修改/etc/default/docker文件:

    TLingC
  • nacos配置问题

    当你加了数据库配置持久化后,启动失败。在确定路径和数据库名,没写错的情况下,还是启动不了。 用下划线,而不是横杠-。这样我就启动不起来,崩溃。dalao_co...

    崔笑颜

扫码关注云+社区

领取腾讯云代金券