当前位置:   article > 正文

K8s 之 Helm 部署 MySQL 5.7_解压mysql-1.6.9.tgz

解压mysql-1.6.9.tgz

helm

Author:rab



一、环境

# K8s版本
v1.23.6

# Docker版本
v20.10.20

# Helm版本
v3.10.3

# NFS
v4
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

说明:通过 NFS 对 MySQL 服务做数据持久化存储。这篇文章是建立在你已经掌握 Deployment、DaemonSet、Service、探针机制、PV/PVC、Secret/ConfigMap 基础上的。

二、部署

2.1 安装 NFS

1、安装 NFS Server

yum -y install rpcbind
yum -y install nfs-utils
  • 1
  • 2

2、启动 NFS Server

systemctl start nfs-server
systemctl enable nfs-server
systemctl start rpcbind
systemctl enable rpcbind
  • 1
  • 2
  • 3
  • 4

3、验证 NFS Server 是否启动

systemctl status nfs.service
  • 1

image-20231021120721591

4、配置文件共享路径

vim /etc/exports
  • 1
/home/data/app 192.168.56.0/24(rw,no_root_squash,sync)

# 说明
# /home/data/app:是要共享的目录
# 192.168.56.0/24:授权的目标主机(即允许访问共享目录的主机或IP地址范围)
# rw:表示共享是可读写的,允许客户端对共享的目录执行读取和写入操作
# no_root_squash:这个选项表示在客户端使用 root 权限(超级用户权限)访问共享目录时,不会将其权限限制为匿名用户(通常映射为"nobody")。这意味着 root 用户可以在共享目录上执行操作,而不会受到权限的限制
# sync:这个选项指定NFS服务器应该采用同步写入模式。这意味着在数据写入共享目录之前,NFS服务器会等待确认写入操作,以确保数据的稳定性和一致性。这可以降低性能,但可以提供更高的数据一致性
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5、验证 NFS Server 是否生效

showmount -e
  • 1

image-20231021121732731

2.2 安装 Helm

1、下载并上传 Helm 二进制包

Helm 二进制安装包下载地址:https://github.com/helm/helm/tags

Helm 的作用:像 CentOS 7 中的 yum 命令一样管理软件包,只不过 Helm 这儿管理的是在 K8s 上安装的各种容器应用。

tar xzf helm-v3.10.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/bin/
  • 1
  • 2

2、版本验证

helm version
  • 1

image-20230116165436895

3、Helm 命令 Tab 补全

Helm 有很多子命令和参数,为了提高使用命令行的效率,通常建议安装 helm 的 bash 命令补全脚本。

helm completion bash > .helmrc
echo "source .helmrc" >> .bashrc
  • 1
  • 2

重新登录 Linux 系统,输入 helm 命令并按 Tab 键,此时就会列出 helm 命令的选项参数。

image-20230116170328442

4、配置国内 Chart 仓库

微软仓库(推荐,基本上官网有的 chart 这里都有):http://mirror.azure.cn/kubernetes/charts/

官方仓库(官方 Chart 仓库,国内有点不好使):https://hub.kubeapps.com/charts/incubator

国内阿里云 Chart 仓库:https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update   # 类似 yum update
  • 1
  • 2
  • 3

image-20230116174458427

5、查看配置的存储库

helm repo list
helm search repo stable
  • 1
  • 2

image-20230116174731285

扩展:如何删除存储库?

helm repo remove aliyu   # 移除你指定的存储库即可
  • 1

2.3 安装 MySQL

安装完成 Helm 后,接下来就是通过 Helm 包管理工具来安装 MySQL,我们可以将这个 MySQL 服务部署在我们自定义的 namespace 中,便于后续的管理、运维,具体步骤如下。

2.3.1 创建 Namespace
kubectl create namespace helm
  • 1
2.3.2 创建 PV

NFS Server 我们 2.1 步骤已经安装完成了,接下来就是创建持久卷(PV)。

vim mysql-helm-pv.yml
  • 1
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-helm-pv
  namespace: helm
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 8Gi
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /home/data/app
    server: 192.168.56.160
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
kubectl apply -f mysql-helm-pv.yml
  • 1

执行完成后验证 PV 是否被创建:

kubectl get pv -n helm
  • 1

image-20231023101750465

2.3.3 配置 MySQL

1、下载 MySQL 安装包

# 先查可用的MySQL版本(下图部分截图)
helm search repo mysql
  • 1
  • 2

image-20231020181515267

# 下载安装包至本地
helm pull stable/mysql --version=1.6.9

# 注意:1.6.9不是MySQL的版本,而是chart的版本
  • 1
  • 2
  • 3
  • 4

image-20231020181902080

2、解压缩安装包

会解压出mysql目录,我们的一且配置都在解压出的mysql目录中。

tar xzf mysql-1.6.9.tgz
  • 1

3、指定 MySQL 镜像版本

根据实际情况来指定你的 MySQL 版本。

cd mysql && cp values.yaml values.yaml.bak && vim values.yaml
  • 1

image-20231023100705754

4、修改 MySQL 密码 root 密码

vim values.yaml
  • 1

image-20231023102610555

5、配置 Service

将 Type 设置为 NodePort,便于我们外部可请求 MySQL

并指定将 service 的 3306 端口映射到主机(Host)的 32000 端口。

vim values.yaml
  • 1

image-20231023103054641

2.3.4 部署 MySQL

以上配置完成后,接下来就是运行 MySQL 服务了。

# 进入values.yaml文件所在目录执行
helm install --name myhelm-mysql --name-template mysql -f values.yaml . --namespace helm
  • 1
  • 2

image-20231023104101470

查看是否正常运行/部署:

image-20231023105305106

2.4 MySQL 可用性验证

以上部署完成后,接下来我们可以通过自己本地的 MySQL 客户端工具来连接 MySQL,可是否可正常连接。

image-20231023105513874

小结

测试连接没问题,以上就是简单的如何通过 Helm 来部署 MySQL,更多的 Helm 配置模板配置我们在后续继续深入,本次文章就是想让你整体认识到 Helm 包管理工具在 K8s 集群中的应用/特点。

那我们如何删除由 Helm 管理的资源呢?其实很简单,只需只想以下指令即可:

  • 先列出 Helm 管理的资源

    helm list -n helm
    
    • 1

    image-20231023110118447

  • 在删除你想删除的资源即可

    会连同 deployment、service 等资源都会被删除,而且要注意的是,如果你的 PV 策略为 Recycle 时,该操作将会将你的持久化数据也一并连同删除,因此在实际生产中,为了保证我们数据的安全/完整性,我们一般会将 PV 回收策略设置为 Retain(即由我们管理员收到回收)。

    helm uninstall mysql -n helm
    
    • 1

好了,本次的内容就到此结束了,如果文中出现了相关技术性错误,欢迎批评指正!

—END

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/523661
推荐阅读
相关标签
  

闽ICP备14008679号