Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh mendapatkan maklumat pod terperinci menggunakan Kubernetes go-client, sama seperti arahan `kubectl get pods`?
Kubernetes go-client: Dapatkan Butiran Pod Seperti kubectl get pods
Untuk mendapatkan butiran pod dalam kelompok Kubernetes menggunakan pustaka client-go , serupa dengan kubectl get pods -n
Buat klien Kubernetes: Rujuk dokumentasi klien-go untuk mendapatkan butiran tentang mendapatkan klien Kubernetes.
Tentukan ruang nama sasaran: Tentukan ruang nama di mana pod yang dikehendaki tinggal, serupa dengan -n
Dapatkan semula senarai pod: Gunakan kaedah CoreV1() klien untuk antara muka dengan sumber Pod dalam ruang nama yang ditentukan. Gunakan kaedah List() untuk mendapatkan objek PodList yang mengandungi semua pod dalam ruang nama.
Ekstrak maklumat pod: Lelaran melalui PodList, mengakses metadata dan maklumat status setiap pod. Untuk mendapatkan maklumat terperinci, rujuk takrifan struktur Pod dan PodStatus dalam dokumentasi API Kubernetes.
Ekstrak butiran tambahan: Jika perlu, kira atribut seperti umur pod, bekas dimulakan semula dan status sedia menggunakan cap masa penciptaan pod dan status kontena.
Berikut ialah coretan kod contoh yang menunjukkan cara mendapatkan nama pod, status, status sedia, mula semula dan umur:
<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>
Proses ini akan menyediakan data yang sama yang kubectl mendapat pod -n
Atas ialah kandungan terperinci Bagaimanakah saya boleh mendapatkan maklumat pod terperinci menggunakan Kubernetes go-client, sama seperti arahan `kubectl get pods`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!