当前位置: 首页 > java >正文

通过Kubernetes安装mysql5服务

以下是清晰、结构化的操作流程优化说明,按步骤梳理从部署到配置持久化、暴露服务的完整过程:

一、基础部署:快速验证 MySQL 可用性

  1. 创建有状态工作负载
    进入 KubeSphere 项目 → 工作负载 → 有状态副本集 → 创建,选择 通过镜像创建,填写:

    • 名称:mysql-5.7(自定义,便于识别)
    • 镜像:docker.1ms.run/bitnami/mysql:5.7.26(Bitnami 封装的 5.7.26 版本)
    • 容器端口:暴露 3306(TCP 协议,MySQL 默认端口)
    • 环境变量:设置 MYSQL_ROOT_PASSWORD=123456(Root 密码,测试场景简化配置)

    无需额外存储 / 配置,快速部署验证容器启动是否正常。

二、数据持久化:挂载卷防止数据丢失

  1. 理解核心需求
    Bitnami MySQL 镜像的数据目录为 /bitnami/mysql/data,删除容器时该路径数据会丢失。需挂载 持久卷(PV/PVC) 留存数据。

  2. 配置存储挂载
    编辑工作负载 → 存储设置 → 添加存储卷

    • 类型:选择 PVC(持久卷声明),若集群无可用 PVC,可直接创建新 PVC(如 mysql-data-pvc)。
    • 挂载路径:/bitnami/mysql/data(严格匹配 Bitnami 数据目录,确保数据持久化)。

    说明:若挂载空目录,首次启动会自动初始化数据库;若已有数据备份,可提前写入 PVC 路径,容器启动会直接加载。

三、配置自定义:注入 my.cnf 覆盖 / 扩展配置

  1. 配置字典(ConfigMap)准备
    项目内 → 配置中心 → 配置字典 → 创建,通过 YAML 或表单添加 my.cnf 内容:

    yaml

    data:my.cnf: |[mysqld]lower_case_table_names=1max_connections=1000# 其他自定义参数...
    
  2. 挂载配置到容器
    编辑工作负载 → 存储设置 → 挂载配置字典

    • 选择刚创建的 ConfigMap(如 mysql-config)。
    • 挂载路径:
      • 若需覆盖默认配置,挂载到 /opt/bitnami/mysql/conf/my.cnf(替换镜像原生配置文件)。
      • 若需扩展默认配置,挂载到 /opt/bitnami/mysql/conf.d/custom.cnf(Bitnami 镜像会自动加载 conf.d 目录下的 .cnf 文件)。

四、对外暴露服务:从集群外访问 MySQL

  1. 创建 NodePort 服务
    项目内 → 服务 → 创建 → 无 selector 服务 / 关联工作负载,选择:

    • 关联工作负载:mysql-5.7(匹配之前创建的有状态副本集)
    • 端口设置:
      • 协议:TCP
      • 服务端口:3306(集群内访问端口,可自定义)
      • 目标端口:3306(容器内 MySQL 监听端口)
      • NodePort:自动分配(范围 30000-32767,或手动指定)。
  2. 验证外部访问
    通过集群节点 IP + NodePort 访问,使用 mysql -h IP地址 -P 30000 -u root -p 测试连接,输入密码 123456 验证登录。

五、完整流程总结

  1. 快速验证:用最简配置部署有状态工作负载,确认容器启动正常。
  2. 数据安全:挂载 PVC 到 /bitnami/mysql/data,保障数据不随容器删除丢失。
  3. 配置定制:通过 ConfigMap 挂载 my.cnf 到 conf 或 conf.d 目录,灵活覆盖 / 扩展 MySQL 配置。
  4. 外部访问:创建 NodePort 服务,通过集群节点 IP + 端口对外提供 MySQL 访问,完成部署闭环。

此流程适配 Bitnami 镜像的特殊路径要求(数据目录、配置加载逻辑),确保每一步配置都能精准生效,避免因路径不匹配导致的配置失效问题。

http://www.xdnf.cn/news/19065.html

相关文章:

  • 深入解析Qt节点编辑器框架:数据流转与扩展机制(三)
  • 4. LangChain4j 模型参数配置超详细说明
  • 机器学习回顾——线性回归
  • Redis红锁(RedLock)解密:分布式锁的高可用终极方案
  • DBeaver中禁用PostgreSQL SSL的配置指南
  • 【性能优化】Unity 渲染优化全解析:Draw Call、Batch、SetPass 与批处理技术
  • 【Django】首次创建Django项目初始化
  • “帕萨特B5钳盘式制动器结构设计三维PROE模型7张CAD图纸PDF图“
  • 人工智能基础概念
  • 秋招笔记-8.28
  • 总结:在工作场景中的应用。(Excel)
  • Dify学习
  • 响应式编程框架Reactor【1】
  • Python 多版本环境治理理念驱动的系统架构设计——三维治理、四级隔离、五项自治 原则(路径治理升级修订 V 2.0 版)
  • 【深度学习新浪潮】显著性检测最新研究进展(2022-2025)
  • 上线问题——Mac系统下如何获取鸿蒙APP证书公钥和MD5指纹
  • 高并发内存池(14)- PageCache回收内存
  • Node.js的特性
  • 损失函数,及其优化方法
  • JS中的String总结
  • 2002-2020年全国投入产出表数据
  • Python 中的反射机制与动态灵活性
  • 实测阿里图像编辑模型Qwen-Image-Edit:汉字也能无痕修改(附实测案例)
  • react+vite+ts 组件模板
  • DAY-16-数组的常见操作和形状-2025.8.28
  • FISCO-BCOS-Python 模板
  • RAG概念被误用:AI应用落地需回归上下文工程本质
  • 解锁AI“黑匣”:监督、无监督与强化学习探秘
  • 切入高潜市场,抢占行业先机!ES SHOW 2025展位预订火爆,10月28-30日共启增长新蓝海
  • flutter Function和自定义的Callback有什么区别?