如何在kubernetes中保持容器的运行示例以处理shell命令?

ntjbwcob  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(126)

我在microk8s集群中有一个redis DB服务器容器,我想保留一个正在运行的客户端示例,这样我就可以不时地连接到它来与服务器容器对话。
one official example中,redis客户端的交互调用方式如下:

kubectl run -i --tty temp --image redis --command "/bin/sh"

字符串
然后用户手动输入数据或与服务器交互。但我需要从shell脚本中重复执行此操作。到目前为止,我尝试的是这样的:

kubectl run -i temp --rm --image redis -- bash -c "redis-cli -h redis LRANGE myqueue 0 -1 | cut -f 2- -d ' '"


这有时会工作,但偶尔会出现错误:
错误:等待条件超时
我不确定等待的是什么条件,我猜这可能与创建临时容器并在作业完成时立即删除有关。但是我不一定要像这样重复地创建和删除容器,每次只运行几个shell命令。它很慢,现在似乎会产生不可预测的错误。

  • 在kubernetes中是否有一种方法来保持容器的运行示例(这里是redis客户端),并通过管道或其他方式不时地向其发送bash命令?(而不是删除和重新创建)*
dddzy1tm

dddzy1tm1#

试试kubectl run temp --image redis --command sleep infinity。这将启动redis吊舱并进入睡眠状态。然后,你可以使用pod执行命令,如kubectl exec -it temp -- redis-cli -h redis LRANGE myqueue 0 -1 | cut -f 2- -d ' '。pod在命令执行时不会退出,只有在删除pod时才会退出。

相关问题