kubectl 仅获取 pod 的事件

kubectl get events only for a pod

当我 运行 kubectl -n abc-namespace describe pod my-pod-zl6m6 时,我最终获得了很多关于 pod 的信息以及事件。

有没有办法使用 kubectl describekubectl get 命令只输出 pod 的事件?

为什么不为您的播客名称显示所有事件和 grep:

kubectl get events --all-namespaces  | grep -i $podname

可以使用kubectlevent命令。

要过滤特定广告连播,您可以使用字段选择器:

kubectl get event --namespace abc-namespace --field-selector involvedObject.name=my-pod-zl6m6

要查看可能的字段,您可以对任何事件使用 kubectl describe

您可以描述您的广告连播,然后在您的活动之后查询行数。想要监控可以添加手表

watch "kubectl describe pod my-pod-zl6m6 | grep -A20 Events"

如果您只想以简短清晰的方式查看事件消息,@mszalbach

但是,如果您希望完整显示所有事件及其所有元素,您可以 运行:

kubectl describe event [POD_NAME] --namespace [POD's_NAMESPACE]

此答案为 的答案提供了上下文。

  1. 您应该首先了解事件对象的数据结构。您可以使用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"
                },
                ...
    
  2. 那么,你可以这样做

    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 将被删除)。