Maison >développement back-end >Golang >Comment répertorier les détails des pods dans Kubernetes à l'aide du client Go ?

Comment répertorier les détails des pods dans Kubernetes à l'aide du client Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-24 19:04:02746parcourir

How to List Pod Details in Kubernetes using the Go Client?

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 :

  1. Importez les packages nécessaires :
<code class="go">import (
    "context"
    "fmt"
    "time"

    corev1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)</code>
  1. Créez une fonction pour lister les pods dans l'espace de noms souhaité :
<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>
  1. Parcourez les packages récupérés pods pour extraire les données requises :
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn