Clickhouse 作为带有副本的 Kubernetes 部署

Posted

技术标签:

【中文标题】Clickhouse 作为带有副本的 Kubernetes 部署【英文标题】:Clickhouse as kubernetes deployment with replicas 【发布时间】:2020-12-10 10:56:28 【问题描述】:

我正在部署 clickhouse 以及托管在 AWS EKS 中的 Sentry On Premises 设置。 我想使用存储类 (EBS) 使用 PVC 对 clickhouse 数据 /var/lib/clickhouse 进行卷管理。我想要一个所有 clickhouse pod 都可以写入和读取的块设备。我无法使用 kubernetes 类型来实现这一点:使用 2 个副本进行部署。第一个 pod 获取卷并开始运行而没有任何错误,而第二个 pod 不断崩溃并显示以下消息:

kubelet[3862]: E1210 10:03:17.377448 3862 pod_workers.go:191] Error syncing pod ab24c325-a86c-4fa4-aee4-d14766d7cfec ("clickhouse-59cbd46586-vsmvg_default(ab24c325-a86c-4fa4-aee4-d14766d7cfec)"), skipping: failed to "StartContainer" for "clickhouse-server" with CrashLoopBackOff: "back-off 5m0s restarting failed container=clickhouse-server pod=clickhouse-59cbd46586-vsmvg_default(ab24c325-a86c-4fa4-aee4-d14766d7cfec)"

使用可作为有状态集使用的 clickhouse helm 图表,我正在运行容器。我的问题是:如果 clickhouse 以具有 2 个或更多副本的状态集运行,则每个 pod 卷中的数据将不一致,如何管理?有没有办法通过多个 pod 与之交谈的单卷来实现这一点?

【问题讨论】:

【参考方案1】:

您应该为每个 clickhouse-server 实例使用带有 Replica:1 的单独 StatefulSet,而不是使用具有多个副本的 Deployment。

【讨论】:

啊,谢谢你的回答,我遵循了你的方法,效果很好:) ok ;) 所以请投票支持我的评论作为正确的解决方案

以上是关于Clickhouse 作为带有副本的 Kubernetes 部署的主要内容,如果未能解决你的问题,请参考以下文章

大数据ClickHouse进阶:副本与分片

ClickHouse 副本不同步

Clickhouse 表是不是有最大推荐的副本数量?

复制 ClickHouse 副本的最佳方法?

在 Zookeeper 集群中重新添加丢失的 Clickhouse 副本

ClickHouse 分布式原理:Distributed引擎