小编Jam*_*mes的帖子

将 shell 变量传递给通过 kubectl exec 执行的命令

我在测试时执行一项重复性任务,需要连接到 cassandra pod 并运行几个 CQL 查询。

这是“手动”方法:

  1. 在集群控制器节点上,我使用 kubectl 在 pod 上执行 shell:
    kubectl exec pod/my-app-cassandra-pod-name -it --namespace myns -- /bin/bash

  2. 进入 pod 后,我执行 cqlsh:,
    cqlsh $(hostname -i) -u myuser
    然后以交互方式输入密码

  3. 我以交互方式执行 cql 查询

现在,我想要一个 bash 脚本来自动执行此操作。我的目的是通过 kubectl exec 直接运行 cqlsh。

我遇到的问题是,显然我无法在 kubectl exec 的“命令”部分中使用 shell 变量。我需要 shell 变量来存储 a) pod 的 IP、b) 作为第一个查询的输入的 id,以及 c) 中间查询结果(后两个尚未添加到脚本中)。

到目前为止,我使用的是虚拟 CQL 查询:

#!/bin/bash

CASS_IP=$(kubectl exec pod/my-app-cassandra-pod-name -it --namespace myns -- /usr/bin/hostname -i)
echo $CASS_IP   # This prints out the IP address just …
Run Code Online (Sandbox Code Playgroud)

bash cassandra kubernetes kubectl

1
推荐指数
1
解决办法
1574
查看次数

标签 统计

bash ×1

cassandra ×1

kubectl ×1

kubernetes ×1