Kubernetes go-client: Pod-Details abrufen Wie kubectl get pods
Um Pod-Details in einem Kubernetes-Cluster mithilfe der Client-go-Bibliothek abzurufen Befolgen Sie diese Anweisungen, ähnlich wie beim Befehl kubectl get pods -n
Erstellen Sie einen Kubernetes-Client: Einzelheiten zum Erhalten eines Kubernetes-Clients finden Sie in der Client-Go-Dokumentation.
Geben Sie den Ziel-Namespace an: Bestimmen Sie den Namespace, in dem sich die gewünschten Pods befinden, ähnlich wie die Option -n
Rufen Sie die Pod-Liste ab: Nutzen Sie die des Clients CoreV1()-Methode zur Schnittstelle mit der Pods-Ressource innerhalb des angegebenen Namespace. Verwenden Sie die List()-Methode, um ein PodList-Objekt zu erhalten, das alle Pods im Namespace enthält.
Pod-Informationen extrahieren: Durchlaufen Sie die PodList und greifen Sie auf die Metadaten und Statusinformationen jedes Pods zu. Ausführliche Informationen finden Sie in den Strukturdefinitionen „Pod“ und „PodStatus“ in der Kubernetes-API-Dokumentation.
Extrahieren Sie zusätzliche Details: Berechnen Sie bei Bedarf Attribute wie Pod-Alter, Container-Neustarts und Bereitschaftsstatus mithilfe des Erstellungszeitstempels und des Pods Containerstatus.
Hier ist ein Beispielcode-Snippet, das zeigt, wie man den Pod-Namen, den Status, den Bereitschaftsstatus, Neustarts usw. erhält age:
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})
}
Dieser Prozess stellt die gleichen Daten bereit, die kubectl get pods -n
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3