与kubernetes上的redis-client pod交互

时间:2019-03-25 11:24:02

标签: python-2.7 kubernetes redis-cluster redis-cli

我在Kubernetes上有一个Redis集群。

我需要与redis-client pod之一进行交互,主要是为了不时删除密钥。

我当前的操作方式是:

  1. 将Kubernetes dashobard隧道传输到localhost:8081

  2. 在仪表板上,执行exec进入redis客户端pod

  3. 运行:redis-cli -h redis-master -a mypassword

  4. 删除所需的密钥del "*my_key_name*"

我希望能够从本地python脚本执行此操作。 将kubernetes用于python我可以在redis-client pod上执行命令:

    v1=client.CoreV1Api()
    exec_command = [
    '/bin/sh',
    '-c',
    'redis-cli -h redis-master -a mypassword']

    resp = stream(v1.connect_get_namespaced_pod_exec,"redis-client2-5889976c9b-nv99v", 'default',
              command=exec_command,
              stderr=True, stdin=False,
              stdout=True, tty=False)

我的问题是,我无法在redis-cli上下文中执行命令,即,我可以连接到redis-cli但不能向其发送命令(仅发送至/bin/sh

有没有办法做我想做的事?

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,显然,解决方案非常简单,我可以将参数传递给redis-cli工具以执行我想要的所有命令。所以我做到了:

exec_command = [
'/bin/sh',
'-c',
'redis-cli -h redis-master -a mypassword del *my_key_name*']

就是这样