Kubernetes go-client: recuperar detalles del pod como kubectl get pods
Para obtener detalles del pod en un clúster de Kubernetes usando la biblioteca client-go , similar al comando kubectl get pods -n
Cree un cliente de Kubernetes: Consulte consulte la documentación de client-go para obtener detalles sobre cómo obtener un cliente Kubernetes.
Especifique el espacio de nombres de destino: determine el espacio de nombres donde residen los pods deseados, similar a la opción -n
Recuperar la lista de pods: utilice el método CoreV1() del cliente para interactuar con el recurso Pods dentro del espacio de nombres especificado. Utilice el método List() para obtener un objeto PodList que contenga todos los pods en el espacio de nombres.
Extraiga información del pod: itere a través de PodList, accediendo a los metadatos y la información de estado de cada pod. Para obtener información detallada, consulte las definiciones de las estructuras Pod y PodStatus en la documentación de la API de Kubernetes.
Extraiga detalles adicionales: si es necesario, calcule atributos como la antigüedad del pod, los reinicios del contenedor y el estado de listo utilizando la marca de tiempo de creación del pod y estados del contenedor.
Aquí hay un fragmento de código de muestra que muestra cómo obtener el nombre del pod, el estado, el estado listo, los reinicios y edad:
func GetPods(client *meshkitkube.Client, namespace string) (*v1core.PodList, error) {
podInterface := client.KubeClient.CoreV1().Pods(namespace)
podList, err := podInterface.List(context.TODO(), v1.ListOptions{})
return podList, err
}
// Iterate through pods and collect required data
for _, pod := range podList.Items {
podCreationTime := pod.GetCreationTimestamp()
age := time.Since(podCreationTime.Time).Round(time.Second)
podStatus := pod.Status
containerRestarts, containerReady, totalContainers := 0, 0, len(pod.Spec.Containers)
for container := range pod.Spec.Containers {
containerRestarts = podStatus.ContainerStatuses[container].RestartCount
if podStatus.ContainerStatuses[container].Ready {
containerReady
}
}
name := pod.GetName()
ready := fmt.Sprintf("%v/%v", containerReady, totalContainers)
status := fmt.Sprintf("%v", podStatus.Phase)
restarts := fmt.Sprintf("%v", containerRestarts)
ageS := age.String()
data = append(data, []string{name, ready, status, restarts, ageS})
}
Este proceso proporcionará los mismos datos que ofrece kubectl get pods -n
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3