Kubernetes kubectl通过容器环境变量获取POD
我可以将Kubernetes kubectl通过容器环境变量获取POD,kubernetes,kubectl,Kubernetes,Kubectl,我可以将kubectl get pods与某种字段选择器或支持基于容器环境变量获取单个pod的选择器一起使用吗 我想得到这个pod,并且根据kubectl的ENVIRONMENT\u变量的值,从成千上万个pod中只得到这个pod apiVersion: v1 kind: Pod metadata: name: my-pod namespace: default spec: containers: - env: - name: ENVIRONMENT_VARIABLE
kubectl get pods
与某种字段选择器或支持基于容器环境变量获取单个pod的选择器一起使用吗
我想得到这个pod,并且根据kubectl
的ENVIRONMENT\u变量的值,从成千上万个pod中只得到这个pod
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--字段选择器
no,不支持字段
kubectl获取吊舱-l
这不是标签
如果有的话,我还可以尝试什么呢?我有一个pod我的pod
,带有一个环境变量PORT
,值8080
,比如:
metadata:
...
name: my-pod
...
spec:
containers:
- env:
- name: PORT
value: "8080"
...
我可以使用kubectl
来过滤这个pod,比如:
$ 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
经由
名字
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'
或者大多数语言都有相同的语言。如果将--v=9
添加到kubectl
命令中,它将输出所点击的端点以收集数据。在这种情况下:您可以尝试使用jsonpath选择器获取pods的环境变量值和pods的名称,例如kubectl get pods-o jsonpath=“{…}”
然后管道输出和环境变量值的grep:|grep
-使用jsonpath进行过滤似乎也是可能的。。。。