"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استرداد معلومات pod التفصيلية باستخدام عميل Kubernetes go، المشابه للأمر `kubectl get pods`؟

كيف يمكنني استرداد معلومات pod التفصيلية باستخدام عميل Kubernetes go، المشابه للأمر `kubectl get pods`؟

تم النشر بتاريخ 2024-11-08
تصفح:733

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

عميل Kubernetes go: استرداد تفاصيل Pod مثل kubectl get pods

للحصول على تفاصيل pod في مجموعة Kubernetes باستخدام مكتبة Client-go ، على غرار الأمر kubectl get pods -n ، اتبع الخطوات التالية:

إنشاء ملف عميل Kubernetes: ارجع إلى وثائق Client-go للحصول على تفاصيل حول الحصول على عميل Kubernetes.

حدد مساحة الاسم المستهدفة: حدد مساحة الاسم حيث توجد البودات المطلوبة، على غرار خيار -n في kubectl .

استرداد قائمة البودات: استخدم طريقة CoreV1() الخاصة بالعميل للتفاعل مع مورد البودات ضمن مساحة الاسم المحددة. استخدم طريقة List() للحصول على كائن PodList الذي يحتوي على جميع البودات في مساحة الاسم.

استخراج معلومات البود: قم بالتكرار من خلال PodList، للوصول إلى البيانات التعريفية ومعلومات الحالة لكل pod. للحصول على معلومات تفصيلية، راجع تعريفات بنية Pod وPodStatus في وثائق Kubernetes API.

استخرج تفاصيل إضافية: إذا لزم الأمر، احسب السمات مثل عمر pod، وإعادة تشغيل الحاوية، وحالة الاستعداد باستخدام الطابع الزمني لإنشاء 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})
}

ستوفر هذه العملية نفس البيانات التي يحصل عليها kubectl على pods -n .

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3