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 基于ImagePullBackOff状态,如何使用kubectl和filter查看POD?_Kubernetes_Kubectl - Fatal编程技术网

Kubernetes 基于ImagePullBackOff状态,如何使用kubectl和filter查看POD?

Kubernetes 基于ImagePullBackOff状态,如何使用kubectl和filter查看POD?,kubernetes,kubectl,Kubernetes,Kubectl,我想做一个kubectl get pods并过滤pod处于ImagePullBackOff状态的位置 我尝试了kubectl get pods--field selector=status.phase=waiting和kubectl get pods--field selector=status.phase=ImagePullBackOff,但没有返回任何结果 我已经用-o JSON查看了JSON输出: ... { "image": "zz

我想做一个
kubectl get pods
并过滤pod处于
ImagePullBackOff
状态的位置

我尝试了
kubectl get pods--field selector=status.phase=waiting
kubectl get pods--field selector=status.phase=ImagePullBackOff
,但没有返回任何结果

我已经用
-o JSON
查看了JSON输出:

...
            {
                "image": "zzzzzzzzzzzzzzzz",
                "imageID": "",
                "lastState": {},
                "name": "nginx",
                "ready": false,
                "restartCount": 0,
                "state": {
                    "waiting": {
                        "message": "Back-off pulling image \"zzzzzzzzzzzzzzzz\"",
                        "reason": "ImagePullBackOff"
                    }
                }
            }
...
如果我尝试以该值为目标:

kubectl get pods --field-selector=state.waiting=ImagePullBackOff 
Error from server (BadRequest): Unable to find "/v1, Resource=pods" that match label selector "", field selector "state.waiting=ImagePullBackOff": field label not supported: state.waiting

您可以使用下面的命令:

kubectl get pods --all-namespaces -o custom-columns=NAMESPACE:metadata.namespace,POD:metadata.name,PodIP:status.podIP,STATE:status.containerStatuses[*].state.waiting.reason | grep ImagePullBackOff
顺便说一句:您的命令
kubectl get pods--field selector=state.waiting=ImagePullBackOff
失败,因为kubernetes中没有
状态。waiting
选择器。这就是为什么您会看到
字段标签不受支持:state.waiting
error

根据和:

Pod的状态字段是一个PodStatus对象,它有一个相位字段

以下是阶段的可能值:

  • 未决
  • 运行
  • 成功
  • 失败
  • 不为人知

因此,请使用输出。

正如您在kubernetes的官方文档中所看到的

支持的字段选择器因Kubernetes资源类型而异。所有资源类型都支持metadata.name和metadata.namespace字段。使用不支持的字段选择器会产生错误

参考:

您可以尝试以下方法:

kubectl get pod --all-namespaces | grep "ImagePullBackOff" | awk '{print $2 " -n " $1}' | xargs kubectl get pod -o json
或:


使用
json
输出和管道通过
jq

kubectl get pod -o=json | jq '.items[]|select(any( .status.containerStatuses[]; .state.waiting.reason=="ImagePullBackOff"))|.metadata.name'

最后一块
|.metadata.name
意味着它将列出pod名称,而不是整个结构

这是一个令人印象深刻的jq用法!非常感谢。
kubectl get pod -o=json | jq '.items[]|select(any( .status.containerStatuses[]; .state.waiting.reason=="ImagePullBackOff"))|.metadata.name'