关于kubernetes:kubectl仅针对Pod获取事件

kubectl get events only for a pod

当我运行kubectl -n abc-namespace describe pod my-pod-zl6m6时,我最终获得了有关Pod的大量信息以及"事件"。

是否可以使用kubectl describekubectl get命令仅输出Pod的事件?


您可以使用kubectlevent命令。

要过滤特定的窗格,可以使用字段选择器:

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

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


为什么不显示您的podname的所有事件和grep:

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


  • 您应该了解此对象的数据结构。您可以使用kubectl get events --output json检查数据结构。
  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $ 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=[...]的操作。
  • 此答案是指@mszalbach的。


    您可以描述您的广告连播,然后grep事件后的行数。如果要监视它,可以添加手表。

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

    如果您只想简短查看事件消息,则@mszalbach答案是最佳答案。

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

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