عميل Kubernetes go: استرداد تفاصيل Pod مثل kubectl get pods
للحصول على تفاصيل pod في مجموعة Kubernetes باستخدام مكتبة Client-go ، على غرار الأمر kubectl get pods -n
إنشاء ملف عميل Kubernetes: ارجع إلى وثائق Client-go للحصول على تفاصيل حول الحصول على عميل Kubernetes.
حدد مساحة الاسم المستهدفة: حدد مساحة الاسم حيث توجد البودات المطلوبة، على غرار خيار -n
استرداد قائمة البودات: استخدم طريقة 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