"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je récupérer des informations détaillées sur les pods à l'aide du client Go Kubernetes, similaire à la commande « kubectl get pods » ?

Comment puis-je récupérer des informations détaillées sur les pods à l'aide du client Go Kubernetes, similaire à la commande « kubectl get pods » ?

Publié le 2024-11-08
Parcourir:185

How can I retrieve detailed pod information using the Kubernetes go-client, similar to the `kubectl get pods` command?

Kubernetes go-client : récupérer les détails du pod Comme kubectl obtenir des pods

Pour obtenir les détails du pod dans un cluster Kubernetes à l'aide de la bibliothèque client-go , similaire à la commande kubectl get pods -n , suivez ces étapes :

Créez un client Kubernetes : reportez-vous à la documentation client-go pour plus de détails sur l'obtention d'un client Kubernetes.

Spécifiez l'espace de noms cible : déterminez l'espace de noms où résident les pods souhaités, similaire à l'option -n dans kubectl.

Récupérez la liste des pods : utilisez la méthode CoreV1() du client pour interagir avec le Ressource de pods dans l'espace de noms spécifié. Utilisez la méthode List() pour obtenir un objet PodList contenant tous les pods de l'espace de noms.

Extraire les informations du pod : parcourez la PodList, en accédant aux métadonnées et aux informations d'état de chaque pod. Pour des informations détaillées, reportez-vous aux définitions de structure Pod et PodStatus dans la documentation de l'API Kubernetes.

Extraire des détails supplémentaires : si nécessaire, calculez des attributs tels que l'âge du pod, les redémarrages du conteneur et l'état de préparation à l'aide de l'horodatage de création du pod et états des conteneurs.

Voici un exemple d'extrait de code qui montre comment obtenir le nom, l'état, l'état de préparation, les redémarrages et l'âge du pod :

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
}
// 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})
}

Ce processus fournira les mêmes données que celles proposées par kubectl get pods -n .

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3