V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
arbit
V2EX  ›  问与答

求教 k8s 部署 mysql 问题

  •  
  •   arbit · 2020-08-14 17:50:36 +08:00 · 2966 次点击
    这是一个创建于 1560 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    12 条回复    2020-08-14 23:32:28 +08:00
    arbit
        1
    arbit  
    OP
       2020-08-14 17:54:00 +08:00
    有没有大佬能提供下思路呢,是用单独的主机部署 mysql 、redis,还是在 k8s 上有什么好的持久化方案呢
    gy911201
        2
    gy911201  
       2020-08-14 17:54:31 +08:00
    如果 nfs 之类的远程硬盘无法满足你的需求, 可以考虑一下使用 localPath 这样的挂载方式, 应该不会路由到其他的节点中.
    DJQTDJ
        3
    DJQTDJ  
       2020-08-14 17:56:09 +08:00 via iPhone
    将 mysql 部署到 K8S 中,可以非常便捷地搭建一套测试环境,但是,在生产环境里,并不建议直接将 mysql 部署到 K8S 上。

    建议
    1: 构建并推送 mysql 镜像
    2: 部署 mysql
    arbit
        4
    arbit  
    OP
       2020-08-14 17:57:17 +08:00
    @gy911201 因为有两个工作节点,数据目录如果挂载在本机目录的话, 会不会如果 mysql 的 pod 挂了,k8s 在另外一台机器节点上重启了这个 pod,那 mysql 就找不到数据的目录(因为数据目录在老的节点上)
    gy911201
        5
    gy911201  
       2020-08-14 17:59:41 +08:00
    @arbit 使用 localPath 格式, 基于亲和性之类的原因, 不会分配到新的节点, 请注意 localPath 与 hostPath 的区别.
    可以参考这个资料
    https://kubernetes.io/zh/docs/concepts/storage/volumes/#local
    zhangtao
        6
    zhangtao  
       2020-08-14 19:29:09 +08:00
    redis 倒是比较容易,可以使用 k8s pvc,通过 ceph 等分布式存储。
    mysql 涉及到主从切换、binlog 校验等,目前还不太成熟
    momocraft
        7
    momocraft  
       2020-08-14 19:39:31 +08:00   ❤️ 1
    如果真的要在 k8s 做,可以 statefulset + persistentvolume
    bowser1701
        8
    bowser1701  
       2020-08-14 22:03:15 +08:00 via iPhone
    这种有状态的其实放 k8s 不好,真想上可以去找一个 operator 通过 Helm 安装,就像 apt 一样简单。
    Illusionary
        9
    Illusionary  
       2020-08-14 22:32:00 +08:00
    MySQL 不建议部署到 K8S 集群中,生产环境尽量部署在云数据库或者宿主机上。
    xulolololololo
        10
    xulolololololo  
       2020-08-14 22:40:14 +08:00
    上家公司只敢在测试环境用 k8s, 使用方式就是定期编译一个 mysql 镜像, 然后测试环境直接用这个镜像. 生产环境我觉得就不要想着把数据库塞到 k8s 里了.
    Qusic
        11
    Qusic  
       2020-08-14 23:23:37 +08:00
    > k8s 在另外节点上重启,会有数据找不到问题
    [node affinity]( https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity) 可破
    napsterwu
        12
    napsterwu  
       2020-08-14 23:32:28 +08:00
    Kubernetes 如何改变美团的云基础设施
    https://mp.weixin.qq.com/s/Df9fjmfTSD8MKg69LaySkQ
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1129 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:36 · PVG 02:36 · LAX 10:36 · JFK 13:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.