资讯中心

3步搞定k8swordpressmysql部署实战案例

📅 2026/9/28 0:32:38
3步搞定k8swordpressmysql部署实战案例

3步搞定k8swordpressmysql部署实战案例

网站做好了没人访问?别急着怪SEO,先看看你的架构稳不稳。我见过太多河南老板花大钱做的站,一遇流量高峰就崩,或者因为环境配置问题导致内容加载极慢,用户进来两秒就走了。这根本不是内容问题,是底层技术没搭对。今天不聊虚的,直接上实战案例,手把手教你用 K8s 部署 WordPress 和 MySQL,把稳定性拉满。这套方案不是给大厂玩的,而是专门给咱们中小企业定制的高可用架构,成本可控,扩展性强。

需求分析与架构选型

很多老板一上来就问:“为什么我要用 K8s?我买个云服务器装个宝塔不行吗?”能行,但那是“能行”,不是“好行”。在郑州、洛阳这些正在快速数字化转型的河南城市,企业官网往往承载着获客核心职能。如果网站因为单点故障挂了半小时,你损失的不仅是流量,更是客户信任。

传统单机部署 WordPress + MySQL 最大的痛点在于“耦合”和“不可靠”。应用和数据库挤在一个盒子里,一旦服务器资源吃紧,数据库一慢,整个网站就卡死。而且没有备份机制,一旦硬盘坏了,数据全丢。

为什么选 K8s(Kubernetes)?

  1. 自愈能力:Pod 挂了自动重启,节点挂了自动迁移。
  2. 弹性伸缩:流量来了自动扩容,流量走了自动缩容,省钱。
  3. 环境一致性:开发、测试、生产环境完全一致,减少“在我电脑上没问题”这种扯皮。

但 K8s 学习曲线陡峭,直接裸跑 K8s 对中小企业不友好。我们的实战案例策略是:使用轻量级 K8s 发行版(如 K3s 或托管 K8s),结合 Helm Chart 来标准化部署 WordPress 和 MySQL。这样既享受了容器化的好处,又降低了运维门槛。

对于河南的中小企业,我建议起步阶段不要追求过于复杂的微服务架构。一个高可用的 WordPress + MySQL 集群,足以支撑日均 10万 PV 以下的业务。重点是解决“稳”和“快”的问题,而不是搞一堆看不懂的组件。

环境准备与基础配置

工欲善其事,必先利其器。在动手之前,你需要准备好以下环境。这里以阿里云为例,因为国内网络环境下,阿里云的 K8s 服务(ACK)文档完善,且符合 ICP 备案要求。

硬件与网络要求:

  • K8s 集群:至少 3 个节点(Master 1 + Worker 2),建议配置 4核 8G 内存以上。如果是测试环境,2节点也可以,但生产环境强烈建议 3 节点起步,保证高可用。
  • 存储:MySQL 必须有持久化存储(PV/PVC)。建议使用阿里云云盘(ESSD),IOPS 要高,否则数据库写入会成为瓶颈。
  • 网络:确保节点之间内网互通,端口 6443 (API Server), 10250 (kubelet) 等开放。

关键步骤:获取证书与配置上下文

K8s 的安全基于证书。很多新手卡在证书过期或配置错误上。根据阿里云官方文档的建议,生产环境必须使用 CA 签发的证书,严禁使用自签名证书用于长期运行,因为自签名证书无法被标准客户端信任,且管理混乱。

  1. 获取 kubeconfig: 登录阿里云 ACK 控制台,点击集群详情,下载 kubeconfig 文件。这个文件包含了集群的 API 服务器地址、CA 证书、客户端证书和密钥。

    # 将下载的 kubeconfig 移动到默认目录
    mkdir -p ~/.kube
    mv kubeconfig ~/.kube/config
    chmod 600 ~/.kube/config
    
  2. 验证集群状态:

    kubectl get nodes
    

    如果看到所有节点状态为 Ready,说明基础环境 OK。

  3. 命名空间隔离: 为了干净起见,我们创建一个专门的 namespace 来部署 WordPress 业务。

    kubectl create namespace wordpress-prod
    

