How to Display Advanced Pod Status Information Using Kubernetes Go Client
Unlike the basic pod status information provided by pod.Status.Phase, which only offers a limited set of options, the Kubernetes Go client allows you to retrieve more detailed status information, similar to what is displayed in the kubectl get pods command under the "Status" column.
Getting Init:0/1 and PodInitializing Statuses
To obtain the advanced statuses, such as Init:0/1 and PodInitializing, you can utilize the following steps:
Import the necessary libraries:
<code class="go">import ( "context" "fmt" "github.com/golang/protobuf/ptypes" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" )</code>
Create a Kubernetes clientset:
<code class="go">clientset, err := kubernetes.NewForConfig(config) if err != nil { // Handle error }</code>
Retrieve the pods:
<code class="go">pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{}) if err != nil { // Handle error }</code>
Iterate through the pods and retrieve their detailed status information:
<code class="go">for i, pod := range pods.Items { podInfo := fmt.Sprintf("[%d] Pod: %s", i, pod.GetName()) // Get pod conditions for _, condition := range pod.Status.Conditions { // Check for `Initialized` condition if condition.Type == "Initialized" { podInfo += fmt.Sprintf(", Status: PodInitializing") } // Check for `ContainersReady` condition if condition.Type == "ContainersReady" { // Parse the `LastProbeTime` condition lastProbeTime, err := ptypes.Timestamp(condition.LastProbeTime) if err != nil { // Handle error } podInfo += fmt.Sprintf(", Status: Init:%d/%d", condition.Status == metav1.ConditionFalse, pod.Status.InitContainerStatuses != nil ? len(pod.Status.InitContainerStatuses) : 0) + lastProbeTime.String() } } fmt.Println(podInfo) }</code>
By using this approach, you can programmatically retrieve the advanced status information for pods, including statuses like Init:0/1 and PodInitializing, allowing you to gain a deeper understanding of the health and state of your pods.
The above is the detailed content of How to Get Advanced Pod Status Information in Kubernetes Go Client?. For more information, please follow other related articles on the PHP Chinese website!