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 1
@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 不香吗 |