Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mendapatkan maklumat pod terperinci menggunakan Kubernetes go-client, sama seperti arahan `kubectl get pods`?

Bagaimanakah saya boleh mendapatkan maklumat pod terperinci menggunakan Kubernetes go-client, sama seperti arahan `kubectl get pods`?

Susan Sarandon
Susan Sarandonasal
2024-10-24 18:55:291026semak imbas

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

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 arahan, ikut langkah berikut:

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 pilihan dalam kubectl.

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn