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

在 K8s 上使用 KubeBlocks 提供的 MySQL operator 部署高可用 WordPress 站点

引言

WordPress

WordPress 是全球最流行的内容管理系统(CMS),自 2003 年发布以来,已成为网站建设的首选工具。其广泛的插件和主题生态系统使用户能够轻松扩展功能和美化外观。活跃的社区提供丰富的资源和支持,进一步降低了开发和维护的难度。

凭借易用性、灵活性和强大的社区支持,WordPress 已成为全球数百万用户的共同选择,在网站建设领域占据了重要地位。

什么是 KubeBlocks

KubeBlocks 是一个可以管理多种数据库和有状态中间件的 K8s operator,支持管理 MySQL、PostgreSQL、Redis、MongoDB、Kafka、ClickHouse、Elasticsearch 等 30 余种数据库。其原理是定义一组通用和抽象的 API(CRDs)来描述各种引擎的共同属性,在其之上,数据库厂商和开发者可以通过插件来描述不同引擎的差异。

为什么要用 KubeBlocks 来管理 WordPress

在使用 WordPress Bitnami 镜像时,虽然内置的 MariaDB 提供了一个开箱即用的数据库解决方案,但存在几方面的缺陷:

  • 高可用性限制:Bitnami 镜像中的 MariaDB 通常是单节点部署,如果节点出现问题会导致网站服务中断;内置的 MariaDB 也不具备自动故障转移机制。
  • 资源竞争:MariaDB 的数据库和网站服务部署在同一个 Pod 中,会产生资源竞争,存在资源分配难题。
  • 扩展性差:虽然 MariaDB 可以进行一定程度的扩展,但水平扩展(通过增加更多数据库实例来提升性能和容量)相对复杂,需要额外的管理和配置工具。
  • 监控与管理:内置的 MariaDB 缺乏完善的监控和管理工具,难以及时发现和解决性能问题或故障。

而使用 KubeBlocks 来部署提供 WordPress 数据库服务,可以很好解决 MariaDB 的缺陷:

  • 高可用性:可以分别为 WordPress 和数据库配置高可用方案,提高整体系统的可靠性。
  • 资源隔离:WordPress 和数据库运行在不同的 Pod 中,资源隔离性更好,避免了资源竞争。
  • 拓展性强:可以独立扩展 WordPress 和数据库的副本数,分别调整它们的资源配置。
  • 快捷管理:KubeBlocks 可以快速一键部署 WordPress 所需数据库集群,无需额外操作,且内置数据库的备份和监控功能,能提高管理效率。

快速部署

安装 KubeBlocks

KubeBlocks 提供了专属的 kbcli 命令行管理工具,如果您没有安装 KubeBlocks,也能通过几行命令轻松安装KubeBlocks。

安装前,请确保您的环境满足 KubeBlocks 的环境要求。

  1. 安装 kbcli。

    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
  2. 安装 KubeBlocks。

    kbcli kubeblocks install
  3. 检查 KubeBlocks 是否安装成功。

    kbcli kubeblocks status

您也可参考官方安装文档,查看具体操作说明。

  • 安装 kbcli
  • 安装 KubeBlocks

一键部署高可用数据库集群

在部署 WordPress 之前,首先需要部署一个数据库集群用于管理 WordPress 的后台数据,可使用 kbcli 或者 kubectl 部署集群。

  1. 创建高可用集群。

    这里我们使用 KubeBlocks apecloud-mysql addon 创建一个 MySQL 数据库作为 WordPress 的数据库。使用 kbcli 快速部署一个具有高可用多副本且达到生产环境水平的 MySQL 数据库集群。

    设置集群参数 replicas=3,以启用数据库 RaftGroup 模式,创建一个 MySQL 三副本集群。

    # 启用 addon(默认开启) kbcli addon install apecloud-mysql # 部署集群 可以设置参数,如 --set replicas=3 表示三副本 kbcli cluster create apecloud-mysql --cluster-definition=apecloud-mysql --set replicas=3
  2. 查看集群状态,等待所有相关 Pod 变为 running 状态:

    kubectl get pods

  3. 获取访问地址。

    可通过 services 访问已创建的 MySQL 集群,也可通过 Pod 直接访问。本文以通过 services 访问为例。

    执行以下命令,获取 service 地址,即apecloud-mysql.default(命名空间).svc.cluster.local (默认后缀)

    kubectl get services

WordPress 部署

配置数据库
  1. 根据实际需要,可以在数据库中创建若干用户,以便于 WordPress 进行角色管理。下面我们将创建一个 myadmin 用户作为 WordPress 安装时的主用户。

    使用以下命令以 root 身份连接 MySQL 数据库。

    kbcli cluster connect apecloud-mysql
  2. 进入数据库后,执行以下 SQL 语句创建用户并赋予权限,可根据需要设置数据库权限。

    CREATE USER 'myadmin'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%'; FLUSH PRIVILEGES; create database wordpress;

    注意

    可根据需求选择创建 secret,用于 WordPress 安装时引用,以避免明文传输密码。

  3. 执行如下命令创建mysql-secret,设置键mariadb-password=password,安装时 WordPress 会优先将该密码键值作为数据库密码,注意密码的键名必须为mariadb-password。用户名不会从该 secret 中读取。

    kubectl create secret generic mysql-secret --from-literal=mariadb-password=password
