KubeSphere部署Mysql有状态副本集

首先我们知道以前使用docker部署有状态应用时都会将应用的配置文件和数据挂载到宿主机,例如docker启动mysql命令:

docker run -p 3306:3306 --name isee-mysql \
-v /db/mysql/log:/var/log/mysql \
-v /db/mysql/data:/var/lib/mysql \
-v /db/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
-d mysql:5.7
参数解析:
docker run:固定写法
-p 3306:3306:指定端口,其中:左边的的3306指的是宿主机暴露的端口,:右边的3306指的是mysql的访问端口
-v:挂载数据,同样左边是宿主机的地址,右边是容器内地址
-e:环境变量
MYSQL_ROOT_PASSWORD:mysql密码为root
-d:守护式方式创建容器
1.创建mysql的配置

1):登录kubesphere,找到:工作台—>企业空间,在企业空间下找到自己的项目,点击进去,找到:配置中心—>配置—>创建,然后输入内容,点击下一步:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里的key怎么填呢?我们可以到docker hub上找到mysql镜像,里面有说明:https://hub.docker.com/_/mysql

在这里插入图片描述
说mysql的默认配置文件是:/etc/mysql/my.cnf,当然还有可能有其他目录也有配置文件:/etc/mysql/conf.d或/etc/mysql/mysql.conf.d

那么我们这里的key就填写:my.cnf
value如下:

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_unicode_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

点击√—>创建。

2.创建mysql的持久卷挂载

同样在项目下找到:存储管理—>存储卷—>创建,然后输入内容,点击下一步:
在这里插入图片描述
存储类型:选择默认存储类型,因为小编的k8s的存储类型安装的OpenEBS;
访问模式:单节点读写,一般有状态服务是单节点读写,无状态服务是选择多节点读写;
存储卷容量:我这里选择1G,也可以选择大一点;
在这里插入图片描述

ps:这里建议不提前创建,而是在创建工作负载的时候创建存储卷。
这样做的话,将来我们将mysql部署为多份的时候会每个mysql都使用自己的存储卷,而使用提前创建好的话,即使将来部署多份mysql使用的都是同一份存储卷

点击下一步,然后直接点击创建。

3.创建工作负载

工作负载有三种:部署、有状态副本集、守护进程集
部署:部署无状态应用的时候选择此;
有状态副本集:部署有状态应用的时候选择此;
守护进程集:例如部署一些日志收集之类的应用;

(1)基本信息:

在项目中找到:应用负载—>工作负载—>有状态副本集—>创建,输入内容:
在这里插入图片描述
(2)容器镜像:

输入mysql要使用的镜像:mysql:5.7.35,会自动去DockerHub搜索镜像;
点击使用默认端口。
在这里插入图片描述
配置mysql的资源,cpu和内存,这里同学们可以自己设置大一些;服务端口使用默认;
在这里插入图片描述
配置环境变量:
MYSQL_ROOT_PASSWORD:固定写法;
root表示mysql的密码

勾选同步主机时区。
在这里插入图片描述
点击下一步:

(3)挂载存储:
在这里插入图片描述
因为之前我们已经创建好了存储卷,所以我们直接点击添加存储卷—>z选择已有存储卷;
若是没有提前创建存储卷可以点击上面的:添加存储卷模板;

在这里插入图片描述
容器挂载路径:/var/lib/mysql
在mysql官方镜像中有说明:
在这里插入图片描述
点击√,然后挂在配置文件或密钥:
在这里插入图片描述
选择之前创建好的配置文件:
选择只读;
填写配置文件在容器的挂载路径:/etc/mysql/conf.d(这个目录也是在官方镜像有说明的)
在这里插入图片描述
然后点击下一步,直接点击创建;

4.暴露服务

创建完工作负载之后,我们的mysql可以在k8s集群内部进行访问,但是在集群外访问不通,也就是说此时我们使用客户端去连接mysql是连接不上的。

在应用负载下的服务中可以看到有一个服务,这个服务是我们刚才创建工作负载的时候帮我们创建的。
在这里插入图片描述
那么如何才能让我们的mysql可以进行外部访问呢?

可以将刚才自动创建的服务删掉,但是删除的时候不要勾选有状态副本集,因为勾选之后就将我们刚才创建的工作副本一起删除了;

当然也可以不删除,然后重新创建一个服务。

这里小编是删除了原来的服务。

找到:应用负载—>服务—>创建—>指定工作负载;
在这里插入图片描述
如下图所示:
访问类型:选择第一个Virtual IP;
点击指定工作负载:选择有状态副本集(即刚创建的mysql),点击确定;
填写端口,;
在这里插入图片描述
下一步:
在这里插入图片描述
点击创建。

在这里插入图片描述
其中30144端口就是我们暴露出去的端口,也就是说使用客户端连接mysql的时候使用这个端口进行连接。

我们点击刚才创建的服务,进去可以看到:DNS
我们在集群内部可以使用DNS访问mysql;
在这里插入图片描述
我们可以试一下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/RookiexiaoMu_a/article/details/120605818