Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从kubernetes pods中获取一个环境变量,并将其存储在一个数组中_Kubernetes_Jsonpath - Fatal编程技术网

从kubernetes pods中获取一个环境变量,并将其存储在一个数组中

从kubernetes pods中获取一个环境变量,并将其存储在一个数组中,kubernetes,jsonpath,Kubernetes,Jsonpath,用例是从命名空间中运行的所有pod中获取环境变量*COUNTRY kubectl get pods podname -n namespace -o 'jsonpath={.spec.containers[0].env[?(@.name~="^COUNTRY")].value}' 这似乎不起作用。任何潜在客户?您可以使用以下命令检索此信息: kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.spec.contain

用例是从命名空间中运行的所有pod中获取环境变量*COUNTRY

kubectl get pods podname -n namespace -o 'jsonpath={.spec.containers[0].env[?(@.name~="^COUNTRY")].value}'

这似乎不起作用。任何潜在客户?

您可以使用以下命令检索此信息:

kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.spec.containers[*].env[*].name}{"\t"}{.spec.containers[*].env[*].value}{"\n"}{end}' | grep COUNTRY | cut -f 2
它将返回变量内容,如下所示:

$ kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.spec.containers[*].env[*].name}{"\t"}{.spec.containers[*].env[*].value}{"\n"}{end}' | grep VAR | cut -f 2

123456
7890123

希望这有帮助。我刚刚能够在我的电脑上运行它,它运行得最好

但是它将只搜索COUNTRY env变量,如果COUNTRY env变量以NEW_COUNTRY或OLD_COUNTRY开头会怎样?请尝试使用以下命令:
kubectl get pods--all namespace-o jsonpath='{range.items[*]}{.spec containers[*].env[*].name}{{t}{.spec containers[*].env[].value}{end}“| grep COUNTRY | cut-f 2
有没有办法在kubernetes中获取pod的chartname,我可以看到标签但无法获取
kubectl获取pods pr3819-mysql-797cbd755d-r2sxj-n pr3819——没有标题-o自定义列=“:metadata.labels.chart”
类似的内容
kubectl get pods--all namespaces-o jsonpath='{range.items[*]}{.metadata.name}{{\t}{.metadata.labels.chart}{{\n}{end}'
这将在同一行中返回Pod名称和图表名称。您只能使用
{.items[*].metadata.labels.Chart}
获取图表名称。在选择编程语言时使用可能比编写
kubectl
脚本更容易,尤其是尝试将非平凡逻辑适配到jsonpath表达式中。
 kubectl get pods -o=jsonpath='{.items[*].spec.containers[*].env[?(@.name=="COUNTRY")].value}'