在kubernetes中运行的docker命令挂起

uinbv5nw  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(2)|浏览(517)

我需要在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客户端有什么不同?

13z8s7eq

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。

tvokkenx

tvokkenx2#

你的pod在运行时就被杀死了,我建议你使用yaml文件创建pod,并在yaml文件中添加命令,然后在dns解析器中验证clickhouse服务器

---
......
      containers:
      - name: clickhouse-client
        image: yandex/clickhouse-client
        command:
          - "-h"
          - "clickhouse-server"
          - "--database=test"
          - "--query='SYSTEM RELOAD DICTIONARIES'"
        resources: {}
........
---

相关问题