Maison >développement back-end >Golang >Comment répertorier les détails des pods dans Kubernetes à l'aide du client Go ?
Liste des détails du pod avec Kubernetes Go-Client
L'accès aux détails du pod à l'aide de la bibliothèque Kubernetes client-go vous permet de récupérer par programme des informations similaires à à l'aide de la commande kubectl get pods.
Pour obtenir des détails spécifiques tels que le nom, l'état, l'état de préparation, les redémarrages et l'âge des pods dans un espace de noms donné, suivez ces étapes :
<code class="go">import ( "context" "fmt" "time" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" )</code>
<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{}) if err != nil { return nil, err } return podList, nil }</code>
<code class="go">// List pod details similar to `kubectl get pods -n <my namespace>` for _, pod := range podList.Items { podCreationTime := pod.GetCreationTimestamp() age := time.Since(podCreationTime.Time).Round(time.Second) podStatus := pod.Status containerRestarts := int32(0) containerReady := 0 totalContainers := 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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!