Home >Backend Development >Golang >How can I retrieve detailed pod information using the Kubernetes go-client, similar to the `kubectl get pods` command?
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:
<code class="go">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 }</code>
<code class="go">// 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}) }</code>
This process will provide the same data that kubectl get pods -n
The above is the detailed content of How can I retrieve detailed pod information using the Kubernetes go-client, similar to the `kubectl get pods` command?. For more information, please follow other related articles on the PHP Chinese website!