Kubernetes go-client : récupérer les détails des pods Comme kubectl get pods
Pour obtenir les détails des pods dans un cluster Kubernetes à l'aide de la bibliothèque client-go , similaire à 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 dans lequel les pods souhaités résident, similaire à l'option -n
Récupérer la liste des pods : utilisez la méthode CoreV1() du client pour vous interfacer avec la ressource 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 statuts 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 :
<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{}) return podList, err }</code>
<code class="go">// 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}) }</code>
Ce processus fournira les mêmes données que kubectl obtient les pods -n
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!