Kubernetes go-client: kubectl get pods와 같은 포드 세부 정보 검색
client-go 라이브러리를 사용하여 Kubernetes 클러스터에서 포드 세부 정보를 얻으려면 , kubectl get pods -n
Kubernetes 클라이언트 생성: Kubernetes 클라이언트 획득에 대한 자세한 내용은 client-go 설명서를 참조하세요.
대상 네임스페이스 지정: 원하는 포드가 있는 네임스페이스 결정 -n
Pod 목록 검색: 클라이언트의 CoreV1() 메서드를 활용하여 지정된 네임스페이스 내의 Pods 리소스와 인터페이스합니다. List() 메서드를 사용하여 네임스페이스의 모든 Pod를 포함하는 PodList 개체를 가져옵니다.
Pod 정보 추출: PodList를 반복하여 각 Pod의 메타데이터 및 상태 정보에 액세스합니다. 자세한 내용은 Kubernetes API 문서의 Pod 및 PodStatus 구조체 정의를 참조하세요.
추가 세부정보 추출: 필요한 경우 Pod 생성 타임스탬프를 사용하여 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{}) 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>
이 프로세스는 kubectl이 pods -n
위 내용은 `kubectl get pods` 명령과 유사하게 Kubernetes go-client를 사용하여 자세한 포드 정보를 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!