>  기사  >  백엔드 개발  >  Go 클라이언트를 사용하여 Kubernetes에서 포드 세부 정보를 나열하는 방법은 무엇입니까?

Go 클라이언트를 사용하여 Kubernetes에서 포드 세부 정보를 나열하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 19:04:02649검색

How to List Pod Details in Kubernetes using the Go Client?

Kubernetes Go-Client를 사용하여 Pod 세부 정보 나열

Kubernetes client-go 라이브러리를 사용하여 Pod 세부 정보에 액세스하면 다음과 유사한 정보를 프로그래밍 방식으로 검색할 수 있습니다. kubectl get pods 명령을 사용합니다.

특정 네임스페이스 내 Pod의 이름, 상태, 준비 상태, 다시 시작 및 수명과 같은 특정 세부 정보를 얻으려면 다음 단계를 따르세요.

  1. 필요한 패키지 가져오기:
<code class="go">import (
    "context"
    "fmt"
    "time"

    corev1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)</code>
  1. 원하는 네임스페이스의 Pod를 나열하는 함수 만들기:
<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{})
    if err != nil {
        return nil, err
    }
    return podList, nil
}</code>
  1. 검색된 패키지를 반복합니다. 필요한 데이터를 추출하기 위한 포드:
<code class="go">// List pod details similar to `kubectl get pods -n <my namespace>`
for _, pod := range podList.Items {
    podCreationTime := pod.GetCreationTimestamp()
    age := time.Since(podCreationTime.Time).Round(time.Second)
    podStatus := pod.Status
    containerRestarts := int32(0)
    containerReady := 0
    totalContainers := 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>

위 내용은 Go 클라이언트를 사용하여 Kubernetes에서 포드 세부 정보를 나열하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.