我需要在kubernetes的clickhouse数据库中运行一个命令。
当我尝试docker时,它工作正常: docker run -it yandex/clickhouse-client -h 172.19.0.1 --database=test --query="SYSTEM RELOAD DICTIONARIES"
但当我在库布运行时:
kubectl run --quiet -it --rm clickhouse-client --image=yandex/clickhouse-client -- -h clickhouse-server --database=test --query="SYSTEM RELOAD DICTIONARIES"
第二个命令挂起。pod处于crashloopbackoff中,backoff重启失败的container/并且container日志包含查询结果。
为什么结果没有刷新到tty?
这个命令对我有效: kubectl run busybox --quiet -it --rm --restart=Never --image=busybox -- nslookup foobar
click house客户端有什么不同?
2条答案
按热度按时间13z8s7eq1#
@ogbofjnr这很可能是因为pod在您的查询完成后就被杀死了。kubernetes将重新启动pod,它将在执行查询后再次死亡。这就是为什么你会看到一个重启循环。
对于busybox,入口点是一个长时间运行的命令,如sleep3600https://github.com/kubernetes/kubernetes/blob/master/hack/testdata/recursive/pod/pod/busybox.yaml#l10-第12页。
如果要按计划运行查询,则应该尝试类似的方法,或者尝试kubernetes cron job。
tvokkenx2#
你的pod在运行时就被杀死了,我建议你使用yaml文件创建pod,并在yaml文件中添加命令,然后在dns解析器中验证clickhouse服务器