Kubernetes 使用Kubectl API,从pod内读取容器开始时间

Kubernetes 使用Kubectl API,从pod内读取容器开始时间,kubernetes,kubectl,kubernetes-apiserver,Kubernetes,Kubectl,Kubernetes Apiserver,为了了解容器开始时间,我们通常使用以下方法描述pod: kubectl描述pod 我需要通过kubectl api以时间戳或任何格式访问容器的开始时间。请告诉我是否有这样的API。您可以给pod API访问权限,但这会很棘手(没有简单的策略方式说“只访问自身”)。有向下的API卷系统,但我认为它不包括此字段?您可以让pod API访问,但这将是一个棘手的问题(没有简单的策略方式说“仅访问自身”)。有向下的API卷系统,但我认为它不包括此字段?实际上,您可以通过状态和状态转换获取此字段。对于kub

为了了解容器开始时间,我们通常使用以下方法描述pod:
kubectl描述pod


我需要通过kubectl api以时间戳或任何格式访问容器的开始时间。请告诉我是否有这样的API。

您可以给pod API访问权限,但这会很棘手(没有简单的策略方式说“只访问自身”)。有向下的API卷系统,但我认为它不包括此字段?

您可以让pod API访问,但这将是一个棘手的问题(没有简单的策略方式说“仅访问自身”)。有向下的API卷系统,但我认为它不包括此字段?

实际上,您可以通过状态和状态转换获取此字段。对于kubectl,它看起来是这样的:

kubectl get pod$PODNAME-o jsonpath='{.status.conditions[?(@.type==“Ready”)].lastTransitionTime}'


将立即为我提供
2021-05-25T15:57:03Z

您可以通过状态和状态转换有效地获取此信息。对于kubectl,它看起来是这样的:

kubectl get pod$PODNAME-o jsonpath='{.status.conditions[?(@.type==“Ready”)].lastTransitionTime}'


将立即为我生成
2021-05-25T15:57:03Z

我已经编写了一个
shell脚本来解决这个问题,它通过kube API跟踪pod内部的pod信息,并解析所需的
lastTransitionTime
参数:

APISERVER=https://kubernetes.default.svc.cluster.local
SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
TOKEN=$(cat ${SERVICEACCOUNT}/token)
curl -ik -H "Authorization: Bearer ${TOKEN}" ${APISERVER}/api/v1/namespaces/${NAMESPACE}/pods | grep "lastTransitionTime\:*[T]*\:*\:*" | tail -1  

此脚本为我输出pod的上次重新启动时间(
tail-1
)。

我编写了一个
shell脚本来解决此问题,它通过kube API跟踪pod内部的pod信息,并解析所需的
lastTransitionTime
参数:

APISERVER=https://kubernetes.default.svc.cluster.local
SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
TOKEN=$(cat ${SERVICEACCOUNT}/token)
curl -ik -H "Authorization: Bearer ${TOKEN}" ${APISERVER}/api/v1/namespaces/${NAMESPACE}/pods | grep "lastTransitionTime\:*[T]*\:*\:*" | tail -1  

此脚本为我输出pod的上次重新启动时间(
tail-1
)。

为什么您需要pod本身的时间?主容器进程在不做任何Kubernetes特定的事情的情况下记住它启动的时间是否足够?Hi@DavidMaze,这是websub(一个模块)所必需的。我需要提供一个URL,websub代码可以从中获取容器开始时间。仅供参考,Websub需要重新发布时间参数。为什么您需要从pod本身中获取此参数?主容器进程在不做任何Kubernetes特定的事情的情况下记住它启动的时间是否足够?Hi@DavidMaze,这是websub(一个模块)所必需的。我需要提供一个URL,websub代码可以从中获取容器开始时间。仅供参考,Websub希望重新发布时间参数。感谢您的输入。我一直在寻找这个参数
lastTransitionTime
,尽管我需要从pod内部找到它。因此,我为它编写了一个shell脚本,用于跟踪kube API在pod中运行,我得到了结果。@mac_55您可以将kubectl容器放在一旁,并将其用作shell命令。否则,如回答中所述,您也可以查询RESTAPI。谢谢您的输入。我一直在寻找这个参数
lastTransitionTime
,尽管我需要从pod内部找到它。因此,我为它编写了一个shell脚本,用于跟踪kube API在pod中运行,我得到了结果。@mac_55您可以将kubectl容器放在一旁,并将其用作shell命令。否则,如回答中所述,您也可以查询RESTAPI。