我需要在kubernetes的clickhouse数据库中运行一个命令。
当我用docker尝试它时,它工作得很好:
docker run -it yandex/clickhouse-client -h 172.19.0.1 --database=test --query="SYSTEM RELOAD DICTIONARIES"
但是当我在kub中运行它时:
kubectl run --quiet -it --rm clickhouse-client --image=yandex/clickhouse-client -- -h clickhouse-server --database=test --query="SYSTEM RELOAD DICTIONARIES"第二个命令挂起。pod在CrashLoopBackOff中,容器回退重启失败/容器日志中包含查询结果。
为什么结果没有刷新到tty?
此命令适用于我:
kubectl run busybox --quiet -it --rm --restart=Never --image=busybox -- nslookup foobar
click-house客户端有什么不同?
发布于 2020-06-28 15:27:46
@ogbofjnr这可能是因为您的查询一完成,pod就会被终止。Kubernetes将重新启动pod,并在执行查询后再次终止。这就是为什么你会看到一个重启循环。
对于繁忙的机器,入口点是一个长时间运行的命令,如睡眠3600 https://github.com/kubernetes/kubernetes/blob/master/hack/testdata/recursive/pod/pod/busybox.yaml#L10-L12。
如果您的想法是按计划运行查询,那么您应该尝试类似的方法或尝试Kubernetes cron作业。
发布于 2020-06-28 18:16:27
你的pod一运行就会被杀死,我建议你使用yaml文件创建pod,并在yaml文件中添加命令,然后在DNS解析器中验证您的clickhouse-server
---
......
containers:
- name: clickhouse-client
image: yandex/clickhouse-client
command:
- "-h"
- "clickhouse-server"
- "--database=test"
- "--query='SYSTEM RELOAD DICTIONARIES'"
resources: {}
........
---https://stackoverflow.com/questions/62571379
复制相似问题