我需要在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"
第二个命令挂起。 吊舱位于CrashLoopBackOff中,其中“后退”重新启动失败的容器/ 并且容器的日志包含查询结果。
为什么结果没有刷新到tty?
此命令对我有用:
kubectl run busybox --quiet -it --rm --restart=Never --image=busybox -- nslookup foobar
Clickhouse客户有什么区别?
答案 0 :(得分:0)
@ogbofjnr,这可能是因为查询完成后,pod被杀死了。 Kubernetes将重新启动Pod,执行查询后它将再次死亡。这就是为什么您看到重启循环的原因。
对于忙碌的盒子,入口点是长时间运行的命令,例如sleep 3600 https://github.com/kubernetes/kubernetes/blob/master/hack/testdata/recursive/pod/pod/busybox.yaml#L10-L12。
如果您的想法是按计划运行查询,则应该尝试类似的操作或尝试Kubernetes cron作业。
答案 1 :(得分:0)
您的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: {}
........
---