当我运行 kubectl -n abc-namespace describe pod my-pod-zl6m6时,我得到了很多关于 pod 的信息以及最后的 Events。
kubectl -n abc-namespace describe pod my-pod-zl6m6
是否有一种方法可以使用 kubectl describe或 kubectl get命令仅输出 pod 的 Events?
kubectl describe
kubectl get
为什么不显示您的 podname 的所有事件和 grep:
kubectl get events --all-namespaces | grep -i $podname
您可以使用 kubectl的 event命令。
kubectl
event
要筛选特定的 pod,可以使用字段选择器:
kubectl get event --namespace abc-namespace --field-selector involvedObject.name=my-pod-zl6m6
要查看哪些字段是可能的,您可以在任何事件上使用 kubectl describe。
您可以描述 pod,然后在 Events 之后获取代码行数。如果您想要监视它,可以添加一个手表。
watch "kubectl describe pod my-pod-zl6m6 | grep -A20 Events"
如果您只希望事件消息处于简短而清晰的视图中,则 @ mszalbach 答案是最好的。
但是,如果希望完全显示所有 Events 及其所有元素,则可以运行:
kubectl describe event [POD_NAME] --namespace [POD's_NAMESPACE]
这个答案为 @ mszalbach’s的答案提供了背景。
您应该首先了解事件对象的数据结构。您可以使用 kubectl get events --output json检查数据结构。
kubectl get events --output json
$ kubectl get events --output json { "apiVersion": "v1", "items": [ { "apiVersion": "v1", "count": 259, "eventTime": null, "firstTimestamp": "2020-04-15T12:00:46Z", "involvedObject": { <------ **this** "apiVersion": "v1", "fieldPath": "spec.containers{liveness}", "kind": "Pod", "name": "liveness-exec", <------ **this** "namespace": "default", "resourceVersion": "725991", "uid": "3f497636-e601-48bc-aec8-72b3edec3d95" }, ...
然后,你可以做这样的事情
kubectl get events --field-selector involvedObject.name=[...]`.
所有特定于部署的事件
kubectl get events --field-selector involvedObject.name=$DEPLOYMENT_NAME -n $NAMESPACE
除了正常
get events --field-selector type!=Normal -A
有一个新的 kubectl 命令可以满足您的要求:
kubectl alpha events pod my-pod-zl6m6
(在某个时候,alpha将会下跌)。
alpha
或者,您可以使用 JQ工具:
kubectl get events -n namespace-name -ojson | jq '.items[] | select ((.involvedObject.name=="pod-name") and (.involvedObject.kind=="Pod"))'
请注意,我在 select 子句 .involvedObject.kind=="Pod"中使用了一个附加条件,以过滤出所有与我们想要的 Pod 具有相同名称和名称空间的非 Pod 对象。
.involvedObject.kind=="Pod"
在使用 最佳答案中包含的解决方案时要注意这一点。您也可以将附加的筛选器选择器添加到命令中。
kubectl get event --namespace abc-namespace --field-selector involvedObject.name=my-pod-zl6m6,involvedObject.kind=Pod