通过Kubernetes安装mysql5服务
以下是清晰、结构化的操作流程优化说明,按步骤梳理从部署到配置持久化、暴露服务的完整过程:
一、基础部署:快速验证 MySQL 可用性
创建有状态工作负载
进入 KubeSphere 项目 → 工作负载 → 有状态副本集 → 创建,选择 通过镜像创建,填写:- 名称:
mysql-5.7
(自定义,便于识别) - 镜像:
docker.1ms.run/bitnami/mysql:5.7.26
(Bitnami 封装的 5.7.26 版本) - 容器端口:暴露
3306
(TCP 协议,MySQL 默认端口) - 环境变量:设置
MYSQL_ROOT_PASSWORD=123456
(Root 密码,测试场景简化配置)
无需额外存储 / 配置,快速部署验证容器启动是否正常。
- 名称:
二、数据持久化:挂载卷防止数据丢失
理解核心需求
Bitnami MySQL 镜像的数据目录为/bitnami/mysql/data
,删除容器时该路径数据会丢失。需挂载 持久卷(PV/PVC) 留存数据。配置存储挂载
编辑工作负载 → 存储设置 → 添加存储卷:- 类型:选择 PVC(持久卷声明),若集群无可用 PVC,可直接创建新 PVC(如
mysql-data-pvc
)。 - 挂载路径:
/bitnami/mysql/data
(严格匹配 Bitnami 数据目录,确保数据持久化)。
说明:若挂载空目录,首次启动会自动初始化数据库;若已有数据备份,可提前写入 PVC 路径,容器启动会直接加载。
- 类型:选择 PVC(持久卷声明),若集群无可用 PVC,可直接创建新 PVC(如
三、配置自定义:注入 my.cnf 覆盖 / 扩展配置
配置字典(ConfigMap)准备
项目内 → 配置中心 → 配置字典 → 创建,通过 YAML 或表单添加my.cnf
内容:yaml
data:my.cnf: |[mysqld]lower_case_table_names=1max_connections=1000# 其他自定义参数...
挂载配置到容器
编辑工作负载 → 存储设置 → 挂载配置字典:- 选择刚创建的
ConfigMap
(如mysql-config
)。 - 挂载路径:
- 若需覆盖默认配置,挂载到
/opt/bitnami/mysql/conf/my.cnf
(替换镜像原生配置文件)。 - 若需扩展默认配置,挂载到
/opt/bitnami/mysql/conf.d/custom.cnf
(Bitnami 镜像会自动加载conf.d
目录下的.cnf
文件)。
- 若需覆盖默认配置,挂载到
- 选择刚创建的
四、对外暴露服务:从集群外访问 MySQL
创建 NodePort 服务
项目内 → 服务 → 创建 → 无 selector 服务 / 关联工作负载,选择:- 关联工作负载:
mysql-5.7
(匹配之前创建的有状态副本集) - 端口设置:
- 协议:TCP
- 服务端口:
3306
(集群内访问端口,可自定义) - 目标端口:
3306
(容器内 MySQL 监听端口) - NodePort:自动分配(范围
30000-32767
,或手动指定)。
- 关联工作负载:
验证外部访问
通过集群节点 IP + NodePort 访问,使用mysql -h IP地址 -P 30000 -u root -p
测试连接,输入密码123456
验证登录。
五、完整流程总结
- 快速验证:用最简配置部署有状态工作负载,确认容器启动正常。
- 数据安全:挂载 PVC 到
/bitnami/mysql/data
,保障数据不随容器删除丢失。 - 配置定制:通过 ConfigMap 挂载
my.cnf
到conf
或conf.d
目录,灵活覆盖 / 扩展 MySQL 配置。 - 外部访问:创建 NodePort 服务,通过集群节点 IP + 端口对外提供 MySQL 访问,完成部署闭环。
此流程适配 Bitnami 镜像的特殊路径要求(数据目录、配置加载逻辑),确保每一步配置都能精准生效,避免因路径不匹配导致的配置失效问题。