#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, выводимые события имеют истекшее время, а не фактическую временную метку.