如果您的kubernetes已有了helm,那么部署mysql的步骤能够进一步简化,那些原先须要本人入手配置的deployment和service都已集成在chart中,明天就来实战通过helm部署mysql,并且将之前遇到的问题抛出来给大家参考;

环境信息

  1. 硬件:三台CentOS 7.7服务器
  2. kubernetes:1.15
  3. helm:2.16.1
  4. mysql:

对于helm

kubernetes环境helm的部署和基本操作请参考《》

下载chart包

  • 执行helm search mysql看看chart仓库有没有mysql,如下图,红框中就是咱们须要的chart:

  • 执行helm fetch stable/mysql,会在当前目录生成文件mysql-0.3.5.tgz
  • 执行tar -zxvf mysql-0.3.5.tgz,解压后生成文件夹mysql
  • 进入mysql文件夹,关上values.yaml文件,按须要进行设置
  • 如下图所示,红框1能够抉择mysql镜像的TAG,红框2来设置root账号的明码,留神明码的字符串要加双引号:

  • 下图红框1是对存储卷容量的需要,,红框2是内存需要,红框3是CPU需要,请依照理论状况调整:

  • 如果您想对mysql做更多配置,就波及到配置文件mysql.cnf,仍然是在values.xml中配置,如下图红框所示,这里设置的是字符集:

  • 下图红框中是Service的设置,可见默认类型是CluesterIP,这个类型无奈在内部拜访,须要做批改:

  • 批改后的Service配置如下图红框所示,类型改成了NodePort,内部端口是32000:

  • 创立名为test001的namespace:
kubectl create namespace test001
  • 接下来要配置的是msyql数据的存储,咱们分两种状况实际来探讨;

应用本机数据卷

  • 如果您是在单机上部署kubernetes,那么msyql数据存储在宿主机是最简略的计划
  • 在宿主机创立一个文件夹,例如/root/k8s-mysql-data,给此文件夹读写权限
  • 进入templates目录,关上deployment.yaml,在文件的最开端能够看到存储的配置,如下图红框所示:

  • 上图红框中的内容,批改后如下图红框所示,名为data的数据卷是个本地文件夹:

  • 至此,配置结束,上面一节是对于网络数据卷配置的,您要是用了本地存储能够跳过下一节"应用网络存储",进入部署msyql的阶段。

应用网络存储

如果您的kubernetes是集群环境,举荐应用NFS作为MySql的数据存储卷,具体操作如下:

  • NFS的server端,在/etc/exports文件上配置MySql用的NFS文件夹时,其属性要用no_root_squash,如下图红框所示,不这么设置会在MySql启动时呈现文件夹权限问题:

  • 上述配置实现后,执行命令exportfs -arv使配置失效
  • 接下来筹备PV,创立文件pv-mysql.yaml,内容如下,192.168.133.142时NFS的server地址,/usr/local/work/mysql是方才设置的属性为no_root_squash的NFS文件夹:
apiVersion: v1kind: PersistentVolumemetadata: name: mysql namespace: test001spec: capacity:   storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Recycle nfs:   path: /usr/local/work/mysql   server: 192.168.133.142
  • 执行以下命令创立PV:
kubectl create -f pv-mysql.yaml
  • 查看PV是否创立胜利:

  • 存储筹备结束,能够开始部署MySql了

部署mysql

  • 在values.yaml所在目录,执行以下操作即可部署mysql,应用的namespace是test001:
helm install --name-template mysql -f values.yaml . --namespace test001
  • 查看pod创立是否胜利:

  • 查看service是否失常:

  • 至此,MySql部署胜利,应用了宿主机的32000端口,接下来近程连贯到此MySql试试;

验证mysql

在另外一台电脑上近程连贯MySql服务,我这里是在一台Ubuntu上用mycli工具连贯的,MySql宿主机IP地址是192.168.133.149,端口是32000,明码123456,连贯和验证操作如下图所示:

https://github.com/zq2599/blog_demos