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
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
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
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