"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `kubectl get pods` 명령과 유사하게 Kubernetes go-client를 사용하여 자세한 포드 정보를 검색하려면 어떻게 해야 합니까?

`kubectl get pods` 명령과 유사하게 Kubernetes go-client를 사용하여 자세한 포드 정보를 검색하려면 어떻게 해야 합니까?

2024-11-08에 게시됨
검색:373

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

Kubernetes go-client: kubectl get pods와 마찬가지로 포드 세부 정보 검색

client-go 라이브러리를 사용하여 Kubernetes 클러스터에서 포드 세부 정보를 얻으려면 , kubectl get pods -n 명령과 유사하게 다음 단계를 따르세요.

Kubernetes 클라이언트 만들기: Kubernetes 클라이언트를 얻는 방법에 대한 자세한 내용은 client-go 설명서를 참조하세요.

대상 네임스페이스 지정: kubectl의 -n 옵션과 유사하게 원하는 Pod가 있는 네임스페이스를 결정합니다.

Pod 목록 검색: 클라이언트의 CoreV1() 메서드를 활용하여 지정된 네임스페이스 내의 Pod 리소스입니다. List() 메서드를 사용하여 네임스페이스의 모든 Pod를 포함하는 PodList 개체를 가져옵니다.

Pod 정보 추출: PodList를 반복하여 각 Pod의 메타데이터 및 상태 정보에 액세스합니다. 자세한 내용은 Kubernetes API 문서의 Pod 및 PodStatus 구조체 정의를 참조하세요.

추가 세부정보 추출: 필요한 경우 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 get pods -n 가 제공하는 것과 동일한 데이터를 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3