注意:证书有效期通常为 1 年。你需要设置日历提醒,提前一个月开始规划续签或轮换。如果是托管 K8s,这部分由云厂商托管,你只需关注应用层证书(如 SSL 证书)。

核心部署步骤:Helm 安装 WordPress

手动写 YAML 部署 WordPress 和 MySQL 既繁琐又容易出错。我们使用 Helm,它是 K8s 的包管理器,就像 Linux 里的 apt 或 yum。

第一步:添加 Bitnami Helm 仓库

Bitnami 提供了经过广泛测试的 WordPress Chart,包含自动化的备份和恢复策略。

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

第二步:创建 values.yaml 配置文件

不要直接运行 helm install,我们需要自定义配置。创建一个 wordpress-values.yaml 文件,这是整个部署的核心。

# wordpress-values.yaml
image:tag: "6.5.3"  # 指定 WordPress 版本,保持稳定版pullPolicy: IfNotPresentservice:type: ClusterIP  # 内部访问,通过 Ingress 暴露port: 80ingress:enabled: truehostname: www.yourdomain.com  # 替换为你的域名path: /pathType: ImplementationSpecifictls: truehosts:- host: www.yourdomain.compaths:- path: /pathType: ImplementationSpecific# 关键:数据库配置
mariadb:# 如果不想在同一个集群内部署数据库,可以改为 external# 但为了实战案例简化,这里使用内置 MariaDB (兼容 MySQL)enabled: trueauth:database: wordpress_dbusername: wp_userpassword: YourStrongPassword123!  # 务必修改为强密码rootPassword: YourRootPassword123!primary:persistence:enabled: truesize: 20Gi  # 数据库存储大小,根据预期数据量调整storageClass: alicloud-disk-essd  # 阿里云 ESSD 存储类# WordPress 配置
primary:persistence:enabled: truesize: 10GistorageClass: alicloud-disk-essdresources:limits:cpu: 500mmemory: 512Mirequests:cpu: 250mmemory: 256Mi# 自动扩展配置 (HPA)
autoscaling:enabled: trueminReplicas: 2maxReplicas: 5targetCPUUtilizationPercentage: 70

第三步:执行安装

helm install wp-prod bitnami/wordpress \-f wordpress-values.yaml \-n wordpress-prod

第四步:配置 Ingress Controller

如果你使用的是阿里云 ACK,需要确保 Nginx Ingress Controller 已安装,并且绑定了 SLB(负载均衡器)。

# 检查 Ingress 状态
kubectl get ingress -n wordpress-prod

你通常会看到类似这样的输出: wp-prod wordpress-prod 192.168.1.10 www.yourdomain.com 80 2023-10-27 10:00:00 1d

此时,将你的域名 DNS A 记录解析到 Ingress 的 ADDRESS 列显示的 IP 地址(通常是 SLB 的公网 IP)。

代码/配置示例与数据持久化

很多老板担心:“容器化了,数据存哪?重启会不会丢?”

这就是 PV (Persistent Volume) 和 PVC (PersistentVolumeClaim) 的作用。在上面的 values.yaml 中,我们开启了 persistence: enabled。这意味着 Helm 会自动创建 PVC,并绑定到后端存储(如阿里云云盘)。

验证数据持久性:

  1. 访问你的网站,安装 WordPress,创建一篇测试文章。
  2. 删除 WordPress Pod:
    kubectl delete pod -n wordpress-prod -l app.kubernetes.io/name=wordpress
    
  3. 观察 K8s 自动拉起新的 Pod。
  4. 再次访问网站,你会发现刚才写的文章还在。这就是持久化存储的威力。

高级配置:自动备份策略

对于企业站,数据是命根子。Bitnami 的 Chart 支持配置 CronJob 进行自动备份。在 values.yaml 中添加:

mariadb:primary:backup:enabled: trueschedule: "0 2 * * *"  # 每天凌晨 2 点备份backupCommand: /scripts/backup.sh# 备份存储路径,建议挂载 OSS 或 NFSvolumeMounts:- name: backup-storagemountPath: /backupvolumes:- name: backup-storagepersistentVolumeClaim:claimName: oss-backup-pvc

你需要预先创建一个名为 oss-backup-pvc 的 PVC,指向阿里云 OSS 存储。这样,数据库备份会自动上传到对象存储,实现异地容灾。

常见报错与排查思路

再好的方案,落地时也会遇到坑。以下是我在河南几个项目中遇到的典型问题及解决方案。

1. 域名解析了,但访问 502 Bad Gateway

  • 现象:浏览器显示 502 错误。
  • 原因:Ingress Controller 无法连接到后端 Pod,或者 Pod 还没启动完成。
  • 排查:
    # 查看 Ingress 关联的 Service
    kubectl get svc -n wordpress-prod
    # 查看 Pod 状态
    kubectl get pods -n wordpress-prod
    # 查看 Pod 日志
    kubectl logs -n wordpress-prod <pod-name>
    
    • 如果 Pod 状态是 CrashLoopBackOff,通常是配置错误(如密码错误、内存不足)。查看日志会发现 Connection refused 或 OOMKilled。
    • 如果是 Pending,通常是资源不足(CPU/Memory 请求值太高,节点资源不够)。降低 resources.requests 或增加节点资源。

2. 数据库连接超时

  • 现象:WordPress 后台报错 Error establishing a database connection。
  • 原因:MySQL/MariaDB Pod 与 WordPress Pod 之间的网络不通,或者 DNS 解析失败。
  • 排查:
    • 确保两者在同一个 Namespace,或者配置了正确的 Service 名称。
    • 检查防火墙规则,K8s 内部通信通常不受防火墙限制,但如果是跨集群通信,需检查网络策略。
    • 进入 WordPress Pod 测试连接:
      kubectl exec -it wp-prod-0 -n wordpress-prod -- bash
      nc -vz mariadb-service 3306
      

3. 证书报错 SSL Handshake Failed

  • 现象:浏览器提示连接不安全。
  • 原因:Ingress 的 TLS 配置错误,或者证书与域名不匹配。
  • 排查:
    • 确保 Ingress 中 tls 部分的 secretName 指向正确的 TLS Secret。
    • 检查证书有效期。根据阿里云官方文档,SSL 证书需在到期前 30 天申请续签,并更新 K8s 中的 Secret。
    • 命令:
      kubectl describe secret <tls-secret-name> -n wordpress-prod
      

4. 磁盘空间不足

  • 现象:Pod 频繁重启,日志提示 No space left on device。
  • 原因:容器日志未清理,或存储配额用尽。
  • 解决:
    • 配置日志轮转策略。
    • 监控 PVC 使用量,设置报警。
    • 定期清理旧的备份文件。

小结与职业发展路径

通过上面的实战案例,我们成功在 K8s 上部署了一个高可用的 WordPress + MySQL 集群。这套架构不仅解决了“网站做好了没人访问”背后的稳定性问题,还为企业未来的扩展打下了基础。

对于技术团队来说,掌握 K8s + WordPress 部署能力,不仅仅是运维技能,更是架构能力的体现。

  • 初级运维:能按照文档部署,会看日志。
  • 中级 DevOps:能编写 Helm Chart,配置自动备份,监控报警。
  • 高级架构师:能设计多活架构,处理跨可用区容灾,优化成本(如利用 Spot 实例)。

对于河南的中小企业老板,不要觉得 K8s 离你很远。它不是大厂的专利,而是提升服务质量的工具。你可以先从非核心业务(如博客、新闻站)开始尝试,逐步积累经验。

证书年审、数据备份、性能调优,这些都是长期运营的重点。记住,网站上线只是开始,稳定的运行才能带来持续的流量和转化。

还有什么建站疑问?评论区留言挨个回。特别是关于 ICP 备案和 SSL 证书自动续签的具体操作,很多人卡在这一步,欢迎提问。

文章转载自 http://www.tuoguanbang.net.cn/articles-ltyb.html

看完文章,想为自己的企业也做一次专业网站诊断?

尧图顾问免费为您评估现有网站,并给出建站/改版建议与报价方案。

免费获取方案