米琪卡哇伊
因此,我编写了一个函数,该函数采用Kubernetes客户端(有关制作客户端的详细信息,请参阅condue-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>