我有一个在 Kubernetes 上运行的容器,我想在其中从本地终端运行命令。基于其 yaml 文件的容器的工作目录位于/opt/gopath/src/a/
。但是,我想在目录中运行命令/opt/gopath/src/b/
。此外,在运行此命令之前我还需要设置某些临时环境变量。所以目前,这就是我正在做的事情:
kubectl exec $pod_name -- bash -c "cd ../b/; env ENV_VARIABLE_1=ENV_VALUE_2 && env ENV_VARIABLE_2=ENV_VALUE_2 && <cmd to run>".
目前这似乎正在发挥作用。但是,我不相信这是实现这一目标的最佳方法。另外,运行此命令会显示容器中的所有环境变量——如果可能的话,我希望不要打印这些变量。有人能指出我正确的方向吗?
如果是静态变量,我建议使用配置图 https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-pod-environment-variables-using-configmap-data.
由于您需要使用本地 shell 中的临时变量,因此无需使用又长又复杂的命令,因为 exec 将终端连接到正在运行的容器 (pod)。我测试了您的问题并在本地系统上创建了一个简单的环境变量。我使用了你提供的语法:
kubectl exec -it $pod_name -- sh -c 'key=123 key2=121; echo "$key $key2"'
要传递环境变量,您可以这样设置并添加分隔符“;”变量和命令之间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)