使用 Kubectl API,从 pod 中读取容器启动时间

Using Kubectl API, read container start time from within pod

要知道容器的启动时间,我们一般会这样描述pod: kubectl describe pod <pod-name>。我需要通过 kubectl api 以时间戳或任何格式访问容器的开始时间。在 API 中存在吗?

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

实际上,您可以通过状态和状态转换来获取它。使用 kubectl 它看起来像这样:

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

现在对我来说会产生 2021-05-25T15:57:03Z

我已经写了一个 shell-script 来解决这个问题,它通过 kube API 从 pod 内部跟踪 pods 的信息,并为所需的 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) 的最后一次重启时间。