为什么说有状态的服务不适合放在 Docker 或 K8s 中运行?

1个回答

写回答

往死里扛

2026-02-17 12:15

+ 关注

MySQL
MySQL

有状态的服务,切勿部署在 Docker 中运行。例如,MySQL、Redis、Elasticsearch 和 ActiveMQ 等技术。这些服务需确保高可用与稳定,放入Docker难以实现,即便在K8s中也不建议部署。这就是为什么云厂商提供有状态的SaaS服务,比如AWS中的MySQL、Redis和消息队列服务。评论区热闹非凡,先谈谈 MySQL 集群的问题:传统高可用软件如 Pacemaker,采用两台机器加共享存储和围栏设备的模式。如果在 k8s 中使用这种方案,该如何配置?特别是围栏设备,在 k8s 环境下应该如何实现?MySQL 8 InnoDB Cluster 通常是 1 主 2 从架构,这种模式在 K8s 中应如何实现?MySQL operator 这类工具我没用过,不了解其可行性,不太清楚具体情况。作为一名运维人员,我倾向于将 MySQL 部署在虚拟机中,因为对数据库软件而言,这种方式更有优势。不需要用到k8s的诸多功能,主要是追求稳定运行。偶尔调整下CPU、内存和磁盘,做个备份即可,平时基本不用管理。项目在云上的话,直接使用云厂商提供的服务即可。个人认为,k8s适合部署无状态服务,简单方便,进程挂了可直接拉起,无需复杂检查。有状态服务挂了虽可重启,但未必安全,易引发数据不一致,需检查确认。这个问题确实存在较大争议:MySQL官方已关闭评论,我倾向于保守态度。

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号