Azure AKS中Bitnami MySQL Helm Chart持续重启问题求助
问题排查:Azure AKS中Bitnami MySQL Helm Chart(v9.14.1)异常重启及警告问题
问题梳理
- 部署配置:Bitnami MySQL Helm Chart v9.14.1,主从架构(2个从节点),已启用metrics
- 初始运行正常后出现
mysql_native_password弃用警告,尝试GitHub Issue#18606修复无效 - 升级Chart后Pod持续关闭,日志显示
Received SHUTDOWN from user <via user signal> - 命名空间事件明确提示内存资源不足:mysql容器占用421440Ki(无资源请求配置),metrics容器占用15092Ki(无资源请求配置)
- 启用自动扩缩容后Pod仍频繁重启,可访问mysql-metrics但不清楚重点观测指标
一、优先解决内存不足核心问题
1. 配置Pod资源请求与限制
Bitnami MySQL默认未设置资源请求,导致节点内存不足时被kubelet强制驱逐。在Helm values文件中添加以下配置:
primary: resources: requests: memory: "512Mi" cpu: "250m" limits: memory: "1Gi" cpu: "500m" secondary: resources: requests: memory: "512Mi" cpu: "250m" limits: memory: "1Gi" cpu: "500m" metrics: resources: requests: memory: "64Mi" cpu: "50m" limits: memory: "128Mi" cpu: "100m"
应用配置命令:
helm upgrade mysql bitnami/mysql -f your-values.yaml -n your-namespace
- 原理:资源请求让调度器把Pod分配到有足够内存的节点;资源限制防止容器过度占用节点资源
2. 检查节点与Pod资源占用
用以下命令排查节点和Pod的资源使用情况:
# 查看节点资源详情 kubectl describe nodes # 查看节点CPU/内存使用率 kubectl top nodes # 查看命名空间内Pod资源占用 kubectl top pods -n your-namespace
确认是否有其他Pod占用过多内存,导致节点资源耗尽
二、处理mysql_native_password弃用警告
1. 全局设置默认认证插件
在Helm values中添加MySQL配置,强制全局使用caching_sha2_password:
primary: configuration: | [mysqld] default_authentication_plugin=caching_sha2_password secondary: configuration: | [mysqld] default_authentication_plugin=caching_sha2_password
应用配置后重启所有MySQL Pod,检查警告是否消失
2. 更新现有用户的认证插件
登录MySQL实例,查看所有用户的认证方式:
SELECT user, host, plugin FROM mysql.user;
对仍使用mysql_native_password的用户执行更新:
ALTER USER 'your-user'@'%' IDENTIFIED WITH caching_sha2_password BY 'your-password'; FLUSH PRIVILEGES;
三、Pod频繁重启(SHUTDOWN信号)后续排查
1. 验证内存问题解决后的状态
内存不足是kubelet发送终止信号的核心原因,先解决资源配置问题后观察Pod是否稳定运行
2. 查看MySQL详细日志
通过命令实时查看主节点日志:
kubectl logs mysql-primary-0 -n your-namespace -f
重点关注:
- 启动阶段的初始化错误、权限问题日志
- 主从同步相关报错(如复制失败导致重启)
- 内存耗尽时的OOM(
Out of memory)日志
3. 利用mysql-metrics观测关键指标
端口转发访问metrics后,重点查看以下Prometheus指标:
mysql_global_status_uptime:Pod运行时长,确认是否仍频繁重启mysql_global_status_threads_running:活跃线程数,排查是否有异常高负载mysql_global_memory_total:MySQL总内存使用,确认是否接近资源限制mysql_global_status_aborted_connects:连接失败次数,排查认证或网络问题node_memory_MemAvailable_bytes(若采集节点指标):节点可用内存,确认资源是否充足
四、Chart升级注意事项
如果升级后出现异常,可尝试:
- 核对Chart版本与MySQL版本兼容性(Bitnami Chart发布说明会标注兼容的MySQL版本)
- 备份数据库后回滚到之前的Chart版本:
helm rollback mysql <revision-number> -n your-namespace
- 升级前先配置资源请求/限制,避免新版本默认资源需求更高导致内存不足
内容的提问来源于stack exchange,提问作者Øystein Seel
相关产品推荐
相关产品推荐

