Kubernetes go-client: kubectl get pods와 마찬가지로 포드 세부 정보 검색
client-go 라이브러리를 사용하여 Kubernetes 클러스터에서 포드 세부 정보를 얻으려면 , kubectl get pods -n
Kubernetes 클라이언트 만들기: Kubernetes 클라이언트를 얻는 방법에 대한 자세한 내용은 client-go 설명서를 참조하세요.
대상 네임스페이스 지정: kubectl의 -n
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