gpt4 book ai didi

go - Kubernetes go-client 列出类似于 `kubectl get pods` 的 pod 详细信息

转载 作者:行者123 更新时间:2023-12-04 14:07:16 25 4
gpt4 key购买 nike

我正在尝试使用 Kubernetes client-go访问集群中的 pod 详细信息。
我想用它来获取在一个特定命名空间中运行的 pod 的详细信息,类似于 kubectl get pods -n <my namespace> .
我要的详情是name , status , ready , restartsage pod 的。
我怎样才能得到这些数据?

最佳答案

因此,我编写了一个函数,该函数接收 Kubernetes 客户端(有关创建客户端的详细信息,请参阅 client-go)和一个命名空间,并返回所有可用的 pod-

func GetPods(client *meshkitkube.Client, namespace string) (*v1core.PodList, error) {
// Create a pod interface for the given namespace
podInterface := client.KubeClient.CoreV1().Pods(namespace)

// List the pods in the given namespace
podList, err := podInterface.List(context.TODO(), v1.ListOptions{})

if err != nil {
return nil, err
}
return podList, nil
}
获取所有 Pod 后,我使用循环遍历每个 Pod 中的所有 Pod 和容器,并手动获取我需要的所有数据——
// List all the pods similar to kubectl get pods -n <my namespace>
for _, pod := range podList.Items {
// Calculate the age of the pod
podCreationTime := pod.GetCreationTimestamp()
age := time.Since(podCreationTime.Time).Round(time.Second)

// Get the status of each of the pods
podStatus := pod.Status

var containerRestarts int32
var containerReady int
var totalContainers int

// If a pod has multiple containers, get the status from all
for container := range pod.Spec.Containers {
containerRestarts += podStatus.ContainerStatuses[container].RestartCount
if podStatus.ContainerStatuses[container].Ready {
containerReady++
}
totalContainers++
}

// Get the values from the pod status
name := pod.GetName()
ready := fmt.Sprintf("%v/%v", containerReady, totalContainers)
status := fmt.Sprintf("%v", podStatus.Phase)
restarts := fmt.Sprintf("%v", containerRestarts)
ageS := age.String()

// Append this to data to be printed in a table
data = append(data, []string{name, ready, status, restarts, ageS})
}
这将产生与运行 kubectl get pods -n <my namespace> 时获得的完全相同的数据。 .

关于go - Kubernetes go-client 列出类似于 `kubectl get pods` 的 pod 详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67543729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com