KubeSphere部署Mysql(有状态副本集)
部署应用的步骤:
1.确定应用属于哪种工作负载?
- 扫盲:什么是有状态副本集?
例如,部署一个mysql,如果服务挂了,K8s会自动拉起一个mysql服务,但是拉起的mysql服务仍然得有服务挂掉之前的数据。
2.新增配置集mysql-conf
[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
3.新增存储卷pvc
如果下面没有nfs-storage并且只有一个“单个节点读写”选项,则先安装nfs,参考文档https://www.cnblogs.com/hujunwei/p/16875627.html,安装完nfs后,刷新,此时就能选nfs-storage了。
![](https://img-blog.csdnimg.cn/img_convert/15270acb0162997d671415dcf4d87178.png)
点击创建即可。
4.新增工作负载
新建有状态副本集
选择镜像,这里建议选择mysql:5.7,图中用的mysql:8.0后期会遇到很多问题,例如登录不上。
设置root的用户名密码,同步主机时区,点击小对号,然后点击下一步
MYSQL_ROOT_PASSWORD=root123
挂载pvc
设置pvc对应的mysql容器的data目录,mysql的data目录:/var/lib/mysql
挂载配置文件
选择配置文件,mysql配置文件目录:/etc/mysql/conf.d,然后右下角点小对号
下一步
点击创建,也可以指定要把服务部署到哪个节点
5.新增service
工作负载创建好之后,一般会默认创建一个用于集群内部访问的service,我们可以删掉,自己创建两个,一个对内使用,一个对外使用
建议和工作负载同名
集群内部访问
直接点击创建
至此,对内的服务就创建好了,可以通过DNS访问。在自己节点上可以通过"mysql -uroot -hDNS -p",输入密码即可连接。
接着来创建对外的service
生成ip
设置nodeport
至此,对外的service就创建好了!直接用mysql客户端工具连接就行,端口是分配的端口,不是3306,ip是任意一台机器的ip。