如何列出其中包含 CharDevice 的 kubernetes pod?
how to list the kubernetes pod which has CharDevice in it?
如何列出其中包含 CharDevice 的 Kubernetes pod?
我可以使用 CharDevice 获取 pod,但只需要打印 pod 名称
kubectl get pod -o jsonpath='{spec.volumes.hostPath.type=="CharDevice"}'
您可以先获得 json,然后使用 jq
获得想要的结果:
kubectl get pod -o json |
jq -r '.items[]|select(any(.spec.volumes[];.hostPath.type=="CharDevice")).metadata.name'
我认为使用 Kubectl
提供的 jsonpath
无法实现您期望的 filter/parsing。但是,如果您只想使用 kubectl
而不使用任何其他工具,则可以使用 go-template
:
kubectl get pod -A -o go-template='{{range $index, $element := .items}}{{range $key, $vol := .spec.volumes}}{{range $sk ,$sv := .hostPath}}{{if (eq $sv "CharDevice") }}{{$element.metadata.name}}{{"\n"}}{{end}}{{end}}{{end}}{{end}}'
可读性:
您可以使用{{-
来trim出左边的空格,-}}
可以trim出右边的空格。使用此信息,可以将与上面相同的命令转换为:
kubectl get pod -A -o go-template='{{- range $index, $element := .items -}}
{{- range $key, $vol := .spec.volumes -}}
{{- range $sk ,$sv := .hostPath -}}
{{- if (eq $sv "CharDevice") -}}
{{- $element.metadata.name -}}{{"\n"}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}'
如何列出其中包含 CharDevice 的 Kubernetes pod?
我可以使用 CharDevice 获取 pod,但只需要打印 pod 名称
kubectl get pod -o jsonpath='{spec.volumes.hostPath.type=="CharDevice"}'
您可以先获得 json,然后使用 jq
获得想要的结果:
kubectl get pod -o json |
jq -r '.items[]|select(any(.spec.volumes[];.hostPath.type=="CharDevice")).metadata.name'
我认为使用 Kubectl
提供的 jsonpath
无法实现您期望的 filter/parsing。但是,如果您只想使用 kubectl
而不使用任何其他工具,则可以使用 go-template
:
kubectl get pod -A -o go-template='{{range $index, $element := .items}}{{range $key, $vol := .spec.volumes}}{{range $sk ,$sv := .hostPath}}{{if (eq $sv "CharDevice") }}{{$element.metadata.name}}{{"\n"}}{{end}}{{end}}{{end}}{{end}}'
可读性:
您可以使用{{-
来trim出左边的空格,-}}
可以trim出右边的空格。使用此信息,可以将与上面相同的命令转换为:
kubectl get pod -A -o go-template='{{- range $index, $element := .items -}}
{{- range $key, $vol := .spec.volumes -}}
{{- range $sk ,$sv := .hostPath -}}
{{- if (eq $sv "CharDevice") -}}
{{- $element.metadata.name -}}{{"\n"}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}'