RT 。
K8S 「蒙」新一个。
目前正准备基于 ECK 在 k8s 集群上搭建一套 Elasticsearch 集群。
存储这块可能得用 local-pv 解决(公司没有 ceph 或者其他解决方案)。
找到一个local-path-provisioner 基本能满足需求,但不确定是否应该用此上生产...
想了解大家有类似 k8s 有状态应用(存储数据较多)场景的生产经验吗?推荐用什么解决存储。
1 Alliot 2021-11-08 19:06:05 +08:00 via Android 可以。 直接挂 ESSD 卷当存储比较合适。local pv 不好管控。 |
2 leiuu OP @Alliot 谢谢小哥。我看了 ESSD 好像是指阿里云的云盘吧。云盘高级版确实性能很好(PL3 IOPS 100w)。 不过目前我的使用场景里是自己搭建的 K8S 集群,配置是只有 5* 32 core, 128G,4T SSD 。阿里的云盘暂时用不到。 另外想再请教一下,不好管控具体指哪一方面? |
3 Alliot 2021-11-08 19:35:29 +08:00 via Android ![]() @leiuu 不好管控主要是 pod 漂移与存储扩容的问题。 自建集群的话,也可以用 NFS 之类的,不过性能较低,不推荐。 |
4 leiuu OP @Alliot k8s 了解很少,大概可以理解您的回答。 pod 漂移这种的话 ECK Operator 会有个方法,判断是否需要重新同步索引数据。每一个份数据实际绑定在一个 pod 上。如果是 pod 在本地重启成功,数据直接能恢复。如果是失败了,漂到其他节点的话,它应该会自动同步数据。 存储扩容是会麻烦,因为我们可能不会有很多突发数据,所以可能倾向于前期规划尽量做好,后续假设扩容,那只能通过节点下线的方式扩啦。 NFS 确实也考虑过,配置起来最方便,但考虑到每天会有大量写入的使用场景(几十亿条)。确实不太适用。 |
5 zhenjiachen 2021-11-08 21:00:44 +08:00 via iPhone 最好不要,我试过用 rook 作为存储,经常会导致 rook 崩溃,然后又会影响到其他应用,搞的我赶紧把 es 从 k8s 迁移出来单独部署 |
![]() | 6 pmispig 2021-11-08 21:09:56 +08:00 请问是出于什么目的要把 es 放到 k8s 上呢?这种东西感觉没有任何理由要放在 k8s 上 |
7 momomirage 2021-11-08 21:28:16 +08:00 以前问过类似问题 最后用了几个 iscsi pv (自用的 uptime 不重要的服务) |
![]() | 8 swulling 2021-11-08 21:59:43 +08:00 用 local-path 可以的,ES 本身就有数据 replication 机制,底层用云盘实属于浪费~ |
![]() | 9 vus520 2021-11-08 23:43:31 +08:00 ES 的集群搭建,已经足够简单了,性能也高,ES 放到 k8s 上是有什么想不开的事情吗? Elasticsearch Kubernetes Operator 这几个单词就够累了。 |
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 |
12 leiuu OP |
![]() | 13 SmiteChow 2021-11-09 11:17:09 +08:00 容器是用来解决隔离,隔离是为了共享 cpu 和内存硬件,数据库和磁盘是紧密相关的,不适用。 想要扩容磁盘,可以使用集群部署 db ,而不是容器化。 |
![]() | 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 不香吗 |