K8s 上helm部署clickhouse
使用helm部署clickhouse

前置条件
-
已安装 Kubernetes 集群;

-
已安装 Helm 包管理工具。

部署
1 添加 RadonDB ClickHouse 的 Helm 仓库
helm repo add ck https://radondb.github.io/radondb-clickhouse-kubernetes/
helm repo update
2 部署 RadonDB ClickHouse Operator
helm install clickhouse-operator ck/clickhouse-operator
3 部署 RadonDB ClickHouse 集群
helm install clickhouse ck/clickhouse-cluster
完成这几步之后查看k8sdashboard,发现clickhouse的zk部署出现了问题,pv有问题,0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims.。

这里的原因是pvc创建之后没有申请到合适的pv,查看k8sdashboard发现没有available的pv,所以手动创建pv,需要注意spec中accessModes和storage等需要匹配pvc,yaml文件如下:
kind: PersistentVolume
apiVersion: v1
metadata:
name: data-zk-clickhouse-0
spec:
capacity:
storage: 20Gi
hostPath:
path: /home/clickhouse/zk0
type: ''
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
volumeMode: Filesystem
我是直接复制的现成的yaml文件改的,所以有些冗余的内容,但只要关键内容对就行了。一共有3个没有匹配上pv的pvc,所以我们创建3个pv就可以了。
修改后发现pvc都正常了。

会有几个pod起得慢些,如果再出现类似问题,继续创建pv即可解决,我一共建了5个pv,记得pv的路径一定别写重了,不然绑定完了删除得全部卸载之后再重新部署。
但仍然有pod不正常的问题,显示Back-off restarting failed container,一直重启一直失败,查看日志发现报错是mkdir: cannot create directory ‘/var/lib/zookeeper/data’: Permission denied。

这个问题的解决方案,目前只找到一个修改权限,改为root权限的,可能不是最好的,但修改后确实pod可用了,具体是将名为zk-clickhouse的statefulset的yaml文件中的spec部分修改securityContext,原来都是1000,没有创建文件的权限。
securityContext:
runAsUser: 0
fsGroup: 0

比较神奇的事情是,一开始不是root权限,修改为root权限后,文件夹创建成功,再修改为非ro
ot权限后,再重启pod依然是ok的,猜测可能是后续不需要再创建文件夹了,因为挂载目录下的文件夹已经存在,其他操作又都不需要root权限。所以觉得改为root权限不好的,pod启动成功后可以再改回去试试。
部署成功后,应该有2个node的pod,3个zk的pod,1个operator的pod,服务也是6个。


all-node这两个pod起得比较慢,别着急,我是先看到三个zk的pod,然后添加好pv,改好statefulset的权限,这三个zk的pod才好的,这三个完全好了,才起的node0,加了node0的pv,node0的pod完全正常之后,才慢慢起的node1,然后加了pv,才慢慢全部部署完的,所以部署clickhouse不能着急,一定一步完了之后都检查一下,最后全部部署完之后看看该起的pod和服务是不是都完整。


这个可以帮助我们看部署得对不对。完整部署才可以使用。
以上步骤走下来,一般是可以成功的,但如果没成功,有可能是helm部署时有些部署不完整,重新卸载之后再部署就可以。卸载命令:
helm uninstall clickhouse
helm uninstall clickhouse-operator
部署时是先部署operator再部署clickhouse,卸载时正好反过来,顺序最好别搞错,不然会报错哦。
使用
apt install -y clickhouse-client
部署clickhouse客户端
连接clickhouse,需要从values.yaml里获取账号密码,所以需要用helm pull ck/clickhouse-cluster下载,然后用tar zxvf解压,再用账号密码登录。
clickhouse-client --user=clickhouse --host=10.43.234.214 --port=9000 --password="c1ickh0use0perator"
这里的user和password在values.yaml中可以获取,host是clickhouse-clickhouse服务的ip,端口是默认的9000。

连接成功。

参考链接:
https://github.com/strimzi/strimzi-kafka-operator/issues/1720
https://xie.infoq.cn/article/bb976ac9d5a540cc196921cbe
更多推荐
所有评论(0)