Может ли kubectl описать отображение временной метки событий pod?

#kubernetes #google-kubernetes-engine

#kubernetes #google-kubernetes-engine

Вопрос:

Kubectl describe pods выводит время, прошедшее с момента возникновения событий pod; например

 kubectl describe pods my-pod
  

результаты

 Events:
  FirstSeen     LastSeen        Count   From                                                        SubobjectPath                           TypeReason           Message
  ---------     --------        -----   ----                                                            -------------                           --------     ------          -------
  21s           21s             1       {default-scheduler }                                                                                    Normal               Scheduled       Successfully assigned xlxqh to gf959ad9f-cwvs
  19s           19s             1       {kubelet f959ad9f-cwvs}       spec.containers{gpu-sample-devices}     Normal               Pulling         pulling image "b.gcr.io/foo/sample:latest"
  

Возможно ли заставить kubectl вместо описания выводить фактическое время события?

Ответ №1:

Вы могли бы использовать комбинацию пользовательских столбцов и селектора полей, предоставляемых kubectl, для объектов событий. Пример:

 $ kubectl get events -o custom-columns=FirstSeen:.firstTimestamp,LastSeen:.lastTimestamp,Count:.count,From:.source.component,Type:.type,Reason:.reason,Message:.message 
                     --field-selector involvedObject.kind=Pod,involvedObject.name=my-pod
FirstSeen              LastSeen               Count   From                Type      Reason             Message
2020-01-21T16:30:25Z   2020-01-21T16:30:25Z   1       default-scheduler   Normal    Scheduled          Successfully assigned my-pod to 10.10.1.3
2020-01-21T16:30:26Z   2020-01-21T16:30:26Z   1       kubelet             Normal    Pulling            Pulling image "my-image"
2020-01-21T16:30:26Z   2020-01-21T16:30:26Z   1       kubelet             Normal    Pulled             Successfully pulled image "my-image"
2020-01-21T16:30:26Z   2020-01-21T16:30:26Z   1       kubelet             Normal    Created            Created container my-container
2020-01-21T16:30:27Z   2020-01-21T16:30:27Z   1       kubelet             Normal    Started            Started container my-container

  

Ответ №2:

Вы можете, если используете kubectl get events . Если вы пытаетесь просмотреть временные метки событий, вы можете запросить вывод в формате yaml / json. Обратите внимание, что он по-прежнему будет выдавать вам только firstTimestamp и lastTimestamp для каждого события.

Например,

kubectl получает события -o yaml

 - apiVersion: v1
  count: 1
  firstTimestamp: 2016-10-19T23:02:47Z
  involvedObject:
    kind: Node
    name: xyz
    uid: 1e8f04e8-9650-11e6-b1ec-42010af00002
  kind: Event
  lastTimestamp: 2016-10-19T23:02:47Z
  message: 'Node xyz event: Registered Node xyz
    in NodeController'
  metadata:
    creationTimestamp: 2016-10-19T23:02:47Z
    name: xyz
    namespace: default
    resourceVersion: "192"
    selfLink: /api/v1/namespaces/default/events/xyz.147f113f8a7c7a80
    uid: 26d053b6-9650-11e6-b1ec-42010af00002
  reason: RegisteredNode
  source:
    component: controllermanager
  type: Normal
  

Это даст необработанные ресурсы Event вида с временными метками. Затем вы можете сузить круг интересующих вас событий.

Ответ №3:

вы можете посмотреть на pod lastTransitionTime для определения типа: Ready

 kubectl get po <my-pod> -o json | jq -r '.status.conditions'
[
  {
    "lastProbeTime": null,
    "lastTransitionTime": "2021-08-10T10:47:25Z",
    "status": "True",
    "type": "Initialized"
  },
  {
    "lastProbeTime": null,
    "lastTransitionTime": "2021-08-10T10:48:00Z",
    "status": "True",
    "type": "Ready"
  },
  {
    "lastProbeTime": null,
    "lastTransitionTime": "2021-08-10T10:48:00Z",
    "status": "True",
    "type": "ContainersReady"
  },
  {
    "lastProbeTime": null,
    "lastTransitionTime": "2021-08-10T10:47:25Z",
    "status": "True",
    "type": "PodScheduled"
  }
]
  

Официальная ссылка:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle /

Ответ №4:

tl; dr; kubectl не разрешает describe события и не предлагает способ просмотра временной метки для каждого события.


kubectl не предоставляет временные метки для каждого появления события. Если событие произошло один раз, оно отобразит время, прошедшее с момента просмотра события. При наличии нескольких вхождений будет отображаться только время с момента первого вхождения и время с момента последнего вхождения.

Предположение: я не смог найти проблему с дизайном в репозитории Kubernetes, которая указывала бы на цель проектирования, стоящую за этим, но я бы предположил следующее: узлы внутри кластера могут существовать в нескольких часовых поясах, и вы могли бы получать доступ к API из совершенно другого часового пояса, чем кластер. В результате отображение прошедшего времени, как правило, гораздо более указывает на то, когда возникла проблема, чем может быть временная метка

Комментарии:

1. Извините, мой вопрос был некорректным. Я имел в виду, что когда вы выполняете kubectl description pods, выводимые события имеют истекшее время, а не фактическую временную метку.