(作者:陈玓玏)
前置条件
- 已安装 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。
但仍然有pod不正常的问题,显示Back-off restarting failed container,一直重启一直失败,查看日志发现报错是mkdir: cannot create directory ‘/var/lib/zookeeper/data’: Permission denied。
这个问题的解决方案,目前只找到一个修改权限,改为root权限的,可能不是最好的,但修改后确实pod可用了,具体是将zk-clickhouse的yaml文件中的spec部分修改securityContext,原来都是1000,没有创建文件的权限。
securityContext:
runAsUser: 0
fsGroup: 0
比较神奇的事情是,一开始不是root权限,修改为root权限后,文件夹创建成功,再修改为非ro
ot权限后,再重启pod依然是ok的,猜测可能是后续不需要再创建文件夹了,因为挂载目录下的文件夹已经存在,其他操作又都不需要root权限。所以觉得改为root权限不好的,pod启动成功后可以再改回去试试。
使用
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"
连接成功。
参考链接:
https://github.com/strimzi/strimzi-kafka-operator/issues/1720
https://xie.infoq.cn/article/bb976ac9d5a540cc196921cbe