Kubernetes Go-client を使用してポッドの詳細を取得する
Kubernetes クラスター内で作業する場合、ポッドの詳細にアクセスする手段を用意することが重要です効率的に。 Kubernetes client-go ライブラリは、クラスターと対話するためのインターフェイスを提供し、開発者が幅広い情報を取得できるようにします。
一般的なタスクの 1 つは、kubectl コマンドを使用する場合と同様に、特定の名前空間内のすべてのポッドを一覧表示することです。 「kubectl get pods -n
これを実現するには、client-go ライブラリを利用して Kubernetes API と対話します。次のコード スニペットは、指定された名前空間内のポッドをリストする方法を示しています。
<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>
ポッドのリストを取得したら、各ポッドとそのコンテナを反復処理して、必要な詳細を収集します。
<code class="go">for _, pod := range podList.Items { podCreationTime := pod.GetCreationTimestamp() age := time.Since(podCreationTime.Time).Round(time.Second) podStatus := pod.Status var containerRestarts int32 var containerReady int var totalContainers int for container := range pod.Spec.Containers { containerRestarts += podStatus.ContainerStatuses[container].RestartCount if podStatus.ContainerStatuses[container].Ready { containerReady++ } totalContainers++ } 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>
結果の「data」変数には、必要なポッドの詳細 (名前、準備状況、ステータス、再起動回数、経過時間) を表す文字列配列の配列が含まれます。このデータは、必要に応じて簡単に印刷または操作できます。
以上がGo クライアント ライブラリを使用して Kubernetes クラスターからポッドの詳細を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。