Kubectl 通过容器环境变量获取 Pod



我可以将kubectl get pods与某种支持基于容器环境变量获取单个 pod 的字段选择器或选择器一起使用吗?

我想得到这个豆荚,而且只有成千上万个豆荚中的这个豆荚,基于ENVIRONMENT_VARIABLE的价值与kubectl.

apiVersion: v1
kind: Pod
metadata:
name: my-pod
namespace: default
spec:
containers:
- env:
- name: ENVIRONMENT_VARIABLE
value: abc123
image: my-images
imagePullPolicy: IfNotPresent
name: my-pod

kubectl get pods --field-selector否,不支持字段

kubectl get pods -l它不是一个标签

我还能尝试什么,如果有的话?

我有一个带有环境变量的 podmy-podPORT8080如下:

metadata:
...
name: my-pod
...
spec:
containers:
- env:
- name: PORT
value: "8080"
...

我可以使用kubectl来过滤这个豆荚,例如:

$ kubectl get pods --all-namespaces 
-o=jsonpath=
'{range .items[*]}{.metadata.name}{"t"}{.spec.containers[*].env[?(@.name=="PORT")]}{"n"}{end}' | 
grep 8080
output is:
my-pod  map[name:PORT value:8080]

因此,您可以尝试:

kubectl get pods --all-namespaces 
-o=jsonpath=
'{range .items[*]}{.metadata.name}{"t"}{.spec.containers[*].env[?(@.name=="ENVIRONMENT_VARIABLE")]}{"n"}{end}' | 
grep abc123

viajq...

按名称

kubectl get pods --all-namespaces --chunk-size=0 -o json | 
jq '.items[] | select(.spec.containers[].env[]?.name == "ENVNAME")
| .metadata.name'

按值

kubectl get pods --all-namespaces --chunk-size=0 -o json | 
jq '.items[] | select(.spec.containers[].env[]?.value == "AVALUE")
| .metadata.name'

按名称和值

kubectl get pods --all-namespaces --chunk-size=0 -o json | 
jq '.items[] | select(.spec.containers[].env[]? | .name == "ENVNAME" and .value == "AVALUE")
| .metadata.name'

或者有适用于大多数语言的 API 客户端库。如果将--v=9添加到kubectl命令,它将输出它正在访问的终结点以收集数据。在这种情况下:https://api-server/api/v1/pods

相关内容

  • 没有找到相关文章

最新更新