ホームページ  >  記事  >  バックエンド開発  >  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 を使用してポッドの詳細をリストする

Kubernetes client-go ライブラリを使用してポッドの詳細にアクセスすると、次のような情報をプログラムで取得できます。 kubectl get pods コマンドを使用します。

指定された名前空間内のポッドの名前、ステータス、準備完了状態、再起動、経過時間などの特定の詳細を取得するには、次の手順に従います。

  1. 必要なパッケージをインポートします:
<code class="go">import (
    "context"
    "fmt"
    "time"

    corev1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)</code>
  1. 目的の名前空間内のポッドをリストする関数を作成します:
<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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。