kubernetes kubectl get pod:字段选择器

5us2dqdw  于 2023-05-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(197)

我运行这个命令:

# kubectl get pods --all-namespaces --field-selector=metadata.namespace!=kube-system,metadata.namespace!=monitoring,metadata.namespace!=rtf

这会给我这样的输出:

NAMESPACE                        NAME              READY   STATUS    RESTARTS   AGE
123456-1234-1234-1234-123456789  some-app-123456   2/2     Running   0          10m
123456-1234-1234-1234-123456789  some-app-789112   1/2     Running   0          10m

我希望能够在READY列上进行筛选,但似乎找不到正确的字段选择器值。
这可能吗?
我试着搜索可用的字段选择器列表,但没有任何运气。有可能根本就不存在。

vd2z7a6w

vd2z7a6w1#

我不认为kubectl get pods直接基于READY列支持field selectors
但是kubectl提供了一种将资源配置(YAML)直接导出到JSON, -o json的方法。然后,我们可以使用jqkubectl读取、解析和改变K8s对象结果。
在您的例子中,您可以使用这样的命令来过滤所有不处于ready状态的pod(不包括命名空间kube-systemmonitoring & rtf中的pods):

kubectl get pods --all-namespaces --field-selector=metadata.namespace!=kube-system,metadata.namespace!=monitoring,metadata.namespace!=rtf -ojson | jq '.items[] | select(.status.containerStatuses[].ready==false) | .metadata.namespace + "/" + .metadata.name'

和/或更改ready=true以使Pod处于ready状态。
查看this文章,了解更多有关jqkubectl的此类用法
希望能帮上忙。

相关问题