一键安装 WordPress
  1. 使用 helm install 命令安装 WordPress,同时配置前面所述参数。

    helm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress \ --set mariadb.enabled=false \ --set externalDatabase.host=apecloud-mysql.default.svc.cluster.local \ --set externalDatabase.database=wordpress \ --set externalDatabase.port=3306 \ --set externalDatabase.user="myadmin" --set externalDatabase.existingSecret="mysql-secret" \ --set replicaCount=2

    参数说明:

    • mariadb.enabled:需设置为false,将禁用 MariaDB 的安装,以使用外部数据库服务。
    • host:我们可以使用前面的 MySQL service 地址来访问 MySQL 服务,如:apecloud-mysql.default.svc.cluster.local
    • user,database,port:根据实际情况设置。
    • existingSecret:推荐使用该方式传输密码。可引用前面创建的 secret 来传输密码,以避免明文传输这些内容。注意 secret 必须包含连接密码,设置了existingSecret后,password 会被忽略。
    • password:可选设置。本文推荐使用existingSecret引用前面创建的 secret 来传输密码,避免明文传输。此外,设置了existingSecret后,password将被忽略。
    • replicaCount:代表 WordPress 实例启动 Pod 数量。
  2. 查看 Pod 运行情况 ,确保所有 Pod ready 且处于 running 状态 :

    kubectl get pods

  3. 进入 WordPress 容器,可远程连接数据库,查看 WordPress 数据库信息。

    kubectl exec -it wordpress-584444f68b-sxcss -- bash mysql -h apecloud-mysql.default.svc.cluster.local -u Wordpress

至此,你已经成功部署了 WordPress 和对应的数据库集群。

高可用性能测试

本文将通过删除其中一个 Pod 来模拟故障。

kubectl delete pod apecloud-mysql-0

可以看到 Podapecloud-mysql-0现在 ready 状态是 3/4,其中 MySQL 容器无法使用。

但并不影响正常连接数据库,且可以看到apecloud-mysql-1成为了 leader(默认是apecloud-mysql-0),这是 KubeBlocks 强大故障转移能力的体现之一。

数据库扩容测试

当出现性能瓶颈等情况,或许需要对数据库节点进行资源扩容,KubeBlocks 提供了非常方便的扩容命令,可使用 kbcli vsclae 命令轻松扩充计算资源。

kbcli cluster vscale mycluster --components=apecloud-mysql --cpu=500m --memory=500Mi

更多数据库参数设置可以参考官方文档。

相关阅读
KubeBlocks MySQL K8s Operator

http://www.jsqmd.com/news/639595/

相关文章:

  • 口碑最好的不锈钢储罐品牌推荐:这2家专业生产企业值得关注 - 品牌推荐大师
  • Qsign签名API终极指南:Windows系统一键部署完整教程
  • 第15篇:从Prompt到利润——设计高效指令的底层逻辑与心法(原理解析)
  • 河北正规的脊柱侧弯矫正中心-河北承康正脊康复中心 - 速递信息
  • 从初级到CTO:软件开发者的阶梯式成长计划
  • 2026年口碑好的全屋定制全案整装公司推荐,费用多少有谱吗 - 工业品牌热点
  • 手把手教你用Python调用某手sig3算法接口(附完整代码与避坑指南)
  • XXMI启动器终极指南:一站式管理所有二次元游戏模组的完整解决方案
  • CLIP-GmP-ViT-L-14提示词工程实践:如何撰写文本以获取最佳图文匹配结果
  • 协议兼容性崩塌、语义理解断层、边缘响应延迟——AIAgent家居控制3大致命瓶颈,今天必须解决!
  • 靠谱租车平台有哪些:2026年平台合规性、履约能力与用户安全保障全解析 - 科技焦点
  • IguanaTex:让PowerPoint演示文稿拥有专业LaTeX公式排版
  • 从一次真实的炸板经历说起:隔离变压器、差分探头、拔地线,开关电源调试三件套到底怎么选?
  • 5分钟快速上手PPTist:功能最全的开源在线PPT编辑器终极指南
  • 复旦微FM33 MCU 底层开发指南——总集篇
  • MATLAB版本冲突?边缘检测NMS后处理与PR曲线绘制的完整避坑指南
  • 有实力的香洲、横琴别墅全屋定制公司盘点,专业公司怎么选 - 工业品网
  • 聊聊新房装修靠谱公司怎么选,这些要点要牢记 - 工业品牌热点
  • LingBot-Depth实战:用普通摄像头实现激光雷达级3D重建
  • 从零搭建xArm6 ROS开发环境:Ubuntu 16.04 + xarm_ros + MoveIt! 保姆级教程
  • Move Mouse终极防休眠指南:如何让电脑始终保持唤醒状态
  • 2026年租车哪家靠谱:资质认证、免押门槛与纠纷处理能力深度解析 - 科技焦点
  • 手把手教你用QGIS加载GLC_FCS30-2020土地覆盖数据(附配色方案与精度验证)
  • 深入解析PX4开源飞控:从架构设计到固定翼实战开发的完整指南
  • 2026ROHS测试仪哪家好?泓盛仪器—技术硬核+价格亲民 - 品牌推荐大师1
  • 终极dots.ocr性能优化指南:10个提升解析速度和准确性的实用技巧
  • AIAgent从POC到规模化落地的最大陷阱:未做成本敏感性建模就选型——用Monte Carlo仿真预判3种架构路径的3年TCO差异
  • QCustomPlot多个y轴一个x轴、实时绘制多条曲线
  • PPTist:如何在5分钟内创建专业演示文稿?这个开源工具让你告别传统PPT软件
  • CDS API完整指南:3步获取全球气象数据的Python解决方案