正在查找Kubernetes CreationTimestamp的go代码->;年龄
我试图从KubernetesAPI中获取命令输出中的“AGE”列值正在查找Kubernetes CreationTimestamp的go代码->;年龄,go,kubernetes,kubectl,Go,Kubernetes,Kubectl,我试图从KubernetesAPI中获取命令输出中的“AGE”列值 > kubectl get po NAME READY STATUS RESTARTS AGE ingress-nginx-controller-56c75d774d-d7zx8 1/1 Running 1 29d nfs-client-provisioner-5cd984898b-s8fzh
> kubectl get po
NAME READY STATUS RESTARTS AGE
ingress-nginx-controller-56c75d774d-d7zx8 1/1 Running 1 29d
nfs-client-provisioner-5cd984898b-s8fzh 1/1 Running 1 13d
这样我就可以得到CreationTimestamp了
Age: volumeItem.ObjectMeta.CreationTimestamp.String(),
我试图找到进行时间转换的代码,但在kubernetes github repo中找不到
我喜欢将其转换为与kubectl相同的格式。因此,请给我一个例子,并指出在回购协议上执行此操作的正确行。由于是类型,您只需使用获取当前时间和创建时间戳之间的差异,您将获得资源的年龄
您可以使用time.Now()
获取当前时间戳
package main
import (
"fmt"
"time"
)
func main() {
currentTime := time.Now()
creationTime := currentTime.Add(time.Hour * 12)
diff := creationTime.Sub(currentTime)
fmt.Println("Age:", diff)
}
输出:
Age: 12h0m0s
注:以上内容用于示例目的,因为创建时间通常早于当前时间。不是100%确定(这就是为什么我不回答,只是发表评论),但我猜是
now-creationTimestamp
传递给HumanDuration()
从这里开始:k8s.io/apimachinery/pkg/util/duration
@bulli,这就是我要找的人!!。。非常感谢。谢谢你的回答。我知道是时候了。kubectl正在对此进行格式化。例如,它不会显示“12h0m0s”之类的内容。根据差异,它有一个逻辑。有时它显示秒,有时它显示分钟、天等。这就是为什么我在k8s repo或任何地方要求提供代码片段的原因。
Age: 12h0m0s