Kubernetes Go-Client: Pod-Details abrufen Wie kubectl Pods abrufen
Um Pod-Details in einem Kubernetes-Cluster mithilfe der Client-Go-Bibliothek abzurufen , ähnlich dem 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 residieren, ähnlich wie -n
Pod-Liste abrufen: Verwenden Sie die CoreV1()-Methode des Clients, um eine Schnittstelle mit der Pods-Ressource innerhalb des angegebenen Namespace herzustellen. 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, die Neustarts und das Alter erhält:
<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>
Dieser Prozess stellt die bereit Dieselben Daten, die kubectl erhält pods -n
Das obige ist der detaillierte Inhalt vonWie kann ich mit dem Kubernetes-Go-Client detaillierte Pod-Informationen abrufen, ähnlich dem Befehl „kubectl get pods'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!