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
Libérer: 2024-10-24 19:04:02
original
757 Les gens l'ont consulté

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>
Copier après la connexion
  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>
Copier après la connexion
  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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal