You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Kubernetes中MySQL Helm Chart设置多副本(replicas=3)后就绪/存活探针失败及PVC绑定问题排查

问题分析与解决方案

首先,咱们先明确核心问题:你使用的这个旧版MySQL Helm Chart(原stable仓库的)本身不支持直接通过设置replicas=3来部署多副本MySQL——它默认是为单实例设计的,直接改副本数会触发一系列问题,咱们拆解来看:

问题成因

  1. PVC绑定失败:默认情况下,这个Chart的PersistentVolumeClaim(PVC)访问模式是ReadWriteOnce,意味着每个PV只能被单个Pod挂载。当你设置replicas=3时,Kubernetes会尝试创建3个PVC,但如果集群里没有足够的可用PV,就会出现FailedScheduling的错误。
  2. MySQL实例启动失败:就算有足够的PV,直接启动3个独立的MySQL实例也会出问题——这个Chart的初始化脚本、探针配置都是针对单实例设计的,多实例情况下(没有配置主从复制机制),MySQL进程可能因为初始化逻辑冲突、数据目录异常等原因无法正常启动,导致/var/run/mysqld/mysqld.sock文件缺失,进而触发存活/就绪探针失败。

可通过Helm参数修改的解决方案

这个Chart其实内置了主从复制的配置项,要部署3个Pod的MySQL集群,你需要开启主从模式,而不是直接设置replicas

  • values.yaml中配置以下参数:
    mysql:
      replication:
        enabled: true          # 开启主从复制功能
        slaveReplicas: 2       # 设置从节点数量,加上主节点一共3个Pod
    persistence:
      storageClass: "你的存储类名称"  # 确保存储类能动态创建PV,或者集群有足够的静态PV
    
  • 重新部署Chart:helm upgrade --install 你的发布名 stable/mysql -f 你的values.yaml

这样配置后,Chart会自动创建1个主Pod和2个从Pod,并且配置好主从复制的逻辑,每个Pod会绑定自己的PVC,探针也能正常工作。

关于Chart的多副本支持说明

这个旧版stable/mysql Chart支持主从模式的多副本部署,但不支持直接设置replicas来启动多个独立实例——因为MySQL本身是有状态服务,独立实例无法保证数据一致性,而主从模式才是官方Chart设计的多副本部署方式。另外需要注意,现在Helm的stable仓库已经被归档,建议后续考虑迁移到更完善的MySQL Chart版本。

内容的提问来源于stack exchange,提问作者IntoxicateR

火山引擎 最新活动