Kubernetes go-client: Retrieve Pod Details Like kubectl get pods
To obtain pod details in a Kubernetes cluster using the client-go library, similar to the kubectl get pods -n
Create a Kubernetes client: Refer to the client-go documentation for details on obtaining a Kubernetes client.
Specify the target namespace: Determine the namespace where the desired pods reside, similar to the -n
Retrieve the pod list: Utilize the client's CoreV1() method to interface with the Pods resource within the specified namespace. Use the List() method to obtain a PodList object containing all pods in the namespace.
Extract pod information: Iterate through the PodList, accessing each pod's metadata and status information. For detailed information, refer to the Pod and PodStatus struct definitions in the Kubernetes API documentation.
Extract additional details: If required, calculate attributes such as pod age, container restarts, and ready status using the pod's creation timestamp and container statuses.
Here's a sample code snippet that demonstrates how to get the pod name, status, ready status, restarts, and age:
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})
}
This process will provide the same data that kubectl get pods -n
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3