直接'kubectl run'redis-cli

Bal*_*nat 3 redis redis-cli kubectl

我想启动一个容器并直接redis-cli在里面交互运行。由于某种原因,在我的尝试中,输入总是被忽略。

启动交互式 shell,然后手动启动程序即可:

# in my local shell:
$ kubectl run redis-cli --image redis:latest --attach --leave-stdin-open --rm -it --command -- bash
# then in container shell:
root@redis-cli:/data# redis-cli -h redis.example.com
# now the redis-cli shell is open:
redis.example.com:6379>
Run Code Online (Sandbox Code Playgroud)

如何将其合并到一个命令中以直接进入redis-clishell?我已尝试以下操作,但没有看到任何提示,并且我的所有输入都被忽略。我什至无法按 ctrl-C 或 ctrl-D 退出它。

# in my local shell:
$ kubectl run redis-cli --image redis:latest --attach --leave-stdin-open --rm -it --command -- bash
# then in container shell:
root@redis-cli:/data# redis-cli -h redis.example.com
# now the redis-cli shell is open:
redis.example.com:6379>
Run Code Online (Sandbox Code Playgroud)

如果我执行 a --stat,我会看到命令输出。如果我执行 a ping,我会看到 ping 到达 Redis 服务器(使用monitor另一个容器),但我从未看到任何输出,并且 pod 在终止之前进入CrashLoopBackOff

此时,我不确定此行为是否特定于redis-cli图像redis,或者此行为是否与其他交互式程序相同(好吧,至少bash看起来按预期工作)。

moo*_*tte 7

将其发布为社区 wiki,随意编辑和扩展


redis-cli我找到了一个解决方法,很可能这与容器及其实现有关。使用不同的图像观察到相同的行为redis-cli-docker.io/bitnami/redis:6.2.5-debian-10-r34

当运行问题中的命令时,在创建 pod 后redis-cli,会显示以下消息:

$ kubectl run redis-cli3 --image redis:latest --attach --leave-stdin-open --env REDIS_PASSWORD=$REDIS_PASSWORD --rm -it -- redis-cli -h redis-master -a $REDIS_PASSWORD
If you don't see a command prompt, try pressing enter.
Run Code Online (Sandbox Code Playgroud)

它应该enter作为钥匙,但它不起作用。

令人惊讶的是shift + r,组合被接受并显示redis-cli已连接。