大家有没有搞过有状态应用上 K8S - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhoudaiyu
V2EX    Kubernetes

大家有没有搞过有状态应用上 K8S

  •  1
     
  •   zhoudaiyu
    PRO
    2021-04-14 12:58:28 +08:00 via iPhone 6039 次点击
    这是一个创建于 1644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    MySQL RabbitMQ Redis 等这种有状态中间件怎上 K8S ?是通过在上层使用开源的或者自己改的 operator,还是在底层二次开发这些中间件?存储用 local pv 还是 ceph 之类的?

    35 条回复    2021-04-18 00:41:23 +08:00
    stevefan1999
        1
    stevefan1999  
       2021-04-14 13:03:54 +08:00
    ??? StatefulSet*啊 你重下 k8s 吧

    *然就算有 statefulset 也不一定能一永逸
    竟有同步
    候就是用面理了
    你需要做的 HA 譬如 JBoss/Vertex/DNS
    forbxy
        2
    forbxy  
       2021-04-14 13:09:43 +08:00   1
    网络存储都是垃圾,不适合这种存储应用,个人觉得这种东西就不适合上 k8s,statefulset 限制也很多的
    buliugu
        3
    buliugu  
       2021-04-14 13:09:56 +08:00
    k8s 原生只有 StatefulSet,正常用大家当然是等大厂放出官方的 operator 啦(逃
    fuis
        4
    fuis  
       2021-04-14 13:10:56 +08:00
    俺弄了重型有状态应用的移植。自己写了 operator,依赖一个 local pv provisioner
    楼上说的 statefulset 其实本身也有各种问题,比如默认的 rollingupdate 策略不能指定某个 pod,等等。不过总体来说我觉得还是比较容易的。
    liuzhaowei55
        5
    liuzhaowei55  
       2021-04-14 13:29:46 +08:00 via Android
    又不需要敏捷开发,多次发布,负载均衡也有自己的解决方案,为啥要用 k8s 呢
    CallMeReznov
        6
    CallMeReznov  
       2021-04-14 13:33:04 +08:00
    刚好,中午吃饭的时候阅读到的
    mysql 主备上 k8s:https://mp.weixin.qq.com/s/D3WI2JnhV4Bilb9DEkcOTA
    zhoudaiyu
        7
    zhoudaiyu  
    OP
    PRO
       2021-04-14 13:34:33 +08:00
    @liuzhaowei55 #5 领导的意思这种玩意都尽可能上上去(除了 mysql )
    wingoo
        8
    wingoo  
       2021-04-14 13:34:45 +08:00
    有状态应用的问题是出了问题你能不能解决, 不能解决的话就不要上 k8s
    root01
        9
    root01  
       2021-04-14 13:42:18 +08:00
    我都现在都不明白有状态和无状态的区别
    wellsc
        10
    wellsc  
       2021-04-14 14:26:21 +08:00 via iPhone
    staefulset 也是个坑
    catchexception
        11
    catchexception  
       2021-04-14 14:38:10 +08:00
    一言难尽,无状态全上 K8s,有状态编排各有各的难点。负载均衡有时自己要在应用内实现,或者加 ClientIP 与 Pod 亲和。
    Redis 我记得有主从镜像的,可以直接拿来用。
    EPr2hh6LADQWqRVH
        12
    EPr2hh6LADQWqRVH  
       2021-04-14 14:40:18 +08:00
    云计算只有 CPU 内存和网络实现了动态分配。

    存储一直都是阵列提供的。

    数据库这种存储应用,不要考虑云计算,按传统部署来。
    KaynW
        13
    KaynW  
       2021-04-14 14:43:03 +08:00
    搞过
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       2021-04-14 14:48:31 +08:00
    @avastms 存储早就云化了啊,对象存储、块存储、文件存储等等,很多了
    EPr2hh6LADQWqRVH
        15
    EPr2hh6LADQWqRVH  
       2021-04-14 14:52:31 +08:00
    @XiaoxiaoPu 对象存储不算存储, 快存储就是 iSCSI,阵列提供的, 文件存储就 smb/nfs,还是阵列。
    里外都是阵列,没那么灵活。
    XiaoxiaoPu
        16
    XiaoxiaoPu  
       2021-04-14 15:07:21 +08:00
    @avastms 对象存储怎么不是存储了,能存能读能持久化。块存储、文件存储早就有分布式的解决方案了,不依赖硬件。
    EPr2hh6LADQWqRVH
        17
    EPr2hh6LADQWqRVH  
       2021-04-14 15:29:39 +08:00   1
    @XiaoxiaoPu 能放数据库吗对象存储,就那个 IO 性能,歇了吧。

    我说存储没有云化,不是说它底层依赖单一硬件阵列,而是说它没法像 CPU 和内存那样动态放缩,灵活调配,它还是一块盘,不是一种资源。

    你是云提供商,你可以说像 ceph 这种东西完成了存储的云化,但对使用者来讲,你这个块设备是阵列给你的还是 ceph 给你的,对你来讲有差吗,不分区格式化能行吗?
    这块盘能多挂载多写吗,读写事件能都收到吗?
    那不还是阵列吗?

    所以说存储这一块它没有云化,像数据库这种东西,还是老样子啊,要想真正云化,需要普及一种高性能分布式文件系统先,能动态放缩的那种。

    存储的灵活性现在是数据库应用这层提供的,不是存储盘这层提供的。

    你可以说云数据库,这是真云, 云存储,得了吧,就是别人计算机上的盘而已。
    monsterxx03
        18
    monsterxx03  
       2021-04-14 15:41:05 +08:00
    @avastms 块设备很成熟了啊, aws ebs, gce pv, aws 自己的 rds 和 aurora 也是基于 ebs 的, 动态扩容一直可以, 缩不行, 但就我经验, 大多数业务缩容并不是一个刚需. 多挂载算是个痛点, NFS 这种太弱了, 但大多数应用也不是刚需. 现有的 sds 块设备方案基本能解决我碰到的 90%问题, iops 性价比也算是个问题.
    crclz
        19
    crclz  
       2021-04-14 15:44:47 +08:00
    @avastms 还真有你说的那种完全“云化”的数据库)。
    对象储存勉强算一种。此外,还有如下的:
    AWS DynamoDB, Azure CosmosDB, Google FireStore, 阿里云 Lindom Serverless
    XiaoxiaoPu
        20
    XiaoxiaoPu  
       2021-04-14 15:54:50 +08:00
    @XiaoxiaoPu 对象存储还真能放数据库,Snowflake 的数据仓库就是构建在对象存储之上。

    不分区不格式化、不能挂载多写一样用啊,数据库直接使用裸的块设备就是了
    vivisidea
        21
    vivisidea  
       2021-04-14 16:45:33 +08:00
    有些应用存储不适合走网络,非得 cephfs 来部署 mysql 不蛋疼么,随机读写性能得多差本地磁盘还好一点

    rancher 有个 local-path provisioner 可以简化 pv 管理 https://github.com/rancher/local-path-provisioner
    vivisidea
        22
    vivisidea  
       2021-04-14 16:50:41 +08:00
    zhujq
        23
    zhujq  
       2021-04-14 17:12:08 +08:00
    @zhoudaiyu 有状态应用还是用 operator 来做好,这上面有很多 database operator,可以看一下
    zhujq
        24
    zhujq  
       2021-04-14 17:14:55 +08:00
    ch2
        25
    ch2  
       2021-04-14 23:41:20 +08:00 via iPhone
    @XiaoxiaoPu 性能差很多
    XiaoxiaoPu
        26
    XiaoxiaoPu  
       2021-04-15 00:34:50 +08:00
    twl007
        27
    twl007  
       2021-04-15 02:42:06 +08:00 via iPhone
    需要 operator 来辅助 纯靠 k8s 自己还是蛮有挑战性的
    thet
        28
    thet  
       2021-04-15 16:45:42 +08:00
    @zhujq +1 k8s 部署服务最好是用 operator 来做,好管理,我就是在做 operator 这块的
    zhujq
        29
    zhujq  
       2021-04-16 14:33:37 +08:00
    ldimple
        30
    ldimple  
       2021-04-17 15:38:56 +08:00
    @forbxy 我正想上来提问这个问题呢,就看到您说不合适了,那 redis 部署 k8s 有什么好处吗
    ldimple
        31
    ldimple  
       2021-04-17 15:41:01 +08:00
    @thet 那 k8s 部署 redis 集群有必要吗,或者说有什么好处呢
    thet
        32
    thet  
       2021-04-17 20:21:45 +08:00 via iPhone
    @ldimple #31 好处还是很多的,比如
    1. 部署方便很多,一个 cr 就可以了
    2. 扩展方便

    可以参考的 redis operator

    https://github.com/spotahome/redis-operator

    https://github.com/ucloud/redis-cluster-operator
    ldimple
        33
    ldimple  
       2021-04-18 00:10:25 +08:00
    @thet 您平时做 operator 开发这块的话目的是为了方便 K8s 部署吗,刚开始入门 k8s,不太清楚开发 operator 是为了啥
    thet
        34
    thet  
       2021-04-18 00:18:12 +08:00 via iPhone
    @ldimple #33 是的,operator 是用来管理应用的整个生命周期的。你如果想在 k8s 部署 redis 是完全可以的,毕竟 redis 是内存型的。简单部署甚至用个 pod 就可以了,如果是管理大量实例,operator 还是比较方便的。
    ldimple
        35
    ldimple  
       2021-04-18 00:41:23 +08:00
    @thet 谢谢您的回复,我搞着玩的,并不是真的生产应用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3492 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:41 PVG 12:41 LAX 21:41 JFK 00:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86