求教 k8s 部署 mysql 问题

2020 年 8 月 14 日
 arbit

请教大家一个问题: 公司准备把原来的项目迁移到 k8s 上,像 mysql 和 redis 数据库在生产环境上适合部署到 k8s 集群中吗

因为目前发现的问题就是像 mysql 存储数据目录,有两种方式 1.如果用 nfs 存储会慢, 2.挂载宿主机目录,如果 pod 挂了,k8s 在另外节点上重启,会有数据找不到问题

大家的都是怎么样的部署架构呢

4272 次点击
所在节点    问与答
12 条回复
arbit
2020 年 8 月 14 日
有没有大佬能提供下思路呢,是用单独的主机部署 mysql 、redis,还是在 k8s 上有什么好的持久化方案呢
xiaolanglang
2020 年 8 月 14 日
如果 nfs 之类的远程硬盘无法满足你的需求, 可以考虑一下使用 localPath 这样的挂载方式, 应该不会路由到其他的节点中.
DJQTDJ
2020 年 8 月 14 日
将 mysql 部署到 K8S 中,可以非常便捷地搭建一套测试环境,但是,在生产环境里,并不建议直接将 mysql 部署到 K8S 上。

建议
1: 构建并推送 mysql 镜像
2: 部署 mysql
arbit
2020 年 8 月 14 日
@gy911201 因为有两个工作节点,数据目录如果挂载在本机目录的话, 会不会如果 mysql 的 pod 挂了,k8s 在另外一台机器节点上重启了这个 pod,那 mysql 就找不到数据的目录(因为数据目录在老的节点上)
xiaolanglang
2020 年 8 月 14 日
@arbit 使用 localPath 格式, 基于亲和性之类的原因, 不会分配到新的节点, 请注意 localPath 与 hostPath 的区别.
可以参考这个资料
https://kubernetes.io/zh/docs/concepts/storage/volumes/#local
zhangtao
2020 年 8 月 14 日
redis 倒是比较容易,可以使用 k8s pvc,通过 ceph 等分布式存储。
mysql 涉及到主从切换、binlog 校验等,目前还不太成熟
momocraft
2020 年 8 月 14 日
如果真的要在 k8s 做,可以 statefulset + persistentvolume
bowser1701
2020 年 8 月 14 日
这种有状态的其实放 k8s 不好,真想上可以去找一个 operator 通过 Helm 安装,就像 apt 一样简单。
Illusionary
2020 年 8 月 14 日
MySQL 不建议部署到 K8S 集群中,生产环境尽量部署在云数据库或者宿主机上。
xulolololololo
2020 年 8 月 14 日
上家公司只敢在测试环境用 k8s, 使用方式就是定期编译一个 mysql 镜像, 然后测试环境直接用这个镜像. 生产环境我觉得就不要想着把数据库塞到 k8s 里了.
Qusic
2020 年 8 月 14 日
> k8s 在另外节点上重启,会有数据找不到问题
[node affinity]( https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) 可破
orcusfox
2020 年 8 月 14 日
Kubernetes 如何改变美团的云基础设施
https://mp.weixin.qq.com/s/Df9fjmfTSD8MKg69LaySkQ

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/698319

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX