尝试 clickhouse operator

本文介绍了如何在kubernetes(k8s)环境中使用clickhouse-operator来解决测试部署Clickhouse时遇到的配置修改、数据库初始化及高可用等问题。clickhouse-operator不仅提供了配置管理和初始化数据库的功能,还支持一定的高可用性。文章详细阐述了安装operator、定制CRD以满足特定需求,并记录了在实际操作中遇到的域名访问限制问题及其解决方案。
摘要由CSDN通过智能技术生成

Production 级别的 clickhouse 不是随便就能搞出来的,需要对其有更深入的理解。这篇主题只是针对如何在 k8s 里快速搭建一还行的 clickhouse。主要是为了实现整个系统不对外有额外的依赖,所有的依赖服务都包含在 k8s 集群中。和 将 MySQL 通过 presslabs/mysql-operator 部署到 k8s 内部 这篇对于 mysql 的处理非常类似。

诉求

之前用于测试的 clickhouse 是一非常随便的 deployment 实现,其主要缺点有如下几个:

  1. 没有考虑如何修改配置,如果需要额外的配置只好自己想办法 mount 一个文件到指定路径
  2. 没有初始化数据库的流程,只能自己手动去创建数据库
  3. 不支持高可用,也无法扩容

其中 3 的诉求并不强烈,毕竟在测试阶段对这部分的要求没有那么高,而且如果真的想要高可用可能甚至都不应该将 clickhouse 放进 k8s 里。不过 1 2 的诉求还是很强烈的。那么我这里的工作也都是针对 1 2 两项进行的。

方案

这里采用了 Altinity/clickhouse-operator 这个方案。该方案不仅仅是完美解决了 1 2 两项问题,甚至是 3 也有做了还不错的处理。不过我这里就没有测试扩容和高可用了,主要测试的是 1 2 两部分。

安装 operator

按照文档安装 operator:

curl -s https://raw.githubusercontent.com/Altinity/clickhouse-operator/master/deploy/operator-web-installer/clickhouse-operator-install.sh | OPERATOR_NAMESPACE=infra bash

这里我把 operator 安装的 namespace 放到了 infra。

提供部署 clickhouse 的 crd

apiVersion: v1
kind: "ConfigMap"
metadata:
  name: "serving-db-mounted-configmap"             # [5]
data:
  01_create_databases.sh: |
    #!/bin/bash
    set -e
    clickhouse client -n <<-EOSQL
      CREATE DATABASE IF NOT EXISTS serving;
    EOSQL
---
apiVersion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值