写点什么

helm 部署 mysql

作者:程序员欣宸
  • 2022-11-23
    广东
  • 本文字数:1537 字

    阅读完需:约 5 分钟

helm部署mysql

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于 helm 部署 mysql

  • 如果您的 kubernetes 已有 helm,那么部署 mysql 的步骤可用 helm 来简化,原先需要自己动手配置的 deployment 和 service 都已集成在 chart 中,今天就来实战通过 helm 部署 mysql,并且将之前遇到的问题和解决方法列出来;

环境信息

  1. 硬件:三台 CentOS 7.7 服务器

  2. kubernetes:1.15

  3. helm:2.16.1

  4. mysql:5.7.14

关于 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 ,连接和验证操作如下图所示:

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-11-23阅读数: 27
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
helm部署mysql_Helm_程序员欣宸_InfoQ写作社区