V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leiuu
V2EX  ›  Kubernetes

Elasticsearch On K8S 大家有用到吗,存储怎么解决的

  •  
  •   leiuu · 2021-11-08 18:46:58 +08:00 · 3397 次点击
    这是一个创建于 1109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 。

    K8S 「蒙」新一个。

    目前正准备基于 ECK 在 k8s 集群上搭建一套 Elasticsearch 集群。

    存储这块可能得用 local-pv 解决(公司没有 ceph 或者其他解决方案)。

    找到一个local-path-provisioner 基本能满足需求,但不确定是否应该用此上生产...

    想了解大家有类似 k8s 有状态应用(存储数据较多)场景的生产经验吗?推荐用什么解决存储。

    14 条回复    2021-11-09 11:45:23 +08:00
    Alliot
        1
    Alliot  
       2021-11-08 19:06:05 +08:00 via Android
    可以。
    直接挂 ESSD 卷当存储比较合适。local pv 不好管控。
    leiuu
        2
    leiuu  
    OP
       2021-11-08 19:19:45 +08:00
    @Alliot 谢谢小哥。我看了 ESSD 好像是指阿里云的云盘吧。云盘高级版确实性能很好(PL3 IOPS 100w)。 不过目前我的使用场景里是自己搭建的 K8S 集群,配置是只有 5* 32 core, 128G,4T SSD 。阿里的云盘暂时用不到。

    另外想再请教一下,不好管控具体指哪一方面?
    Alliot
        3
    Alliot  
       2021-11-08 19:35:29 +08:00 via Android   ❤️ 1
    @leiuu 不好管控主要是 pod 漂移与存储扩容的问题。 自建集群的话,也可以用 NFS 之类的,不过性能较低,不推荐。
    leiuu
        4
    leiuu  
    OP
       2021-11-08 20:01:06 +08:00
    @Alliot

    k8s 了解很少,大概可以理解您的回答。

    pod 漂移这种的话 ECK Operator 会有个方法,判断是否需要重新同步索引数据。每一个份数据实际绑定在一个 pod 上。如果是 pod 在本地重启成功,数据直接能恢复。如果是失败了,漂到其他节点的话,它应该会自动同步数据。

    存储扩容是会麻烦,因为我们可能不会有很多突发数据,所以可能倾向于前期规划尽量做好,后续假设扩容,那只能通过节点下线的方式扩啦。

    NFS 确实也考虑过,配置起来最方便,但考虑到每天会有大量写入的使用场景(几十亿条)。确实不太适用。
    zhenjiachen
        5
    zhenjiachen  
       2021-11-08 21:00:44 +08:00 via iPhone
    最好不要,我试过用 rook 作为存储,经常会导致 rook 崩溃,然后又会影响到其他应用,搞的我赶紧把 es 从 k8s 迁移出来单独部署
    pmispig
        6
    pmispig  
       2021-11-08 21:09:56 +08:00
    请问是出于什么目的要把 es 放到 k8s 上呢?这种东西感觉没有任何理由要放在 k8s 上
    momomirage
        7
    momomirage  
       2021-11-08 21:28:16 +08:00
    以前问过类似问题 最后用了几个 iscsi pv (自用的 uptime 不重要的服务)
    swulling
        8
    swulling  
       2021-11-08 21:59:43 +08:00
    用 local-path 可以的,ES 本身就有数据 replication 机制,底层用云盘实属于浪费~
    vus520
        9
    vus520  
       2021-11-08 23:43:31 +08:00
    ES 的集群搭建,已经足够简单了,性能也高,ES 放到 k8s 上是有什么想不开的事情吗?

    Elasticsearch Kubernetes Operator 这几个单词就够累了。
    dayeye2006199
        10
    dayeye2006199  
       2021-11-09 02:14:01 +08:00
    看你的 k8s 集群是怎么搭的。
    如果用的是云厂商直接 host 的集群(例如 AWS 的 EKS ,Azure 的 AKS),PV 一般直接都映射到云厂商的存储产品上。
    例如 AWS 的 EBS ,EFS ,Azure 的 Azure Disk ,Azure Files
    Alliot
        11
    Alliot  
       2021-11-09 10:23:28 +08:00
    @leiuu operator 没必要了。 如果重要或者复杂场景的 ES 直接用 SaaS 产品省心省力。。。
    leiuu
        12
    leiuu  
    OP
       2021-11-09 10:51:21 +08:00
    @pmispig
    @vus520

    是的,我们运维也是类似反应。哈哈。
    用 ECK 主要原因是 3 个。
    1. 我们有一些高配的机器,裸机部署单实例 ES 性能有些浪费,多实例似乎资源分割没 k8s 那么好;
    2. 后续有计划将更多应用上 k8s ,借此契机做一下这块;
    3. ECK 很方便可以搭建多个集群。
    SmiteChow
        13
    SmiteChow  
       2021-11-09 11:17:09 +08:00
    容器是用来解决隔离,隔离是为了共享 cpu 和内存硬件,数据库和磁盘是紧密相关的,不适用。

    想要扩容磁盘,可以使用集群部署 db ,而不是容器化。
    JackCooper
        14
    JackCooper  
       2021-11-09 11:45:23 +08:00
    docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" docker.elastic.co/elasticsearch/elasticsearch:7.5.2

    docker 不香吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:18 · PVG 06:18 · LAX 14:18 · JFK 17:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.